How exactly are Bitcoin's consensus rules enforced? There are some rules called consensus rules, for example the block generation amount.
And it is said that &quot;a change to consensus rules is a hard-fork&quot;.
But how exactly are the consensus rules enforced?
The internet says that the consensus rules are the rules that every full node follows. And every node rejects blocks that do not meet consensus rules &quot;no matter what&quot;.
Ok.
But.
Must ALL of the full nodes accept? Or should MOST of the full nodes accept? Or is there some &quot;holy full node&quot; that must accept?
What if one controls 90% of all full nodes and decides to accept blocks with, say, 200 BTC/block? What if one controls 90% of the hashpower AND 90% of all nodes AND 90% of all full nodes?
Is full node software &quot;signed&quot; in some way to prevent modification to consensus rules?
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 &quot;no matter what&quot;.

Correct.

Ok.
But.
Should ALL of the full nodes accept? Or should MOST of the full nodes accept? Or is there some &quot;holy full node&quot; 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, &quot;that's not a block, it's some garbage that I can't make sense out of&quot; 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 &quot;signed&quot; 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.