edgecase
Author: StJohn Piano
Published: 2019-11-14
Datafeed Article 122
This article has been digitally signed by Edgecase Datafeed.
This article has been digitally signed by its author.
4380 words - 699 lines - 18 pages




After some years of meditation, practice, and research, I have decided that the most effective way for people to organise themselves to deal with cryptocurrency is the guild.



The rest of this article explains the details of this decision, some of the thinking behind it, and what it implies for the future.



The term "Bitcoin" as used in this article means "Bitcoin and/or whatever successor cryptocurrency eventually displaces it, whether this decade or next century, as well as any other cryptocurrency that is of interest". [0]



Here are the most immediate problems faced by someone who has heard of Bitcoin:

- What is it?
- How do I get it?
- How can I store it?
- How long will it last?

These problems are technical. The last one is also partially a game-theory problem.



Q: Why bother to even try to solve these problems?

A: Bitcoin is a fundamental shift in the way in which money is structured. It takes advantage of several key aspects of cryptography and computers [1], in ways which make it better-adapted to the modern environment (i.e. computer networks) than existing national currencies (which developed from paper-based representations of precious metals) [2]. These existing currencies are now under competitive pressure from Bitcoin [3], and they will almost certainly adapt by incorporating aspects of the underlying blockchain technology (or they will not adapt, and be left behind). This shift is the final stage of the migration of money into computer systems. Learning how to manipulate and store Bitcoin is knowledge that is likely to be very useful in the future. [4]



Once someone has tackled the initial technical problems, they then encounter a couple new problems:

- How can I buy and sell Bitcoin safely?
- How do I protect my holdings from other people?

These are social problems. They cannot be solved by technical means alone, although technology can certainly help.

How many people do you really trust? How many of your acquaintances might try to take your Bitcoin from you, if they knew roughly where you stored it? What about friends of your acquaintances?

What about your neighbours? How many of them do you actually know? Could you trust them, if they somehow found out that you were involved in Bitcoin? What about all the people that they know and talk to? Are you certain that eventually someone dangerous (or perhaps just desperate) won't come knocking?



A further set of problems awaits the thoughtful holder of Bitcoin:

- How can I be sure that the software I am using is written carefully, competently, and without malice?
- If I need the software to be changed in some way, can I hire a trustworthy person to do this, or must I write and test the change myself?
- How can this software be stored securely? What if someone gains access to the software archive and makes a malicious change?
- What about the hardware? How can I trust that it will work as promised? What if it contains hidden code that will try to redirect my bitcoin to someone else's address?

These problems ultimately boil down to "What sort of trustworthy supply chain can be constructed for hardware and software?". [5]



This overall need for a secure supply chain is unavoidable if you wish to hold any reasonably large amount of cryptocurrency. A malicious piece of software can steal it from you.

Major existing currencies are essentially "notes from the government". The government in question can reverse transactions and freeze accounts. People usually store most of their money in banks and don't often store or carry large amounts of cash personally. If a stranger steals from your account or scams you, the government can often eventually find them and get your money back.

This is not the case with Bitcoin. If you hold bitcoin yourself, on paper or on a computer, it is in your possession directly, like cash or gold. It can also be stolen directly, by force or by subterfuge, and is impossible (or at least extraordinarily difficult) to track once stolen.

Because it's so hard to track down a Bitcoin thief and/or reverse the theft, there is now a strong incentive to release malicious software that will try to steal your bitcoin. Even if you are not interested in Bitcoin yourself, and are not trying to use the software for Bitcoin operations, it may still contain ransomware that will take control of your computer until you pay a fee in Bitcoin.



One way of organising a softare supply chain, often proposed by programmers, is: "Well, if we all read each other's software, and submit patches to fix problems and catch malicious code, the malicious or incompetent patches will be outnumbered by the trustworthy and competent patches, and therefore the system will be somewhat reliable and somewhat trustworthy. It will also work on most hardware, or least whatever hardware the programmers happened to be using."



Unfortunately, The Value of Software is negative.

