I have been reading at few places that miners will enforce new consensus rules. Examples:



04:20 < AaronvanW> aj: I think "my" type of futures market could be combined with "your" type of futures market? My futures market would inform miners if the market wants them to activate or not, your futures market would inform them (post-activation) if they should enforce or not. I think the second futures market (enforce or not) would be kinda pointless in this context, since the market already told miners to activate (among other reasons), but hey if people want to bet on that they can. (And I think this should address Matt's point/concern.)

04:32 < AaronvanW> the second futures market would have an asymmetric advantage in favor of enforcing, but I'd say that's a good thing. (again, I think this futures market would be kinda pointless... just addressing concerns here.)


According to my understanding:

  1. Devs code implementation for a BIP, followed by reviews and discussions

  2. MASF: Miners are asked to signal readiness, new consensus rules are activated if most miners are ready in time. Blocks that do not follow new consensus rules after activation are rejected by full nodes.

  3. UASF: Miners are informed about a deadline, new consensus rules are activated irrespective of miners readiness if enough miners fail to signal before deadline. Blocks that don't follow new consensus rules after activation are rejected by full nodes. (In BIP 148 blocks are rejected that do not signal and BIP 8 has a MUST_SIGNAL phase and lockinontimeout)

In both cases, rules are 'enforced' by full nodes.

Are miners "following" the new consensus rules after activation that they agreed to activate and signaled readiness or miners are "enforcing" new consensus rules? If they are enforcing new consensus rules, what is the role of full nodes? And if miners enforce new consensus rules can we consider miners signaling as voting?


Consensus rules are enforced by economic full nodes i.e. full nodes that are actually using their full nodes to verify and monitor their own transactions. Full stop. In that sense, a theoretical miner not running an economic full node is not enforcing consensus rules, they are attempting to mine blocks with rules enforced by the network of economic full nodes. If that theoretical miner mines a block that doesn't meet those consensus rules the economic full nodes will reject that block.

However, if you are attempting to coordinate the smooth activation of a soft fork one of the ways to minimize the prospect of large re-orgs, confusion and disruption is to get miners to signal readiness. (Signaling readiness is not "voting" for the changes in the soft fork.) Ideally you want all miners to be enforcing soft rules post activation because if a few miners aren't enforcing them a transaction that doesn't meet those soft fork rules could creep into a block and cause a larger than normal re-org. Miners who are enforcing the soft fork rules would reject the block and eventually successfully mine on top of an alternative block but it would need time to work itself out. Of course those miners who have blocks that are eventually rejected lose out on block rewards, transaction fees and transactions that are included in that rejected block will need to be mined in an alternative block.

The focus is only on miner signaling for say the Taproot activation because we want to ensure a smooth activation of a soft fork. We want to know that miners are ready to enforce the additional consensus rules of the soft fork knowing that many economic full nodes may not be enforcing them immediately post activation. However, if there is a "block size war" going on and there are disputes on whether a soft fork should be activated or not (like there arguably were with SegWit in 2017) what ultimately matters is what consensus rules the economic full nodes are enforcing and not what miners signal. In this emergency like scenario you would likely see a lot more economic full nodes enforcing the soft fork rules immediately post activation.

In summary, during peacetime miner coordination and miner signaling does the job just fine and we don't have a problem if a number of economic full nodes aren't enforcing the new soft fork rules immediately post activation. Full nodes aren't creating new blocks and hence can't create a block with a transaction in it that doesn't meet the new consensus rules. (Ideally all economic full nodes would be enforcing them but it is not a problem if they aren't assuming a supermajority of miners are). During wartime however the burden falls onto economic full nodes to determine what consensus rules the network is enforcing. Miner signaling, to the extent that it isn't influencing what consensus rules economic full nodes are enforcing, is irrelevant.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.