Preamble

There are currently a lot of misconceptions and misinformation in the bitcoin community about the 'validity' of a blockchain or block, specifically in the case of hard forks. 'Validity' is mentioned a number of times in the bitcoin whitepaper and it is mentioned in different but similar contexts. Currently there seems to be a growing (incorrect) understanding that the validity of the chain is determined by whether the chain follows the original consensus protocol. If this were to be true, then any upgrades to bitcoin that fall outside the original consensus protocol that was initiated in bitcoin in 2009, would be considered 'invalid' and therefore not bitcoin. i.e. any and all hard forks would by definition be considered invalid. This would then mean that there is an argument that the bitcoin that currently exists is in fact not bitcoin at all, as it is not possible to deterministically sync the full blockchain using a pre 0.8.1 bitcoin client. This is obviously not true as everyone considers the current network to be bitcoin, therefore there must be a more nuanced definition to describe validity. Another growing belief that is being pushed by certain people is that bitcoin consensus follows 'community consensus'. This is also not true, at least in the way it has been presented and will be debunked in this article. Luckily there is a more nuanced and completed definition of 'validity' and it is described in the white paper but is not well understood by the community.

(If you want to skip straight to the meat of this article, scroll down to the section titled ' Validity of Network Forks '.)

In the whitepaper 'valid', 'invalid' and 'validity' are mentioned 6 times. A number of these times it is mentioned outside the context of network forks but I made a quick summary of them anyway below so as to clear up any confusion. The first time is in the section titled ' Network '. It states;

The steps to run the network are as follows:

1. New transactions are broadcast to all nodes.

2. Each node collects new transactions into a block.

3. Each node works on finding a difficult proof-of-work for its block.

4. When a node finds a proof-of-work, it broadcasts the block to all nodes.

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

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

The word 'invalid' is used in the same context in the ' Calculations ' section of the white paper. Specifically, it states;

We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker. Nodes are not going to accept an invalid transaction as payment, and honest nodes will never accept a block containing them. An attacker can only try to change one of his own transactions to take back money he recently spent.

In this context 'valid' and 'invalid' is referring to the validity of individual transactions that have been published into a block. For example a transaction's outputs cannot spend/total more than its combined inputs. This meaning of 'valid' is well understood so I will not discuss this further.

One more place in the bitcoin whitepaper that contains a reference to validity is in the ' Incentives ' section (This is one of the most important and most misunderstood and under-appreciated sections in the whitepaper). In it states:

The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth.

In this context, Satoshi is talking about the fact that by undermining bitcoin and the blockchain by trying to steal from it, he is devaluing his own spoils. i.e. there is a disincentive to try and attack the network. This is unfortunately not a well-understood concept but is not relevant to the word 'validity' in terms of hard forks.

Another section of the white paper that mentions 'validity' is in the ' Simplified Payment Verification ' section. In this section it states;

While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency.

In this context, an 'invalid' block is simply a block that contains invalid transactions (as discussed earlier in this article) that are being used by an attacker to steal funds. This only works on an SPV (simplified payment verification) node because they do not have the full blockchain to check against. As this is not relevant to the 'validity' of network forks it is outside the scope of this article.





Validity of Network Forks

The other places that the words 'valid' or 'invalid' are used in the white paper are all in the context that is relevant to network hard forks. In the 'Conclusion' section of the white paper it states;

They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism.

The absolutely key word in these sentences is ' vote '. The mining nodes in the network vote in every block by accepting blocks they consider 'valid' and rejecting blocks they consider 'invalid'. Well, this then begs the question; if the miners are voting on what is invalid and what is valid, what determines the validity? This is the crux of the issue. The currently held misunderstanding, often purveyed by a number of Core developers is that validity is determined by whether the blocks fit within the current consensus protocol. This is nonsensical. With each block being a vote, this would be the equivalent of when Fifa had a vote for their president in 2011 and the only name on the ballot paper was Sepp Blatter. In fact, it is worse than that, as in the case for bitcoin it would be the same name (rules) on the ballot paper for every single block forever. Just like Fifa, this would make bitcoin into a kind of banana republic where the vote is totally meaningless, and in reality, there is no vote at all. This is in total contradiction to the white paper. In fact what it states is "Any needed rules and incentives can be enforced with this consensus mechanism." This means that the rules can be changed and voted upon if the majority of the hash power agrees.

