In a number of discussions I've bumped up against this idea that nodes can prevent miners from deciding consensus. Something is bugging me about it though.
In the beginning there were only nodes. Nodes all mined, miners were nodes. The white paper used the term nodes to mean miners. So when the consensus mechanism was described:
This is international court of justice level resolution. (It's probably accepted that it should never come to this, because that would truly be a 'contentious' hard fork. Which explains ii) in the following)
Over time though a few things have happened that have moved people's understanding away from this:
i) nodes that do not mine, but only relay, have sprung up
ii) concessions have been made to try and reduce the likelihood of contentious (51%) HF, the idea of 75% or 95% majorities.
I think that combined this creates the false picture that some majority of non-mining nodes is a reflection of what 'consensus' is.
I'm curious to know if I have overlooked something, when I think that nodes (non-miners) have little to no power to actively prevent a HF.
I understand these nodes can signal, and I understand that in the event of a HF these nodes can refuse to relay blocks. In the event that there are still at least some nodes (mining or not) that will propagate these otherwise ignored blocks, then it is purely hash rate that will affect which chain gets longer.
I would speculate that there would have to be an incredible supermajority of nodes against a HF that a majority hash rate has chose to pursue for it to have any significant effect.
I can't do the formal math for this theoretical scenario, whereby a HF was activated with the minimum hashrate (disregarding the 25% fake node attack, because it is not economically rational to trigger a truly contentious HF):
75% hashrate + 25% nodes - PRO
25% hashrate + 75% nodes - ANTI
Average node has connections in the region of : 8 out / 100 in
I'd estimating that those 10% nodes provide enough coverage that the majority hash rate would on balance still move their chain ahead at 3 times the rate of the minority.
If we switch it up to 90% of nodes against, and only 10% for (same hashrate) how much does this affect the network?
The point is that although these non-miners can make things harder, I think that miners decide. This is how it has always been, regardless of whatever other meta consensus rules have been added later.
In the beginning there were only nodes. Nodes all mined, miners were nodes. The white paper used the term nodes to mean miners. So when the consensus mechanism was described:
It was essentially saying that 51% of miners has the power to control the network.Satoshi said:From: https://bitcoin.org/bitcoin.pdf
12. Conclusion
We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending. To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power. The network is robust in its unstructured simplicity. Nodes work all at once with little coordination. They do not need to be identified, since messages are not routed to any particular place and only need to be delivered on a best effort basis. Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone. 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.
This is international court of justice level resolution. (It's probably accepted that it should never come to this, because that would truly be a 'contentious' hard fork. Which explains ii) in the following)
Over time though a few things have happened that have moved people's understanding away from this:
i) nodes that do not mine, but only relay, have sprung up
ii) concessions have been made to try and reduce the likelihood of contentious (51%) HF, the idea of 75% or 95% majorities.
I think that combined this creates the false picture that some majority of non-mining nodes is a reflection of what 'consensus' is.
I'm curious to know if I have overlooked something, when I think that nodes (non-miners) have little to no power to actively prevent a HF.
I understand these nodes can signal, and I understand that in the event of a HF these nodes can refuse to relay blocks. In the event that there are still at least some nodes (mining or not) that will propagate these otherwise ignored blocks, then it is purely hash rate that will affect which chain gets longer.
I would speculate that there would have to be an incredible supermajority of nodes against a HF that a majority hash rate has chose to pursue for it to have any significant effect.
I can't do the formal math for this theoretical scenario, whereby a HF was activated with the minimum hashrate (disregarding the 25% fake node attack, because it is not economically rational to trigger a truly contentious HF):
75% hashrate + 25% nodes - PRO
25% hashrate + 75% nodes - ANTI
Average node has connections in the region of : 8 out / 100 in
I'd estimating that those 10% nodes provide enough coverage that the majority hash rate would on balance still move their chain ahead at 3 times the rate of the minority.
If we switch it up to 90% of nodes against, and only 10% for (same hashrate) how much does this affect the network?
The point is that although these non-miners can make things harder, I think that miners decide. This is how it has always been, regardless of whatever other meta consensus rules have been added later.