But how exactly the consensus rules are forced?
Every single full node enforces them.
Internet says that the consensus rules are the rules thet every full node follows. And rejects blocks that do not meet consensus rules "no matter what".
Correct.
Ok.
But.
Should ALL of the full nodes accept? Or should MOST of the full nodes accept? Or is there some "holy full node" that must accept?
It doesn't matter to me what your full node does. It doesn't matter to me what anyone else's full node does. Mine enforces the consensus rules as I understand them.
What if one controls 90% of full nodes and decides to accept blocks with, say, 200btc/block? What if one controls 90% of hashpower AND 90% of all nodes AND 90% of all full nodes?
Then one has a network that won't interoperate with anyone else because it doesn't follow the consensus rules and so everything it says looks like garbage to everyone else. As far as the rest of the world is concerned, 90% of the hashing power just stopping mining valid bitcoin blocks. They won't try to make sense of the garbage that person is generating because they have no idea what it means. How would they know what the rules are that make that data sensible?
How would I even know that those blocks have a 200 BTC reward? The very same rule set that tells me where to look in the block to figure out the reward also tells me that the reward is not 200 BTC. How would my node even know how to make sense of that? Of course, it wouldn't. It would say, "that's not a block, it's some garbage that I can't make sense out of" and ignore it.
The rules my bitcoin full node follows don't provide any way to specify a block reward over 50 BTC. There is simply no way to get my full node to accept that such a thing exists because it's coded not to.
Is full node software "signed" in some way to prevent modification to consensus rules?
No. Everyone is permitted to follow whatever rules they want. Of course, they can only interoperate with people who have agreed to follow the same rules. If they cannot agree, then the network can fork with the people who have chosen different rules winding up on different blockchains.
Ok. From other full node's perspective these 90%node's have left the network. But from user's perspective (lightweight nodes) they won't. Right? The block is in the chain, as per 90%of the node's opinion, so everything's ok. Or not? If not - why? – Dmitry Andrievsky – 2017-11-01T16:32:17.627
1That depends on which rule was broken and on the subset of rules the lightweight node checks. Most lightweight nodes would probably accept a block with a higher block reward if it's the longest chain they know about. – Murch – 2017-11-01T16:35:02.630
And then it seems to be "money from nothing" situation, does it not? – Dmitry Andrievsky – 2017-11-01T16:38:41.950
Well, if one party controls 90% of the hashrate, 90% of the full nodes and 90% of the nodes, they would not have a lot of economic activity between those, as sending money to yourself is a no-op. So, almost all economic activity would be on the 10% chain, and it seems pretty obvious that the 90% chain would just be ignored. This has happened by the way: The miners tried to keep the 50 BTC reward at the first halving, but quickly switched to the standard rules when everyone ignored their blocks. – Murch – 2017-11-01T16:41:28.117
Well, let's think theoretically. You control 90%, you earn 100k btc with one block, you sell it at 6k/btc. May be economically justified, if don't in time. – Dmitry Andrievsky – 2017-11-01T17:03:55.710
And those wanted to keep 50 reward, did they control 50+%? Can you share a link to a story? – Dmitry Andrievsky – 2017-11-01T17:04:49.177
2@DmitryAndrievsky: You're not earning Bitcoin, though, you're earning coins on your own chain that only you are following. So who's supposed to be buying that? When you try to send it to them, they're not going to see it being received. They'll think you're defrauding them. – Murch – 2017-11-01T17:14:27.027
Well. You - who? 90% of the network? Most of the users will accept the chain, won't they? 10% will not, ok. – Dmitry Andrievsky – 2017-11-01T17:19:01.537
Let us continue this discussion in chat.
– Murch – 2017-11-01T17:19:19.4572
@DmitryAndrievsky {link1} {link2}
– amaclin – 2017-11-01T21:59:02.453