Early comfortable forks every had their very own activation methodology included within the proposal which relied on flagdays or block model signaling. The latter solely allowed a single proposal to be thought-about concurrently because it relied on incrementing the block model.
BIP9 proposed an activation commonplace which allowed a number of proposals to be thought-about on the identical time. Delicate forks that have been activated utilizing BIP9 have been coordinated by having a supermajority of hash energy sign readiness for the improve (historically 95%). Miners are tasked to evaluate the community’s uptake of the proposal and sign readiness by setting particular bits within the model subject of their blocks. The miners readiness sign is measured during the last issue interval at every retargeting peak. For instance, the segwit comfortable fork and the CHECKSEQUENCEVERIFY
comfortable fork that activated BIP68, BIP112, and BIP113 used BIP9-based activation.
BIP8 is a variant and the successor of BIP9. BIP8 makes use of block heights quite than timestamps to sure the signaling window, and offers the choice to both fail or lock-in the improve on the finish of the signaling window. When lockinontimeout: true
is about, nodes operating the activation code solely settle for blocks that sign readiness within the final issue interval earlier than the timeoutheight
. This forces the improve to lock-in to the top of the signaling window. In distinction, BIP9 would all the time fail after the signaling window handed with out activation, so BIP9 labored equivalently to BIP8 with lockinontimeout: false
.
through BIP8
Per BIP8, a proposal would get activated through the next steps:
-
The signaling interval commences at
start_height
by switching fromDEFINED
toSTARTED
. Thestart_height
can be set at the very least a month after launch of the activation code. Word that thetimeout_height
should be the top of an issue epoch. -
At every issue retargeting, each node operating the activation code independently checks whether or not the signaling threshold was met within the concluded issue interval. There are three potential state transactions from
STARTED
:- If the edge is just not met at
timeout_height
, the
proposal settles within the lastFAILED
state on the finish of the signaling interval. - If the signaling threshold was met, the proposal transitions to the
LOCKED_IN
state. - If the proposal forces activation through
lockinontimeout: true
and
the final issue epoch of the signaling interval is reached with
the proposal inSTARTED
state, the proposal transitions toMUST_SIGNAL
. This causes upgraded nodes to reject any blocks that do not sign readiness.
- If the edge is just not met at
-
The proposal stays in
LOCKED_IN
state for one issue interval after which transitions to the ultimateACTIVE
state. Upgraded nodes now implement the comfortable fork guidelines on the community.