There is a lot of talk about “The Blockchain” and its many applications, which promise (or threaten, according to opinion) to revolutionize society at least as deeply as the Internet itself. At the same time, this concept is presented in a very vague way. Even if it is said to be “distributed”, which is, moreover, unsuitable as we will see, it often lacks a clear expression of the implications of its implementation on an open peer-to-peer network. As a result, talking about “blockchain” is misleading and misses the point.
The idea was born in 2008 with Bitcoin, which is currently the emblematic achievement, but also the basis of many variants and extensions. We will therefore use this example to analyze its components and implications, while trying to draw valuable lessons for other systems where the blockchain principle is used for non-monetary transactions.
In accordance with custom, I use the term “Bitcoin” with uppercase and sans article to designate the payment system, and “bitcoin” for the unit of account used by this system.
THE BLOCKCHAIN: HOW DOES IT WORK?
Let us start with the definitions of Wikipedia, which in this field is more up-to-date than other general-interest dictionaries, especially in its English version: “A blockchain is a distributed database that maintains a growing-growing list of data records hardened against tampering and revision. “And further on:” The blockchain consists of blocks that hold timestamped batches of valid transactions. Each block includes the hash of the block, linking the blocks together. The linked blocks form a chain, with each additional block
Recall that a checksum (hash or fingerprint) is a number, calculated from the contents of the block, such that it is impossible to reconstruct the block from its checksum (“one-way” function) and that any modification of the block modifies the checksum in a totally unpredictable way. In the case of Bitcoin, it is a 256-bit number, whose number of distinct values is expressed by a number of 78 digits. Two blocks with different contents always have different checksums. The checksum of a block can therefore serve as a unique identifier.
A block is the grouping of a certain number of data records, the form and meaning of which depend on the application. In the case of Bitcoin and other payment systems, these postings are monetary transactions, and each block typically contains between 1000 and 3000. The block is completed by a header which, in addition to its checksum, contains among other things the identifier of the previous block, so its own checksum. From any block, one can thus go up to the initial block of the chain by checking at each step its validity.
The checksum of a block is systematically checked at each access, in order to detect any modification made to its content after its construction. If the author of the change also modified the block header by including his new checksum, he modified his identifier at the same time. The blocks that referred to it have no predecessor and the block chain is broken. To introduce in the chain a modified block would thus force to modify the headers of all the following blocks, an operation all the more expensive as the block is older, and that the calculation of the checksums is itself made more consumer resources by imposing very severe constraints.
This file structure is well-suited for the secure registration of continuously produced and legally valid critical scripts, such as payment transactions, but also many other types of postings such as title deeds, patents, diplomas , etc …
Building a Blockchain
The construction of a chain of blocks is done in a cycle of two stages repeated indefinitely. The first, the construction of a block, is equivalent to postponing the new scripts that arrive on a page, then sealing the page definitively by constructing its header. The second is to add this new page to the registry irreversibly.
These operations can very well be performed by one and the same computer. The true originality of Bitcoin and the systems that derive from it, which give them their unique qualities but also their complexity, is to be implanted on an open peer-to-peer network. Open because anyone who owns a computer can join the network at any time without having to ask anyone for permission. Peer-to-peer because everyone can choose freely which functions they want to take on, including the most central ones. In such a network, there is no central control point or even privileged nodes.
This architecture is based on communication protocols that allow the machines located at the nodes of the network to exchange information, in particular to communicate writings and blocks. It is accompanied by a separation of roles that each user can choose to exercise or not:
- create new transactions, by means of “wallets” (purses or better keychains since they do not contain the bitcoins, but only the computer keys that give access to the transactions recorded in the blockchain),
- verify and relay transactions across the network, but without holding a local copy of the blockchain (the “simple nodes”),
- build the blocks (the “minors”),
- maintain a local copy of the blockchain (the “complete nodes”),
- access transactions without being able to modify them (observers)
All software used in the system is freely available, and each user can download, install and run on his computer the software of his choice, without having to seek authorization. There is a preferred distribution platform (Github) and software recommended by different instances, but there is nothing to prevent anyone from proposing new software or using a different platform.
These principles of openness and decentralization make it impossible to know the number of actors in each role. The number of holders of bitcoins, and therefore keyrings, is estimated at several millions, of which some hundreds of thousands are actually active. The nodes of the network count in tens of thousands, the only number measured continuously by specialized sites being that of the nodes “listening” (listening nodes), ie who are currently able to receive and retransmit new transactions; this number oscillates between 5000 and 7000.
Miners can group themselves into cooperatives (pools) to pool computing resources and earnings while sharing a single complete node, which makes the pool appear as a single minor. A dozen of these cooperatives, bringing together an undetermined number of minors, provides 95% of the blocks admitted in the chain. For complete nodes and thus the number of copies of the chain of blocks, which may not all be identical as we will see, estimates range from 5,000 to 30,000, located in 85 countries on all continents.