Defining Bitcoin’s network topology - Bitcoin developers conference
For those of you who missed out on Bitcoin SV DevCon, we are offering you recaps of previous years’ DevCon content to get you up to speed.
Today we are featuring a presentation by nChain Director for Research Dr Owen Vaughan, where he talks about Bitcoin SV nodes and the network, covering the network's topology and defining network participants according to the Bitcoin white paper.
If you’d rather watch the presentation, you can head over here.
Nodes and the Bitcoin network
You may have heard people like Steve Shadders and Dr Craig Wright use terminology you are not entirely familiar with, so I want to help you get on the same page by explaining the reasoning behind the language they use.
Above is a figure that I have taken from a Bitcoin SV Wiki article I wrote in collaboration with Craig Wright. I will be referring to this article, so I encourage you to look at it if you are interested in learning more.
The first statement I want to make about the network of nodes pictured above is that it is a reasonable representation of the Bitcoin network. It is not a simplification, but it truly is as simple as that.
The second statement is about the title of the white paper: 'Bitcoin, a peer-to-peer electronic cash system'. It might not mean what you think it means. It certainly caught me by surprise when I realised that the term the title refers to is not a peer-to-peer payment between two users, but it refers to a peer on the network of nodes pictured in the left of the image above.
What is a Bitcoin node?
The Bitcoin SV Wiki article's first section is about nodes, represented by the dots in the image above. Other terms for nodes are block producers, miners or transaction processors.
'The Bitcoin network is made up of one (and only one) type of node that is defined in section 5 of the white paper.' - Bitcoin SV Wiki
The third point of section 5 is that each node works on finding a difficult proof-of-work solution. When it finds this proof-of-work solution, it broadcasts it to all other nodes on the network.
‘These nodes are often referred to as miners and are characterised by the ability to produce valid blocks…’ - Bitcoin SV Wiki
The white paper is quite clear that a node (often referred to as a miner) is characterised by its ability to produce valid blocks. I use the word 'produce' instead of 'mined' or 'won', because solving this difficult proof-of-work algorithm and everything that comes before that (including gathering together transactions, validating them and constructing a block) allows you to produce a valid block. It does not mean you are guaranteed that other nodes are going to accept it. If a block violates their local policies, is too big for them to handle or contains a transaction that is illegal in a jurisdiction, they might choose to reject it.
Not only must nodes be able to produce a block, but they must also distribute it to their peers, as broadcasting is an essential element to winning the reward.
Above is a statistic from a chain analysis website called Coin.dance referred to as the node count. You can see that Bitcoin Core (BTC) has the most network nodes by far and that Bitcoin SV comes in last.
This statistic is skewed, however, as Coin.dance's definition of nodes is not the same as that in section 5 of the Bitcoin white paper. The nodes Coin.dance refers to are machines that run node software, yet many of these do not meet the criteria of the white paper.
Although the network of machines running node software is an interesting network to consider in its own right, I want to emphasise that not all these nodes are engaged in solving a proof-of-work algorithm or the Nakamoto consensus mechanism.
The Bitcoin consensus network vs the Bitcoin gossip network
When we talk about the Bitcoin network, we have to be aware that there are two networks at play here. One is the Bitcoin network, where all nodes are block producers. The other one you can think of as 'the Bitcoin gossip network', because it is defined in terms of which machines can communicate with one another.
You can think of the Bitcoin network as the Bitcoin ‘consensus’ network. The consensus network is not a subset of the gossip network. To go from the gossip to the consensus network, you first need to identify a subset and then perform an aggregation.
The Bitcoin network's consensus mechanism
'Nodes are responsible for upholding the consensus mechanism of the system that is based on block publication and proof-of-work.' - Bitcoin SV Wiki
I want to emphasise how crucial block publication is for the Bitcoin consensus mechanism. If blocks are not published widely, it is difficult to prove the events that happened and in what order. You might ask, 'how do you provide evidence that blocks have been widely publicised?' The answer is that you can merely ask people.
As a thought experiment, we all know that the Bitcoin blockchain’s Genesis block contained a headline from the Times newspaper in the UK. Suppose someone came along and said, 'well, actually, I say that it contained a headline from the Guardian newspaper, and I have a longer proof-of-work chain to prove it.' By length of proof-of-work chain, I mean the one with the most aggregate hash power.
In this scenario, we would have two competing chains, the one claiming to have more proof-of-work saying that the Genesis block contained a link to the Guardian newspaper. How would we make a counter-argument? We would simply say this isn't true. Everyone knows that the Genesis block referred to the Times newspaper. We've all seen it, it's been written about, and people have sent transactions that spend the Coinbase transactions (or derivatives thereof) derived from the Genesis block.
The best way to illustrate the point is to use Bernie Madoff, who ran the world's biggest Ponzi scheme, as an example. He would run competing private databases and only show certain people select databases. His scheme relied on the fact that the data structures were not widely publicised. In an example of history repeating itself, Bernie's former employer, Nasdaq, started transferring their platform onto R3 Corda, a private ledger in 2020. One wonders if they have learnt any lessons from the past.
Does Bitcoin SV’s minority hash rate threaten its security?
Let's look at another statistic from Coin.dance: hash rate. When I looked up this statistic, BTC was much more dominant, with BSV and BCH exhibiting a similar amount of hash, around three to four percent. You might ask yourself, 'is this a problem?'
The answer is that it has not been a problem and we have not seen any detrimental behaviour of the system based on this hash rate. There are two reasons, both based on block publication and the public nature of network activity.
The three networks are politically divided. Because of the animosity between the groups, you could fear that someone might try to undermine the BSV chain by, for example, mining empty blocks. But if you were part of a mining pool, as most mining organisations are, and you started mining on the BSV blockchain while it was less profitable, you would run into some complications. It would immediately become evident that your pool was mining on a less profitable chain at the time, and as a participant of the pool, you would be likely to object to that. Mining pool directors also have an obligation to their shareholders, which precludes them from sacrificing profit for political reasons. You can see that it is the open publication of network activity that is likely to prevent something like that from happening.
But what if there was an individual with enough resources to start their own mining operation on BSV? Couldn't they attempt to disrupt the BSV network via some detrimental activity, like the mining of empty blocks, selfish mining, or including illegal transactions? The answer is that it would be obvious to the other miners on BSV, and they have the right to reject blocks coming from the miner in question. Again, you can see that the security of the chain is critically reliant on block publication.
What is the data structure of Bitcoin blocks?
‘Blocks are published in a data structure called the blockchain.’ - Bitcoin SV Wiki
Let's look at the data structure of the Bitcoin ledger, the blockchain. With respect to the Bitcoin consensus mechanism, the definition of a blockchain is based on block publication. With this definition in mind, there is no room for the concept of a private blockchain.
The appropriate use of ‘blockchain’ and ‘bitcoin network’
The term 'blockchain' refers specifically to the data structure associated with the Bitcoin consensus mechanism. Yet, the word is often overused. To illustrate, I analysed the language that Steve Shadders used in two blogs he wrote about stress tests and the transaction fee economy. In these articles, Steve uses the term ‘blockchain’ only once, and then specifically to refer to a data structure. He uses the term ‘network’ around 35 times. You can see that 'the Bitcoin network' might be the more appropriate term when talking about transactions being sent to the network, registered at nodes and published on the blockchain.
Bitcoin network topology and network incentives
It is not incorrect to use the term 'peer-to-peer' when referring to a payment between two users, but it is important not to overuse the term and it is best to use it with reference to a particular network.
‘Nodes are incentivised to maintain a high degree of connectivity with other nodes. This means that the network topology is that of a nearly complete graph.’ - Bitcoin SV Wiki
Let’s take a look at why the network is incentivised to maintain a high degree of connectivity.
Firstly, it is to ensure that nodes always build on the most up-to-date block. Secondly, it is to collect transaction fees. And thirdly, nodes want to propagate transactions to reduce the risk of their block not being built upon. They also may have contractual obligations to propagate transactions on behalf of a client with which they have entered into a service-level agreement. For these reasons, nodes are incentivised to be highly connected with other nodes.
‘At any one time, there are typically less than ten nodes that publish the majority of blocks.’ Bitcoin SV Wiki
Is it reasonable that there are fewer than 10 nodes publishing the majority of blocks? Well, the difficulty adjusts every two weeks. So, if we take 'at any one time' to mean a two-week window, you already have an upper bound of around 2,000 nodes, the maximum amount of blocks in two weeks. Similarly, if you haven't produced a block in two weeks, we can say that you've dropped off this network. However, due to infrastructure challenges there are rarely more than around 20 nodes on the network at any one time. The majority of blocks are produced by fewer than 10 of these.
The graph above is a reasonable representation of the Bitcoin network. Old nodes may drop off at any time and new nodes may join. There is no hierarchy in the process of block production or validation - it truly is a peer-to-peer network.
The fine structure of a Bitcoin node
If we looked into a Bitcoin node, what would we see?
‘There is no requirement for a node to be made up of a single machine. A node may be made up of several different linked systems, including routing, database and processing machines.’ - Bitcoin SV Wiki
In a talk Daniel Connolly gave about the Bitcoin SV node software strategy, he explained that it was first to scale up - in other words, to impose larger requirements on a single machine. Second, the strategy is to scale out, which means using many machines. It is worth noting that the Bitcoin white paper makes no requirement for a node to correspond to a single machine. Instead, we should think of a node as an entity that runs node software and produces blocks. It does not even have to be one entity - it could be two. Most mining pools will have at least one backup, which means they will have at least two entities running node software.
How does the white paper define a Bitcoin node?
A node is a system that decides on whether an incoming block is valid and the order in which transactions are registered, and it produces blocks originating from the same address. This address could be a miner ID, some other form of public identity like a collection of IP addresses, or it could be another way to classify identity.
If we go back to the network topology diagram above, we can create a more concrete definition of these nodes.
How do you define a Bitcoin node?
A node could be many entities running node software, and they are defined by agreeing on the same local policy. Within this system, no entity can reject another’s block.
A more concise description of a node would be that it is a representative agent of a community of block producers.
What is a Bitcoin consensus edge?
A consensus edge, which can be made up of many-to-many IP connections, is characterised by an edge along which a block might be rejected.
Bitcoin network users
At the moment, especially in BTC, users may run node software themselves, and that is the process they use to communicate with actual Bitcoin nodes to get their transactions in. But that does not have to be the case. For example, you could send a transaction to WhatsOnChain through their API, or use mAPI [link to presentation] to submit transactions directly.
How is a Bitcoin user defined?
The best way to explain the role of a user is through examples. A user could be a service provider (like a social media network), it could be a storage entity, an autonomous agent like a smart contract, or wallet software. These are all examples of users, and you will notice that all of them are software processors, not human beings.
Users do not play any role in the production, distribution or validation of blocks on the Bitcoin network and are therefore not involved in the consensus process. Users themselves do not have to be part of any network in a formal sense, but they may exist in specific contexts, like in complex user networks separate from the Bitcoin network. A user may well be a node on their own network after being a client on the Bitcoin network. In cases where these networks are overlaid on top of one another and the Bitcoin, they may form a structure called a Bitcoin layered network.
TLDR: Bitcoin participants and topology
- The diagram on the left in the image above represents the Bitcoin network.
- Nodes can be collections of entities running node software, each of which could be made up of many machines.
- The title of the white paper refers to a system of nodes or peers maintaining this form of electronic cash.
Attend future Bitcoin SV DevCons for free
Bitcoin SV developers week, or ‘Bitcoin SV DevCon’ as we call it, takes place twice a year.
If you found this presentation valuable, you are sure to benefit from attending the next event. You can sign up for updates on future events by registering your interest over here.
Bitcoin SV DevCon 2021
Register now for the 4th Bitcoin SV DevCon taking place online on November 13-14, 2021