Friends, followers, fellow Internet denizens: twenty-six years ago, Timothy May predicted that cryptologic methods would fundamentally alter the nature of corporations and of government interference in economic transactions. Six years ago, Satoshi Nakamoto declared the need for an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Today, the Bitcoin ecosystem is flourishing into a fledgling economy. While there is still much work to be done, I am pleased to report that the state of the network is strong.
It’s easy to see from the hashrate charts that the Bitcoin network is continuously growing stronger from a computational standpoint. However, many have noted the continuous decline of the number of nodes operating on the network and claimed that this spells doom for Bitcoin. This has been a direct result of the rise of web based wallets and SPV (Simplified Payment Verification) wallet clients, which are easier to use than heavyweight wallets that must maintain a local copy of the blockchain. For the past several months I have been researching the operations of the Bitcoin network of nodes, which resulted in me creating the Statoshi project and a public dashboard for people to view at statoshi.info. My conclusions are as follows:
- The current number of nodes is greatly in excess of what is needed in order to meet current demand.
- The vast majority of nodes are full nodes that host the entire blockchain; SPV nodes constitute a trivial portion of network use.
- The bandwidth requirements to run a full node that positively contributes to the network are only ~20 KB/S downstream and ~50 KB/S upstream.
- Data propagates quickly throughout the network. The average transaction propagates to over half of the network nodes in under 2 seconds. The average block propagates to over half of the network nodes in under 5 seconds.
- There is a negligible amount of malicious behavior being performed by nodes on the network.
- While the network is quite healthy, we still desire more nodes in order to further decentralize the network, disperse trust, and make it more expensive for a malicious entity to conduct a successful Sybil attack.
Many have claimed that without direct financial rewards for operating full nodes, the network will fall victim to the Tragedy of the Commons. These naysayers conveniently ignore the fact that similar systems such as Bittorrent have not only survived but become immensely popular, despite relying upon a similar model of altruism. Instead of seeking to pay node operators, which would be an incredible engineering challenge that might result in disenfranchising miners due to changing the contract for distributing transaction fees / newly minted coins, the Bitcoin Core developers will seek to make it less technically challenging and less resource intensive for a user to run a node. There are several developments on the horizon that should help us accomplish this.
Pieter Wuille has been busy working on optimizing how a node downloads historical blocks so that syncing does not take as long. Headers-first sync splits downloading the blockchain into two stages:
- Download just block headers from your peers. This is very fast because each block header is just 80 bytes.
- Once you’ve got one or more chains of block headers, pick the longest chain with the most proof-of-work and then fetch the full blocks for that chain.
Getting the headers first makes it possible to implement parallel downloading of blocks from multiple peers, which also increases performance. And it has security and privacy benefits — an attacker can’t make you waste space or time storing or serving an orphan blockchain fragment.
Merkle Tree Pruning is a concept proposed by Satoshi that will reduce the amount of disk space required to run a node by no longer storing transactions and blocks unless they have unspent outputs. It may also be a step toward allowing nodes to only host a portion of the blockchain, thus also reducing their outgoing bandwidth usage.
The resource requirements and technical skills needed to bootstrap, run, and maintain a Bitcoin node have steadily increased over the years. We are currently at a point where mainly devoted tech-savvy Bitcoin users are opting to operate nodes. However, I have conversed with quite a few node operators in recent months and am confident that those of us with the knowledge will continue to monitor the network. If necessary, we can bring new nodes online at little cost in order to meet demand. There certainly seems to be sufficient interest throughout the community, as people are often helping each other with guidance for running nodes and even setting up services that make it simpler to run a node. It won’t be long before we see nodes everywhere, even in outer space!