Is Bitcoin the new internet paradigm ?


The Internet was built on the paradigm that everyone is a trusted user. However it is not the case in practice and if we want to be able to make transactions trough the network on a daily basis, we need to be able to trust the network and the content of the transactions that goes trough it, in other words we need to solve both the Byzantine Generals Problem and the double-spending problem.

This is why since the 90's big companies such as Airbnb, Amazon or Uber emerged and play the role of a trusted third party in order to allow us to perform those transactions on the internet despite our inability to resolve those two problems trough a computer algorithm at the same time. In this sense, Bitcoin truly appears like one of the biggest achievement since the invention of the internet and a source of tremendous excitement for the years to come but before discussing all that, let's see how Satoshi Nakamoto was able to pull it off. 

 

1 Bitcoin and the Byzantine General Problem

 

First, let's approach how Bitcoin is solving the Byzantine Generals Problem (BGP). As you may already know, the BGP essentially describes a problem in consensus-making in a system where communication channels cannot be trusted.

 

(Quick recap of the Byzantines Generals Problem)

 

Yet, if we consider that computers are the generals and their digital communication system links the messengers, we can see that it cannot be solved simply through the use of cryptographic digital signatures. Indeed, failures such as incorrect voltages could still propragate through the encryption process leading to situations where a component may appear functionning to one component and faulty to another and as such prevent the forming of a consensus about whether this component is faulty or not.

However, if we follow the steps of Satoshi Nakomoto, it appears that we can find a solution to the BGP problem. Indeed, let's considere a timestamp server. As we know, a timestamp server works by taking a hash of a block of items to be timestamped, and widely pusblishing the hash. As such, the timestamp allow us to prove that the data must have existed at a time T in order to get into the hash. Moreover, it also enable us to reinforce the hash as time goes by due to the fact that in a timestamp server, each timestamp includes the previous timestamp in its hash by forming a chain with each additional timestamp.

 

 

Now, in order to be able to reach a consensus trough a majority decision we need to implement a Proof of Work process (POW) consisting in scanning for a value which when hashed, such as with SHA-256, gives us a hash beginning by a certain number of zero bits.

 

Example of a basic PoW :

 

Let's consider that we ask a processor to realize a PoW consisting in coding a variation of "Hello World !", by using the hashing function SHA-256, which begins by 4 zero. The variation will consist in putting a number at the end of each string of characters as follows until we obtain a hash beginning by 4 zero :

 

"Hello World!0" => a9efd73638806846d0495fb92e2deba6e2e1ad5bc453e28e5fdc1334c97c21a8

"Hello World!1" =>f767b47fd98fab25d08bd155c42708b434ac86bfa8d8b95b1457146e86b728e5

( . . . )

"Hello World! 42300" => 0000abebe9c6554c85176b8e9f9f3f4ed9b7e8dc856a7b5cb9177bf7b22e1871

 

Coming back to our timestamp server, we can now spot that we can implement the PoW trough incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits.

 

=> In other words if we take back the previous basic example it would be equivalent to hash our text "Hello World!" with a nounce including a timestamp to avoid the pre-calculation of the possible future nounce as follows "Hello World! XXXXXX" (where XXXXXX  is the nounce including the timestamp)

 

Once the CPU effort has been expended to make it satisfy the PoW, the block cannot be changed without redoing the work. Moreover, later blocks will be chained after it inducing that the work to change the block would also include redoing all the blocks after it. As such, we can easily deduce from this point that if a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains while ensuring the viability of the network and of its coherent consensus knowing that the majority decision is represented by the longest chain.

 

Moreover,  as the nodes always consider the longest chain to be the correct one and will keep working on extending it, if two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. However, in that case, they will work on the first one they received and save the other branche in case it becomes longer. Later on, once the next proof of work is found and one branche becomes longer, the nodes that were working on the other branch will switch to the longer one.

At last it is important to underline that new transactions do not necessarily need to reach all nodes. Indeed, as long as they reach many nodes, they will get into a block before long. In a similar manner, block broadcasts are also tolerant of dropped messages meaning that if a node does not receive a block, it will simply request it when it receives the next block and realizes it missed one.

 

To conclude, we can see the method used here by Satoshi Nakamoto to solve the BGP is truly brilliant in the sense that it resolve efficiently the GBP  with the only constraint that the longest chain must be run by honest nodes.

 

2. The double spending problem

 

To understand how Bitcoin faces the problem of double-spending we just need to analyze the different steps trough which the network is running, which are as follows :

 

Step 1 : New transactions are broadcast to all nodes.

Step 2 : Each node collects new transactions into a block.

Step 3 : Each node works on finding a difficult PoW for its block.

Step 4 : When an node finds a PoW, it broadcasts the block to all nodes

Step 5 : Nodes accept the block only if all transactions in it are valid and not already spent.

Step 6: Nodes express their acceptanceof the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash.

 

Here, if we look at the fifth step, we can see that Bitcoin is taking care of the double spending problem simply by relying on its peer to peer distributed timestamp server allowing the generation of a computationnal proof of the chronological order of transactions.

 

3 The new paradigm of the Blockchain

 

As we've seen in our prior development, the blockchain allow us to dispose of a trusted and secure distributed network trough which we can perform transactions only by trusting the computational process. In this sense, it could very well unleash a totally new potential from the internet in the years to come. Indeed, if we think of the third trusted party, this new technology will enable gigantic saving costs for pure player such as Amazon which would only have to propose an advertising digital space without having to take care of the transaction side. Yet, the digital economy would not be the only space of application. Social sectors where items such as medical record, or proof of identity could be stored on a dedicated unhackable blockchain while remaining anonymous for the general public and always accessible for designated personal will surely be disrupt too in the decades to come. In conclusion, we can say that many areas will surely be disrupt in the years to come by this incredible technology first bring to life by the Bitcoin network and that many area and new business, still to discover, will emerge following its mass adoption.