dash-docs/img/dev/en-hard-fork.dot
David A. Harding 2e8ceb26df
Describe Soft And Hard Forks
Based on a suggestion made by @petertodd to the -devel mailing list and
the discussion in that thread by him and other participants.

* We've been using the term "consensus", but this commit introduces a
  formal definition for it and "consensus rules" as part of the block
  chain introduction.

* Describe that consensus rules may change and may happen when they
  do: hard or soft forks.

* Describe how full nodes can detect hard or soft forks, then describe
  how SPV clients can detect hard and soft forks using the more limited
  information available to them.
2014-10-24 09:44:50 -04:00

49 lines
1.1 KiB
Text

digraph {
size=6.25;
rankdir=LR
//splines = ortho;
ranksep = 0.2;
nodesep = 0.1;
edge [ penwidth = 1.75, fontname="Sans" ]
node [ penwidth = 1.75, shape = "box", fontname="Sans", label = "", width=0.3, height=0.3 ]
graph [ penwidth = 1.75, fontname="Sans" ]
invis1 [ shape = "none", label = "Blocks\nFrom\nUpgraded\nNodes" ]
invis0 [ shape = "none", label = "Blocks\nFrom Non-\nUpgraded\nNodes" ];
subgraph cluster_honest {
block0 [ label = "Follows\nOld\nRules" ];
block1 [ label = "Follows\nOld\nRules" ];
block2_1 [ label = "Follows\nOld\nRules" ];
block3_1 [ label = "Follows\nOld\nRules" ];
//block2_1 -> block4 [ style = "invis", minlen = 2 ];
style = "invis";
}
subgraph cluster_attack {
block2 [ label = "Follows\nNew\nRules" ];
block3 [ label = "Follows\nNew\nRules" ];
block4 [ label = "Follows\nNew\nRules" ];
block5 [ label = "Follows\nNew\nRules" ];
style = "invis"
}
invis0 -> block0 [ minlen = 2, style = "dashed" ];
block2_1 -> block3_1;
block0 -> block1 -> block2 -> block3 -> block4 -> block5;
block1 -> block2_1
label = "A Hard Fork: Non-Upgraded Nodes Reject The New Rules, Diverging The Chain"
}