There is another section of the white paper specifically dedicated to this concept and goes into further detail. Although it doesn't directly reference the words 'invalid' or 'valid' it does directly reference the voting of hashing power. This is in the ' Proof-of-Work ' section and it states;

The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote . The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes.

The first sentence " The proof-of-work also solves the problem of determining representation in majority decision making. " directly links to the statement in the white paper conclusion that says " Any needed rules and incentives can be enforced with this consensus mechanism. ". What is being stated is that the rules of the system, and any changes to them, can be determined and enforced using the proof-of-work system. It is stating that the majority of the hash power decides their representation in decision making.

There is seemingly currently a sub-section of the bitcoin community and developers pushing the narrative that the 'users' control the network and determine what is 'valid'. This is wrong and is also explained in this section of the white paper. It states; " If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. ". What this is saying is that with proof-of-work you cannot over inflate your representation beyond what you actually represent. There is no computational or systematic way for the network to determine a vote based on what 'users' 'want'. We can't use a twitter poll. We can't get a feeling from comments in a forum. Not only can you not know the intentions of any anonymous or pseudonymous social media accounts, we also cannot even know the intentions of known and identified entities. Even if you could get every supposed network participant in one room and have a direct vote, there would be no way to determine the difference between who is a real network participant who wants the network to thrive and who is against the network. There also would be no way to even apply the result of that vote into the network.

This is a very very key point in proof-of-work and why it was used in bitcoin;

The intentions of arbitrary entities CANNOT be determined. Miners are the only set of entities whose intentions we can determine. This is because bitcoin itself has given the miners their intentions and that is to make as much money as possible using bitcoin. This means that the miner's intentions are aligned with the network participants because the miners want to maximise the value of bitcoin to maximise their profit. If we cannot trust the majority of miners then the entire security model of bitcoin fails.

I will discuss this further in another article as it is a fundamental yet misunderstood aspect of bitcoin that needs further illumination.





Conclusion

Getting back to the crux of this article, how does this relate to 'validity'? Well as we now know, the miners are the ones who get to make the decision on whether a block is valid or not. This means that each individual miner is able to decide on what block is valid or not valid. This does not mean that different miners will always choose different arbitrary rules. In fact, the opposite is true. In almost all situation the miners will choose to follow the exact same set of rules as all the other miners. This is because if one miner makes a decision to follow a new set of rules by considering blocks valid that other miners consider invalid, then their blocks will not be accepted by the rest of the network. In almost all situations this would be considered an adverse situation as the network is stronger working together as a whole, with as much hashing power and network effect as possible. In some situations like in the recent Bitcoin Cash fork, it may be considered beneficial to enough entities and miners that a fork is made to occur. This sub-set of miners now view blocks with a new set of rules as valid, that other miners on the original chain consider invalid. This is when a hard fork occurs. Without going into too much detail on the economics of hard forks (an article about this will come later), it is important to realise that if the newly separated network has value and blocks are being mined on it then it will continue to exist. In this situation, what is a valid block? Well, a block that is valid on one network will be considered invalid on the other and vice versa. Validity is in the eye of the beholder . From the perspective of a specific miner, their own blocks are always valid, but they may consider blocks from other miners invalid and vice versa. The newly introduced concept by certain bitcoin Core developers that 'validity' is whether you follower the current chain or not, is at best incomplete and could be more accurately described as incorrect. Validity is determined by the miners as individual entities and not by the collective community. If the validity of blocks was determined by the collective community then there would be no need for miners at all and the network could be undermined trivially using a social attack.

This new narrative that validity is determined by the collective community has created perverse concepts like 'miners hard forking is an attack on the network', when really all that is happening is that miners are changing what rules determine what is considered valid by using their hash power to vote, which is something that was explained in the white paper before the genesis block had even been mined.