Quick summary:
- Every line of code is a liability.
- Software can absorb arbitrary amounts of hard work but has no tradable value.
- The future time of a skilled programmer has some tradable value. The reputation of a programmer is valuable inasmuch as it allows him to sell his future time.
- The most important aspect of a piece of software is the problem that it solves, not the code.
- Software is brittle. Small changes in the environment around the software can break it. As more patches are made, the software becomes more complex and thereby more expensive to maintain. Eventually, it will become cheaper to write a replacement (that better handles the alterations in the problem domain) rather than continue to patch the old software.
- Software quality is expensive and only worth considering if the return on investment is large enough to justify the cost.



There are some additional consequences:

- It's easiest to write software when you are solving a problem, and the problem is fully loaded into your head.
- It's hard to reload the problem into your head by reading the code that solved it.
- Software is more expensive to read than to write. It is therefore more expensive to verify someone else's work than to do it yourself. [6]
- The most transferable and long-lasting result of a software project is a good description of the problem and how to approach it.



The net result is that a software tool usually starts out useful and small, written by one person who cares about the problem and is competent. As it becomes more widely used, more and more patches are written by people who are not so careful and who are often less competent. Parts of the resulting software system begin to desynchronise and work against each other. Eventually the complexity and bugginess of the software system is so great than someone who cares about the problem, and is competent, gets so frustrated that he begins to write a new software tool, that will be smaller and better suited to dealing with the problem he is facing...



I therefore conclude that more patches, by more people, is not the best path forward into the future.

I further conclude that:
- An article that maps out the problem domain is more valuable than the code.
- An accompanying recipe for the use of the code is more valuable than the code.
- A new version of the code, written from scratch by a reputable programmer, that is smaller than the original code, and does not even include any lines from the original code, is more valuable than the original code.



A fig for patches! I do not have a spare eternity to read them. Neither does anyone else!

Give me articles, written by people of skill and good reputation, with recipes and descriptions as well as the code! In which, of course, old code may be studied carefully for any useful insights, but with the goal of producing new code that is many times smaller, along with descriptions of the problem domain and the algorithm / approach. [7]



So, let's summarise: When dealing with cryptocurrency, there is a strong need for skilled work, where the work is more expensive to verify than to perform, and where the consequences of incompetent or malicious work can be catastrophic. Additionally, there is a strong need to protect it and the tools used to manipulate it. Therefore it is necessary to work with trustworthy people and ideally live near them for mutual protection.

Historically, this situation gave rise to guilds.



Excerpts from:
www.britannica.com/topic/guild-trade-association

Guild, also spelled gild, an association of craftsmen or merchants formed for mutual aid and protection and for the furtherance of their professional interests. Guilds flourished in Europe between the 11th and 16th centuries and formed an important part of the economic and social fabric in that era.

[...]

The medieval guilds were generally one of two types: merchant guilds or craft guilds. Merchant guilds were associations of all or most of the merchants in a particular town or city; these men might be local or long-distance traders, wholesale or retail sellers, and might deal in various categories of goods. Craft guilds, on the other hand, were occupational associations that usually comprised all the artisans and craftsmen in a particular branch of industry or commerce. There were, for instance, guilds of weavers, dyers, and fullers in the wool trade and of masons and architects in the building trade; and there were guilds of painters, metalsmiths, blacksmiths, bakers, butchers, leatherworkers, soapmakers, and so on.

Guilds performed a variety of important functions in the local economy. They established a monopoly of trade in their locality or within a particular branch of industry or commerce; they set and maintained standards for the quality of goods and the integrity of trading practices in that industry; they worked to maintain stable prices for their goods and commodities; and they sought to control town or city governments in order to further the interests of the guild members and achieve their economic objectives.

[...]

By the 13th century, merchant guilds in western Europe comprised the wealthiest and most influential citizens in many towns and cities, and, as many urban localities became self-governing in the 12th and 13th centuries, the guilds came to dominate their town councils. The guilds were thus able to pass legislative measures regulating all economic activity in many towns.

