mirror of
https://github.com/bitcoin/bips.git
synced 2026-05-18 16:59:30 +00:00
BIP8: replace FAILING with MUST_SIGNAL
This removes the FAILING state and adds compulsory signalling during a new MUST_SIGNAL phase during the last retarget period prior to the timeout height. This ensures that if a deployment occurs using bip8 with lockinontimeout=false and timeoutheight=N, that a later deployment using bip8 with lockinontimeout=true and timeoutheight=K, where K<N that any chain where LOCKED_IN is reached prior to height K, will be accepted as valid by nodes using either set of deployment parameters. It also ensures that the soft-fork's changed rules are only enforced on chain a retarget period after signalling indicates enforcement is expected (which was not previously the case if the FAILING to ACTIVE transition took place).
This commit is contained in:
committed by
Luke Dashjr
parent
3c63846fc2
commit
da9cdd6759
@@ -1,17 +1,19 @@
|
||||
digraph {
|
||||
rankdir=TD;
|
||||
|
||||
node [style="rounded,filled,bold", shape=box, fixedsize=true, width=1.3, fontname="Arial"];
|
||||
node [style="rounded,filled,bold", shape=box, fixedsize=true, width=1.5, fontname="Arial"];
|
||||
|
||||
edge [weight = 100];
|
||||
"DEFINED" -> "STARTED" [label="height >= start_height"];
|
||||
"STARTED" -> "FAILING" [label="height >= timeoutheight AND NOT lockinontimeout"];
|
||||
"STARTED" -> "LOCKED_IN" [label="(height < timeoutheight AND threshold reached)\nOR\n(height >= timeoutheight AND lockinontimeout)"];
|
||||
"STARTED" -> "MUST_SIGNAL" [label="height + 2016 >= timeoutheight AND lockinontimeout"];
|
||||
"STARTED" -> "FAILED" [label="height >= timeoutheight\nAND\nNOT lockinontimeout"];
|
||||
"LOCKED_IN" -> "ACTIVE" [label="always"];
|
||||
"FAILING" -> "FAILED" [label="NOT all blocks signal"];
|
||||
"MUST_SIGNAL" -> "LOCKED_IN" [label="always"];
|
||||
|
||||
edge [weight = 1];
|
||||
"FAILING" -> "ACTIVE" [label="all blocks signal"];
|
||||
"STARTED" -> "LOCKED_IN" [label="height < timeoutheight\nAND\nthreshold reached"];
|
||||
|
||||
"FAILED" -> "LOCKED_IN" [style=invis];
|
||||
|
||||
"DEFINED":sw -> "DEFINED":nw;
|
||||
"STARTED":sw -> "STARTED":nw;
|
||||
@@ -19,16 +21,14 @@ digraph {
|
||||
"FAILED":sw -> "FAILED":nw;
|
||||
|
||||
"STARTED" [fillcolor="#a0a0ff"];
|
||||
|
||||
"FAILING" [fillcolor="#ffffa0"];
|
||||
"MUST_SIGNAL" [fillcolor="#a0a0ff"];
|
||||
"LOCKED_IN" [fillcolor="#ffffa0"];
|
||||
"ACTIVE" [fillcolor="#a0ffa0", shape=box];
|
||||
"FAILED" [fillcolor="#ffa0a0", shape=box];
|
||||
"ACTIVE" [fillcolor="#a0ffa0"];
|
||||
"FAILED" [fillcolor="#ffa0a0"];
|
||||
|
||||
"ACTIVE" -> "FAILED" [style=invis];
|
||||
|
||||
{ rank=same; "STARTED" "FAILING" }
|
||||
{ rank=sink; "ACTIVE" "FAILED" }
|
||||
{ rank=same; "STARTED" "MUST_SIGNAL" }
|
||||
{ rank=same; "FAILED" "LOCKED_IN" }
|
||||
{ rank=sink; "ACTIVE" }
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user