mirror of
https://github.com/seigler/dash-docs
synced 2025-07-27 01:36:13 +00:00
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.
49 lines
1.1 KiB
Text
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"
|
|
}
|