Craft guilds arose soon after merchant guilds did. They originated in expanding towns in which an extensive division of labour was emerging. The body of craftsmen in a town usually consisted of a number of family workshops in the same neighbourhood, with the masters or owners of such workshops related to each other by kinship, acquaintance, or the sharing of apprentices. These craftsmen tended to band together in order to regulate competition among themselves, thus promoting their own and the town's prosperity in general. The craftsmen would agree on some basic rules governing their trade, setting quality standards, and so on. In this way the first craft guilds were formed. Craft and merchant guilds would often control different areas of a particular industry. The merchant guild in a wool-processing town or city, for instance, would control the purchase of raw wool and the production and sale of the processed fibre, while the craft guilds would control the actual carding, dyeing, and weaving of the wool.

[...]

The craft guild policed its own members' professional practices, and guild courts and officials investigated complaints of poor workmanship, unfair competition, and other problems, levying fines on those found in violation of the guild's rules and standards.

Besides their economic and educational functions, guilds also served other purposes. A guild was often associated with a patron saint, and a local guild would maintain a chapel in the parish church to be used by its members. Guilds performed charitable work, not only among the poor and indigent among their own members but among the community at large. Guilds also built and maintained residences, called guildhalls, in which the membership would hold banquets and conduct official business.

[...]

The decline of the medieval craft guilds was a slow and tortuous process during the Renaissance and Reformation periods. New guilds were still being founded throughout Europe in the 17th century, but the 16th century had already marked a turning point in the fortunes of most guilds. Apart from the disruptive effects of the Reformation and the growth of the power of national governments, the craft guilds were seriously weakened by the appearance of new markets and greater capital resources. Merchants were becoming capitalistic entrepreneurs and forming companies, thus making the merchant guilds less important. Craft guilds broke down as the pace of technological innovation spread and new opportunities for trade disrupted their hold over a particular industry. Masters tended to become foremen or entrepreneurs, while journeymen and apprentices became labourers paid their wages by the day. The emergence of regulated companies and other associations of wealthy merchant-capitalists thus left the guilds increasingly isolated from the main currents of economic power.

[...]

Craft guilds continued to flourish in India, China, Japan, and the Islamic world into the 20th century, but they too proved unable to withstand the impact of modern Western industrial organization.




Some of the conditions that caused the guild system to decline in importance do not hold in the case of cryptocurrency.

"modern Western industrial organization" - Cryptocurrency software does not benefit at all from being produced on an industrial scale. It rather tends towards the opposite, where one or a few skilled people can produce something better than a thousand unskilled people, in the same amount of time.

"Craft guilds broke down as the pace of technological innovation spread and new opportunities for trade disrupted their hold over a particular industry." - If software offered by someone-on-the-internet is ever more likely to try to steal your money, you may be more interested in dealing with a guild with an established reputation, instead of with a cheaper alternative.

"Merchants were becoming capitalistic entrepreneurs and forming companies, thus making the merchant guilds less important." - The average lifetime of a company has decreased drastically in recent decades. Even important companies tend to live for much less than a human lifetime. This matters because new companies in the cryptocurrency space are untrustworthy until proven otherwise. A guild has a good chance of lasting longer than any company, simply because each member is likely to outlive the company for which he currently works. A guild is therefore better placed than a company to preserve good reputation (of itself and of its members) over a long time period.



I think that the future will probably involve new companies that deal with cryptocurrency drawing their workers from a trusted guild (or guilds) [8], growing and running for a while, for so long as it is profitable for them to do so, and then being closed down at the end of their useful lives. The guild members then move on to other companies and the cycle continues.

The scarce item today (besides money / Bitcoin) is trustworthy skilled time, not software (infinitely copiable) or hardware (which is cheap by historical standards and loses value rapidly), and this approach makes the most effective use of time.

This does not only concern programmers. Programmers are necessary but not sufficient for a company that deals with cryptocurrency. A lot of valuable and important roles involve no software development: financial analysis, security, bookkeeping, legal research, building management, corporate management.



So: Edgecase will be restructured from a company into a guild.



What services can Edgecase Guild offer? Let's start with the most immediately achievable services. If these are useful and valuable by themselves, expansion is possible, and more complex and interesting services can be offered in the future. These basic services should take advantage of the utility of Edgecase Datafeed, a publishing system in which new articles are digitally signed and timestamped on the Bitcoin blockchain, making them immutable. Edgecase Datafeed is essentially a very slow [9] permissioned blockchain dedicated to publishing.



Services that Edgecase Guild can provide for its members:


