zbingledack

Though it may be that we can even further say there is no such thing as “the protocol rules” at any given present time, only a history of blocks n through m that fell within certain parameters (I.e., all blocks so far have not exceeded 1MB), so therefore “full nodes” cannot validate a block as following the rules as — strictly speaking — there are no rules at the chain tip; miners simply vote for whatever block they like, whether they do so based on their own private rules or even just arbitrarily.

Sure, in practice the incentives are extremely strong for miners to adhere to certain rules (such as the inflation schedule), but at times of great controversy some rules are up in the air and really don’t exist with certainty as the blocks are subject to a vote and a block breaking any such rule could well win the vote.

Thus non-mining “full nodes” can’t even be said to validate “the rules”; only mining can be called validation.

Perhaps to summarize, the way Bitcoin works is that there are these rules that exist in people’s minds as Schelling points that the market recognizes, and miners are incentivized to follow these rules as long as they remain favored by the market, but strictly speaking the miners can accept or reject any block for any reason and if it gets mined upon and continues as the longest chain, that block becomes part of the Bitcoin blockchain regardless of any rules. Miners have ultimate say, just never the incentive to abuse it.

Any “rules” are only actually _patterns_ judged empirically by looking at historical data in the longest chain.

For example, the 1MB cap is not really a rule just because it is in miners’ software (in fact only miners can be sure it is in there) since they could change their software _right now_ and choose to mine or build on a 2MB block. Ths reminds me of @peter_r’s talk at Bitpay.

Miners are free agents able to add _whatever they want_ to the chain. Miners decide validity, period. It is ONLY incentives that keep them following Bitcoin’s crucial monetary Schelling points like the inflation rate (21M coin limit). Only incentives, nothing else.

For example, if your “full node” determines that a block you just received is “invalid” because it contravenes “the protocol rules” but the majority of hashpower miners just mined it and proceed to build on top of it, in what possible sense can we say your software “validated” anything?

The miners validated what you invalidated, so who’s the real validator here? The miners.

“The protocol rules” are more correctly called Schelling points miners have followed in the _past_, some of which they will be forever incentivized to adhere to in the block voting process (a.k.a. mining, a.k.a. validation).

Rules being baked into client software is a convenience, and shouldn’t be mistaken for removing miners’ free will in voting for blocks using whatever rules or judgments or whims they please — just keeping in mind that Bitcoin is premised on miners being intelligently profit-seeking by adhering to the rules that the market values (21M coin limit, etc.). It is not software that binds them, but incentives. Everything in the client software could be made user-selectable, even the inflation schedule, and while it would be really user-unfriendly it wouldn’t endanger anything because again it is the economic incentives, not the coded “protocol rules” that keep miners in line (though sure, those coded rules did serve to establish the key Schelling points at the genesis of Bitcoin)

Core has it backwards in thinking that hardcoding rules are what keeps miners in line. Once the permanently useful Schelling points were established, they were fated to be solid for all eternity, because the market likes utility.

The blocksize cap is also a Schelling point, and it was once useful, but it has long since outlived its usefulness and miners can and will (if Bitcoin’s incentives design actually works!) cease to adhere to it.

— — — — — — — — — — — — — —

This was a post made on the btcchat slack.

bitcoinchat.herokuapp.com

See also:

https://www.reddit.com/r/btc/comments/6dcybs/unfubaring_cores_terminology_part_1_full/