In theory, Metcalfe’s law is an impossible problem to overcome. But in reality? It may not be necessary to face Metcalfe’s law head-on but instead to _steal_ the network effect of the existing network. Par ex: it’s very hard to compete with Twitter, but not so hard to give a user control over their own Twitter data (with a neat UI/UX to use Twitter too), especially if you get them include their own API key. From controlling your own Twitter data, you can move to mirroring it; from 1-way mirroring, to 2-way sync; from 2-way sync, to discarding the silo. No need to replace Twitter in one impossible step. Instead, baby steps for users to migrate off gradually, seamlessly, sans friction.
“…[the] more important, part of the Bitcoin experiment is the underlying blockchain technology as a tool of distributed consensus.” Vitalik Buterin (2013)
Blockchain technology uses:
First, Bitcoin provides a simple and moderately effective consensus algorithm, allowing nodes in the network to collectively agree on a set of canonical updates to the state of the Bitcoin ledger. Second, Bitcoin provides a mechanism for allowing free entry into the consensus process, solving the political problem of deciding who gets to influence the consensus, while simultaneously preventing sybil attacks. It does this by substituting a formal barrier to participation, such as the requirement to be registered as a unique entity on a particular list, with an economic barrier – the weight of a single node in the consensus voting process is directly proportional to the computing power that the node brings.
Calculating the weight of a node as being proportional to its currency holdings and not computational resources. Hello Klaus Schwab and organic recentralisation of power.
State transition system (ledger): where there is a “state” consisting of the ownership status of all existing bitcoins and a “state transition function” that takes a state and a transaction and outputs a new state which is the result. Bitcoin is trying to build a decentralized currency system, so it needs to combine the state transaction system with a consensus system in order to ensure that everyone agrees on the order of transactions. Bitcoin’s decentralized consensus process requires nodes in the network to continuously attempt to produce packages of transactions called “blocks”. Each transaction in the block must provide a valid state transition from what was the canonical state before the transaction was executed to some new state.
The one validity condition present in the above list that is not found in other systems is the requirement for “proof-of-work”. The precise condition is that the double-SHA256 hash of every block, treated as a 256-bit number, must be less than a dynamically adjusted target, which as of the time of this writing is approximately 2187. The purpose of this is to make block creation computationally “hard”, thereby preventing sybil attackers from remaking the entire blockchain in their favour. Because SHA256 is designed to be a completely unpredictable pseudorandom function, the only way to create a valid block is simply trial and error, repeatedly incrementing the nonce and seeing if the new hash matches.
Scalability feature of Bitcoin is that the block is stored in a multi-level data structure. The “hash” of a block is actually only the hash of the block header, a roughly 200-byte piece of data that contains the timestamp, nonce, previous block hash and the root hash of a data structure called the Merkle tree storing all transactions in the block.
A Merkle tree is a type of binary tree, composed of a set of nodes with a large number of leaf nodes at the bottom of the tree containing the underlying data, a set of intermediate nodes where each node is the hash of its two children, and finally a single root node, also formed from the hash of its two children, representing the “top” of the tree. The purpose of the Merkle tree is to allow the data in a block to be delivered piecemeal: a node can download only the header of a block from one source, the small part of the tree relevant to them from another source, and still be assured that all of the data is correct.
A protocol known as “simplified payment verification” (SPV) allows for another class of nodes to exist, called “light nodes”, which download the block headers, verify the proof-of-work on the block headers, and then download only the “branches” associated with transactions that are relevant to them.
Currently, all “light” implementations of Bitcoin-based meta-protocols rely on a trusted server to provide the data, arguably a highly suboptimal result especially when one of the primary purposes of a cryptocurrency is to eliminate the need for trust.
Ethereum intended to build an alternative framework that provides even larger gains in ease of development as well as even stronger light client properties, while at the same time allowing applications to share an economic environment and blockchain security. Smart contract Ethereum: “a blockchain with a built-in Turing-complete programming language, allowing anyone to write smart contracts and decentralized applications where they can create their own arbitrary rules for ownership, transaction formats and state transition functions.” Ethereum also includes, as standard, cryptographic “boxes” that contain value and only unlock it if certain conditions are met, etc.