1) A title. Example:

StJohn Piano
Guild Member - Edgecase Guild


2) The publication of a portfolio of articles on Edgecase Datafeed that displays its author's skill and interests. Articles are unalterable once published, making this portfolio a reliable history of the author, and thereby a reliable source of good reputation.

These articles can be linked on your CV, like so:

Publications:

Hello World on a server (DigitalOcean, Nginx, Gunicorn, Python) [2019-09-29, 128 pages]
edgecase.net/articles/118

Blockchain Fundamentals [2019-04-21, 4 pages]
edgecase.net/articles/104

Edgecase Markup Language (EML): Latin-1 [2019-03-26, 15 pages]
edgecase.net/articles/92


Any code in the articles is also unalterable, making it a useful and trustworthy backup system. Any linked code files are also unalterable, since their hashes are included in the article.


3) A character reference, which can be supplied to a prospective employer on demand.


4) The publication of a public key identity document. You can use this public key to sign your articles. It is the ultimate guarantee of identity on the internet.

Example:
edgecase.net/articles/public_key_identity_document_stjohn_piano


5) Notarisation of contracts and other important documents. These can be published as articles, ideally with an accompanying digital signature from each party.




I am currently 30 years old, so this guild has a reasonable chance of achieving a 50-year lifetime (ideally longer, if I can find a capable successor).










[start of footnotes]


[0]
Bitcoin is decentralised. Most of the other notable cryptocurrencies are centralised, to one degree or another, and subject to many of the same problems as fiat currencies (e.g. the freezing of accounts, the ability to print infinite money, the reversing of transactions), but in a world that has used the Zimbabwean dollar, the Venezuelan bolivar, and the Uzbekistani so'm, they are certainly not at the bottom of the list. This is admittedly a low bar, and these other cryptocurrencies only just clear it. I should note that there are also various items that are called cryptocurrencies but are really just old scams in new clothing.

[return to main text]

[1]
See Blockchain Fundamentals for some more details.


Also see these relevant excerpts:


From Generating a standard Bitcoin address:

1) A Bitcoin private key (a sequence of 256 bits - the value of a bit can be either 0 or 1) is related mathematically to a corresponding Bitcoin public address. The address can be shown or given to anyone else. Bitcoin is stored on a public distributed ledger (a database that associates Bitcoin amounts with public addresses). The private key must be kept secret, as it allows anyone who knows it to spend the bitcoin associated with it. Spending bitcoin is accomplished via the creation and broadcasting of transactions. Transactions can be thought of as digitally signed patches that alter the state of the Bitcoin public ledger.



From How I bought and stored some bitcoin:

A transaction is a signed note that specifies an amount of bitcoin to be sent from a sending address to a receiving address. Transactions are digitally signed with the bitcoin private key, which a) proves that the transaction is authorised by the person who holds the private key and b) prevents third parties from altering them and rebroadcasting a changed version. It is possible to create transactions that send from multiple sending addresses to multiple receiving addresses (this is how you can send only a portion of the bitcoin associated with a particular address to someone else's address - the portion that you keep is also sent in the transaction, but it goes to the original address or to another address that you control).



From Reading and verifying a standard raw bitcoin transaction:

Ken Shirriff wrote that "A transaction is the basic operation in the Bitcoin system.". I think it might actually be the basic conceptual item in the Bitcoin system. The definitions/designs of all the other items could be considered as flowing from the idea of a transaction.

Examples:
- A bitcoin address can be thought of as "the condition that must be satisfied by a transaction input scriptSig".
- Blocks are collections of transactions. They lay down a transaction history that is very difficult to alter.
- New bitcoin is generated by using a special case of a transaction (a "coinbase" transaction in a new block).

This is different from gold as a basis for a currency. The physical item "gold" is the basic conceptual item in a gold-based currency system. The idea of a "transaction" derives from the existence of the gold e.g. "what if I give you gold in exchange for your grain?". The amount of money that you have is equivalent to the amount of gold that you have. However, in the Bitcoin system, the amount of money you have is equivalent to: the sum of the values of the currently-unspent transaction outputs associated with addresses that you control. Here, the existence of the monetary item "bitcoin" derives from the existence of previous transactions.

The universe and its physical behaviour enforces the relative scarcity of gold. The mining competition in the Bitcoin system enforces the relative scarcity of coinbase transactions that create new bitcoin.

Any miner could of course devise and follow a new ruleset, e.g. one that doubled the amount of new bitcoin in a coinbase transaction, but other miners would continue mining on the pre-existing chain, so there would be a "fork" - two transaction history chains that diverge from a particular block on the original chain. Each of these transaction history chains ("blockchains") would acquire a market price. Market participants would prefer coins on one chain to the coins on the other. The chain that inflated more (created more coins) would probably be worth less over time (if supply increases, demand/supply ratio i.e. price decreases). This means that although a miner could fork and create a chain in which he acquired more currency units per block created, each unit would be worth less, perhaps much less, thus over time lowering the return on his investment in mining equipment. The fear of loss is what drives the miners to keep using the same ruleset and incidentally to preserve a single transaction history chain with relatively scarce currency unit creation.



Also from Reading and verifying a standard raw bitcoin transaction:

The inputs for a new transaction are a set of as-yet-unspent outputs from previous transactions. Inputs transfer value out of a previous address and outputs transfer value into a new address. (It would perhaps be more accurate to say that value is "associated with" an address, rather than that the value is "contained within" it.) A transaction is a collection of inputs and outputs, formatted into a single item.

Blocks are collections of transactions, formatted into a single item.

The bitcoin amount associated with an address does not specifically exist anywhere on the blockchain. It is an implicit value - it is calculated as the sum of the values of the currently-unspent outputs associated with an address (i.e. sent to that address by previous transactions). When some of these unspent outputs are used in a new transaction, value is transferred out of the address.

A bitcoin address is not just a global ID, like an account number in a bank. A standard* address is a value that encodes a hash of a bitcoin public key. The network nodes, following the bitcoin ruleset, verify that new transactions that spend bitcoin from an address are signed by a public key that hashes to the value encoded in that address. The nodes reject transactions that do not satisfy this cryptographic condition.

* My working definition of a standard address is: single-signature Pay-To-Public-Key-Hash (P2PKH).

The cryptographic proof is contained in each input (a.k.a. "as-yet-unspent-output") and is specific to that input. For standard* inputs, this proof consists of:
- A public key that hashes to the value encoded in the address that holds the unspent-output.
- A signature, made by the private key associated with the public key, of the entire transaction (albeit an altered form of the transaction).

* My working definition of a standard input is: an input that spends an unspent output from a standard single-signature Pay-To-Public-Key-Hash (P2PKH) address.


[return to main text]

[2]

[return to main text]

[3]
Quick summary of Bitcoin's utility:
- It is divisible, fungible, portable, and scarce.
- It is durable, as long as the mining network continues to function in some form and with some regularity.
- It does not take up much space (private keys can be written in a notebook).
- It can be transferred to anywhere in the world in an hour.
- It does not permit chargebacks.
- Its scarcity makes it an attractive investment.

Other major currencies do not have this featureset.

[return to main text]

[4]
Examples of previous fundamental shifts: The stirrup, gunpowder, printing. Each of these previous shifts caused rather dramatic changes in human economic activity and social organisation.

[return to main text]

[5]
In practice, a supply chain for hardware will involve signed attestations of custody and test results for components as they travel through the supply chain. Keeping track of these attestations is essentially the same problem as keeping track of software development.

[return to main text]

[6]
Spot checks of the work for basic quality control are feasible, but these might not catch malicious code, which could be cleverly hidden or disguised.

[return to main text]

[7]
Suites of functional tests (both as code and as test case descriptions) will become significantly more important, if code is published within articles rather than within patches. Also, I don't expect patching systems to disappear - they are a very useful development tool.

[return to main text]

[8]
Certain existing organisations have already been retrofitted to serve as semi-guilds to handle the existing need (less painfully urgent than now, but still present) for trusted, competent programmers and software project managers. The computer science departments of certain universities, some business schools, the social networks of groups of ex-employees of particularly notable companies, etc.

[return to main text]

[9]
9 "blocks" (checkpoint articles) so far during ~2.5 years.

[return to main text]

[end of footnotes]