Dev Docs: Document Blocks-First IBD & Orphan Blocks
This commit provides a detailed overview of the current block download method, which I've retroactively named blocks-first for parallelism with headers-first. New And Significantly Revised: * New Initial Block Download (IBD) section (h3) with Blocks-First subsection (h4) * New Orphan Block subsection (under Blocks Broadcasting) describing orphan blocks and how they're handled under blocks-first. Also includes a simple illustration of the difference between orphan blocks and stale blocks. Thanks to luke-jr for his s/orphan block/stale block/ commit a couple months ago---that made this commit much easier. Edits: * Cleaned up a couple cases missed by previous s/orphan/stale/ commit because they used past tense (orphaned). * In P2P reference section, mentioned that a `block` message can be sent unsolicited by miners. * Mention that `getheaders` and `headers` were added in protocol version 31800. * Moved a few internal links around and added a few new internal links. Administrivia: * Started adding "TODOv0.10" in HTML comments to places that need to be updated when 0.10 is released so that I can easily git grep for that tag later.
|
@ -14,7 +14,8 @@ corresponding commands:
|
|||
circo -T svg file.circo -o file.svg
|
||||
neato -T png file.neato -o file.png
|
||||
|
||||
Notice: Graphviz can be inconsistent across versions. All of the SVG and
|
||||
Notice: Graphviz can be inconsistent across versions.
|
||||
Up until commit ab415e8b6 (2014-12-17), all of the SVG and
|
||||
PNG images here were generated using graphviz version 2.26.3
|
||||
(20100126.1600) on Debian 7 using the following shell loop:
|
||||
|
||||
|
@ -26,6 +27,11 @@ PNG images here were generated using graphviz version 2.26.3
|
|||
optipng -o7 ${f/.dot}.png
|
||||
done
|
||||
|
||||
Images created after commit ab415e8b6 used Debian Graphviz version
|
||||
2.38.0-7. This higher version is required to support the HTML bold and
|
||||
italics tags used in some newer images, and we may come to use some of
|
||||
its other extra features such as the sides="" parameter.
|
||||
|
||||
For improved compatability between Graphviz versions, files created or
|
||||
updated after 6 May 2014 are recommend to include the following code
|
||||
near the top of the file:
|
||||
|
|
48
img/dev/en-ibd-block.dot
Normal file
|
@ -0,0 +1,48 @@
|
|||
digraph {
|
||||
// This file is licensed under the MIT License (MIT) available on
|
||||
// http://opensource.org/licenses/MIT.
|
||||
|
||||
size=6.25;
|
||||
rankdir=LR
|
||||
splines = "false";
|
||||
ranksep = 0.5;
|
||||
nodesep = 0.1;
|
||||
|
||||
edge [ penwidth = 1.75, fontname="Sans" ]
|
||||
node [ penwidth = 1.75, shape = "box", fontname="Sans"]
|
||||
graph [ penwidth = 1.75, fontname="Sans" ]
|
||||
|
||||
ibd -> block:f1 -> sync [dir="back"];
|
||||
|
||||
ibd [ label = "IBD\nNode", shape="none" ];
|
||||
sync [ label = "Sync\nNode", shape="none" ];
|
||||
|
||||
block [ shape="plaintext", label=<
|
||||
<table border="2" cellborder="1" cellpadding="5">
|
||||
<tr>
|
||||
<td colspan="4" port="f1" border="0" cellpadding="4"><b>Block Message</b></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="4" border="0"><i>Message Header</i></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td border="1"><i>Start String</i><br/><font face="courier">f9beb4d9</font></td>
|
||||
<td border="1"><i>Command</i><br/><font face="courier">block</font></td>
|
||||
<td border="1"><i>Size</i><br/><font face="courier">215</font></td>
|
||||
<td border="1"><i>Checksum</i><br/><font face="courier">934d270a</font></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="4" border="0"><i>Payload</i></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="4" border="1"><i>Serialized Block</i><br/><font face="courier">010000006fe2...58eeac00000000</font></td>
|
||||
</tr>
|
||||
|
||||
</table>>];
|
||||
|
||||
label = "First block message sent to Initial Blocks Download (IBD) node"
|
||||
}
|
BIN
img/dev/en-ibd-block.png
Normal file
After Width: | Height: | Size: 11 KiB |
56
img/dev/en-ibd-block.svg
Normal file
|
@ -0,0 +1,56 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Generated by graphviz version 2.38.0 (20140413.2041)
|
||||
-->
|
||||
<!-- Title: %3 Pages: 1 -->
|
||||
<svg width="450pt" height="181pt"
|
||||
viewBox="0.00 0.00 450.00 180.69" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g id="graph0" class="graph" transform="scale(0.868726 0.868726) rotate(0) translate(4 204)">
|
||||
<title>%3</title>
|
||||
<polygon fill="white" stroke="none" points="-4,4 -4,-204 514,-204 514,4 -4,4"/>
|
||||
<text text-anchor="middle" x="255" y="-7.8" font-family="Sans" font-size="14.00">First block message sent to Initial Blocks Download (IBD) node</text>
|
||||
<!-- ibd -->
|
||||
<g id="node1" class="node"><title>ibd</title>
|
||||
<text text-anchor="middle" x="27" y="-184.3" font-family="Sans" font-size="14.00">IBD</text>
|
||||
<text text-anchor="middle" x="27" y="-169.3" font-family="Sans" font-size="14.00">Node</text>
|
||||
</g>
|
||||
<!-- block -->
|
||||
<g id="node2" class="node"><title>block</title>
|
||||
<text text-anchor="start" x="195" y="-177.3" font-family="Sans" font-weight="bold" font-size="14.00">Block Message</text>
|
||||
<text text-anchor="start" x="197.5" y="-151.3" font-family="Sans" font-style="italic" font-size="14.00">Message Header</text>
|
||||
<polygon fill="none" stroke="black" points="102,-99.5 102,-139.5 194,-139.5 194,-99.5 102,-99.5"/>
|
||||
<text text-anchor="start" x="108" y="-123.3" font-family="Sans" font-style="italic" font-size="14.00">Start String</text>
|
||||
<text text-anchor="start" x="114.5" y="-109.3" font-family="Courier,monospace" font-size="14.00">f9beb4d9</text>
|
||||
<polygon fill="none" stroke="black" points="196,-99.5 196,-139.5 278,-139.5 278,-99.5 196,-99.5"/>
|
||||
<text text-anchor="start" x="202" y="-123.3" font-family="Sans" font-style="italic" font-size="14.00">Command</text>
|
||||
<text text-anchor="start" x="216" y="-109.3" font-family="Courier,monospace" font-size="14.00">block</text>
|
||||
<polygon fill="none" stroke="black" points="280,-99.5 280,-139.5 321,-139.5 321,-99.5 280,-99.5"/>
|
||||
<text text-anchor="start" x="286" y="-123.3" font-family="Sans" font-style="italic" font-size="14.00">Size</text>
|
||||
<text text-anchor="start" x="288" y="-109.3" font-family="Courier,monospace" font-size="14.00">215</text>
|
||||
<polygon fill="none" stroke="black" points="323,-99.5 323,-139.5 408,-139.5 408,-99.5 323,-99.5"/>
|
||||
<text text-anchor="start" x="329" y="-123.3" font-family="Sans" font-style="italic" font-size="14.00">Checksum</text>
|
||||
<text text-anchor="start" x="332" y="-109.3" font-family="Courier,monospace" font-size="14.00">934d270a</text>
|
||||
<text text-anchor="start" x="227.5" y="-82.3" font-family="Sans" font-style="italic" font-size="14.00">Payload</text>
|
||||
<polygon fill="none" stroke="black" points="102,-30.5 102,-70.5 408,-70.5 408,-30.5 102,-30.5"/>
|
||||
<text text-anchor="start" x="200.5" y="-54.3" font-family="Sans" font-style="italic" font-size="14.00">Serialized Block</text>
|
||||
<text text-anchor="start" x="135" y="-40.3" font-family="Courier,monospace" font-size="14.00">010000006fe2...58eeac00000000</text>
|
||||
<polygon fill="none" stroke="black" stroke-width="2" points="99,-28 99,-195 411,-195 411,-28 99,-28"/>
|
||||
</g>
|
||||
<!-- ibd->block -->
|
||||
<g id="edge1" class="edge"><title>ibd->block:f1</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M64.3931,-180.5C82.6786,-180.5 101,-180.5 101,-180.5"/>
|
||||
<polygon fill="black" stroke="black" stroke-width="1.75" points="64.3547,-177 54.3547,-180.5 64.3546,-184 64.3547,-177"/>
|
||||
</g>
|
||||
<!-- sync -->
|
||||
<g id="node3" class="node"><title>sync</title>
|
||||
<text text-anchor="middle" x="483" y="-184.3" font-family="Sans" font-size="14.00">Sync</text>
|
||||
<text text-anchor="middle" x="483" y="-169.3" font-family="Sans" font-size="14.00">Node</text>
|
||||
</g>
|
||||
<!-- block->sync -->
|
||||
<g id="edge2" class="edge"><title>block:f1->sync</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M419.324,-180.5C428.742,-180.5 443.067,-180.5 455.645,-180.5"/>
|
||||
<polygon fill="black" stroke="black" stroke-width="1.75" points="419,-177 409,-180.5 419,-184 419,-177"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 4 KiB |
57
img/dev/en-ibd-getblocks.dot
Normal file
|
@ -0,0 +1,57 @@
|
|||
digraph {
|
||||
// This file is licensed under the MIT License (MIT) available on
|
||||
// http://opensource.org/licenses/MIT.
|
||||
|
||||
size=6.25;
|
||||
rankdir=LR
|
||||
splines = "false";
|
||||
ranksep = 0.4;
|
||||
nodesep = 0.1;
|
||||
|
||||
edge [ penwidth = 1.75, fontname="Sans" ]
|
||||
node [ penwidth = 1.75, shape = "box", fontname="Sans"]
|
||||
graph [ penwidth = 1.75, fontname="Sans" ]
|
||||
|
||||
ibd -> getblocks:f1 -> sync;
|
||||
|
||||
ibd [ label = "IBD\nNode", shape="none" ];
|
||||
sync [ label = "Sync\nNode", shape="none" ];
|
||||
|
||||
getblocks [ shape="plaintext", label=<
|
||||
<table border="2" cellborder="1">
|
||||
<tr>
|
||||
<td colspan="4" port="f1" border="0" cellpadding="4"><b>GetBlocks Message</b></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="4" border="0"><i>Message Header</i></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td border="1"><i>Start String</i><br/><font face="courier">f9beb4d9</font></td>
|
||||
<td border="1"><i>Command</i><br/><font face="courier">getblocks</font></td>
|
||||
<td border="1"><i>Size</i><br/><font face="courier">69</font></td>
|
||||
<td border="1"><i>Checksum</i><br/><font face="courier">f5fcbcad</font></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="4" border="0"><i>Payload</i></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="2"><i>Protocol Version</i><br /><font face="courier">70002</font></td>
|
||||
<td colspan="2"><i>Header Hash Count</i><br /><font face="courier">1</font></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="4"><i>Header Hashes (Highest-Height First)</i><br /><font face="courier">6fe28c0ab6f1b3...d6190000000000</font></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="4"><i>Stopping Hash (Zero Is "No Stop")</i><br /><font face="courier">00000000000000...00000000000000</font></td>
|
||||
</tr>
|
||||
|
||||
</table>>];
|
||||
|
||||
label = "First getblocks message sent from Initial Blocks Download (IBD) node"
|
||||
}
|
BIN
img/dev/en-ibd-getblocks.png
Normal file
After Width: | Height: | Size: 12 KiB |
65
img/dev/en-ibd-getblocks.svg
Normal file
|
@ -0,0 +1,65 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Generated by graphviz version 2.38.0 (20140413.2041)
|
||||
-->
|
||||
<!-- Title: %3 Pages: 1 -->
|
||||
<svg width="450pt" height="225pt"
|
||||
viewBox="0.00 0.00 450.00 224.56" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g id="graph0" class="graph" transform="scale(0.877193 0.877193) rotate(0) translate(4 252)">
|
||||
<title>%3</title>
|
||||
<polygon fill="white" stroke="none" points="-4,4 -4,-252 509,-252 509,4 -4,4"/>
|
||||
<text text-anchor="middle" x="252.5" y="-7.8" font-family="Sans" font-size="14.00">First getblocks message sent from Initial Blocks Download (IBD) node</text>
|
||||
<!-- ibd -->
|
||||
<g id="node1" class="node"><title>ibd</title>
|
||||
<text text-anchor="middle" x="27" y="-232.3" font-family="Sans" font-size="14.00">IBD</text>
|
||||
<text text-anchor="middle" x="27" y="-217.3" font-family="Sans" font-size="14.00">Node</text>
|
||||
</g>
|
||||
<!-- getblocks -->
|
||||
<g id="node2" class="node"><title>getblocks</title>
|
||||
<text text-anchor="start" x="174.5" y="-225.3" font-family="Sans" font-weight="bold" font-size="14.00">GetBlocks Message</text>
|
||||
<text text-anchor="start" x="195.5" y="-202.3" font-family="Sans" font-style="italic" font-size="14.00">Message Header</text>
|
||||
<polygon fill="none" stroke="black" points="95.5,-159.5 95.5,-193.5 181.5,-193.5 181.5,-159.5 95.5,-159.5"/>
|
||||
<text text-anchor="start" x="98.5" y="-180.3" font-family="Sans" font-style="italic" font-size="14.00">Start String</text>
|
||||
<text text-anchor="start" x="105" y="-166.3" font-family="Courier,monospace" font-size="14.00">f9beb4d9</text>
|
||||
<polygon fill="none" stroke="black" points="183.5,-159.5 183.5,-193.5 264.5,-193.5 264.5,-159.5 183.5,-159.5"/>
|
||||
<text text-anchor="start" x="189" y="-180.3" font-family="Sans" font-style="italic" font-size="14.00">Command</text>
|
||||
<text text-anchor="start" x="186.5" y="-166.3" font-family="Courier,monospace" font-size="14.00">getblocks</text>
|
||||
<polygon fill="none" stroke="black" points="266.5,-159.5 266.5,-193.5 315.5,-193.5 315.5,-159.5 266.5,-159.5"/>
|
||||
<text text-anchor="start" x="276.5" y="-180.3" font-family="Sans" font-style="italic" font-size="14.00">Size</text>
|
||||
<text text-anchor="start" x="282.5" y="-166.3" font-family="Courier,monospace" font-size="14.00">69</text>
|
||||
<polygon fill="none" stroke="black" points="317.5,-159.5 317.5,-193.5 410.5,-193.5 410.5,-159.5 317.5,-159.5"/>
|
||||
<text text-anchor="start" x="327.5" y="-180.3" font-family="Sans" font-style="italic" font-size="14.00">Checksum</text>
|
||||
<text text-anchor="start" x="330.5" y="-166.3" font-family="Courier,monospace" font-size="14.00">f5fcbcad</text>
|
||||
<text text-anchor="start" x="225.5" y="-145.3" font-family="Sans" font-style="italic" font-size="14.00">Payload</text>
|
||||
<polygon fill="none" stroke="black" points="95.5,-102.5 95.5,-136.5 264.5,-136.5 264.5,-102.5 95.5,-102.5"/>
|
||||
<text text-anchor="start" x="123.5" y="-123.3" font-family="Sans" font-style="italic" font-size="14.00">Protocol Version</text>
|
||||
<text text-anchor="start" x="159" y="-109.3" font-family="Courier,monospace" font-size="14.00">70002</text>
|
||||
<polygon fill="none" stroke="black" points="266.5,-102.5 266.5,-136.5 410.5,-136.5 410.5,-102.5 266.5,-102.5"/>
|
||||
<text text-anchor="start" x="270.5" y="-123.3" font-family="Sans" font-style="italic" font-size="14.00">Header Hash Count</text>
|
||||
<text text-anchor="start" x="334" y="-109.3" font-family="Courier,monospace" font-size="14.00">1</text>
|
||||
<polygon fill="none" stroke="black" points="95.5,-66.5 95.5,-100.5 410.5,-100.5 410.5,-66.5 95.5,-66.5"/>
|
||||
<text text-anchor="start" x="123.5" y="-87.3" font-family="Sans" font-style="italic" font-size="14.00">Header Hashes (Highest-Height First)</text>
|
||||
<text text-anchor="start" x="125" y="-73.3" font-family="Courier,monospace" font-size="14.00">6fe28c0ab6f1b3...d6190000000000</text>
|
||||
<polygon fill="none" stroke="black" points="95.5,-30.5 95.5,-64.5 410.5,-64.5 410.5,-30.5 95.5,-30.5"/>
|
||||
<text text-anchor="start" x="134.5" y="-51.3" font-family="Sans" font-style="italic" font-size="14.00">Stopping Hash (Zero Is "No Stop")</text>
|
||||
<text text-anchor="start" x="125" y="-37.3" font-family="Courier,monospace" font-size="14.00">00000000000000...00000000000000</text>
|
||||
<polygon fill="none" stroke="black" stroke-width="2" points="92,-28 92,-243 413,-243 413,-28 92,-28"/>
|
||||
</g>
|
||||
<!-- ibd->getblocks -->
|
||||
<g id="edge1" class="edge"><title>ibd->getblocks:f1</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M54.2826,-228.5C64.8835,-228.5 76.4737,-228.5 84.4768,-228.5"/>
|
||||
<polygon fill="black" stroke="black" stroke-width="1.75" points="84.5,-232 94.5,-228.5 84.5,-225 84.5,-232"/>
|
||||
</g>
|
||||
<!-- sync -->
|
||||
<g id="node3" class="node"><title>sync</title>
|
||||
<text text-anchor="middle" x="478" y="-232.3" font-family="Sans" font-size="14.00">Sync</text>
|
||||
<text text-anchor="middle" x="478" y="-217.3" font-family="Sans" font-size="14.00">Node</text>
|
||||
</g>
|
||||
<!-- getblocks->sync -->
|
||||
<g id="edge2" class="edge"><title>getblocks:f1->sync</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M411.5,-228.5C411.5,-228.5 425.372,-228.5 440.348,-228.5"/>
|
||||
<polygon fill="black" stroke="black" stroke-width="1.75" points="440.736,-232 450.736,-228.5 440.736,-225 440.736,-232"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 5.2 KiB |
57
img/dev/en-ibd-getblocks2.dot
Normal file
|
@ -0,0 +1,57 @@
|
|||
digraph {
|
||||
// This file is licensed under the MIT License (MIT) available on
|
||||
// http://opensource.org/licenses/MIT.
|
||||
|
||||
size=6.25;
|
||||
rankdir=LR
|
||||
splines = "false";
|
||||
ranksep = 0.4;
|
||||
nodesep = 0.1;
|
||||
|
||||
edge [ penwidth = 1.75, fontname="Sans" ]
|
||||
node [ penwidth = 1.75, shape = "box", fontname="Sans"]
|
||||
graph [ penwidth = 1.75, fontname="Sans" ]
|
||||
|
||||
ibd -> getblocks:f1 -> sync;
|
||||
|
||||
ibd [ label = "IBD\nNode", shape="none" ];
|
||||
sync [ label = "Sync\nNode", shape="none" ];
|
||||
|
||||
getblocks [ shape="plaintext", label=<
|
||||
<table border="2" cellborder="1">
|
||||
<tr>
|
||||
<td colspan="4" port="f1" border="0" cellpadding="4"><b>GetBlocks Message</b></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="4" border="0"><i>Message Header</i></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td border="1"><i>Start String</i><br/><font face="courier">f9beb4d9</font></td>
|
||||
<td border="1"><i>Command</i><br/><font face="courier">getblocks</font></td>
|
||||
<td border="1"><i>Size</i><br/><font face="courier">677</font></td>
|
||||
<td border="1"><i>Checksum</i><br/><font face="courier">52be83ef</font></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="4" border="0"><i>Payload</i></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="2"><i>Protocol Version</i><br /><font face="courier">70002</font></td>
|
||||
<td colspan="2"><i>Header Hash Count</i><br /><font face="courier">20</font></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="4"><i>Header Hashes (Highest-Height First)</i><br /><font face="courier">db773c8f3b90ef...64f64f00000000<br/>459f16a1c695d0...f66d8000000000</font><br/><i>......18 more header hashes......</i></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="4"><i>Stopping Hash (Zero Is "No Stop")</i><br /><font face="courier">00000000000000...00000000000000</font></td>
|
||||
</tr>
|
||||
|
||||
</table>>];
|
||||
|
||||
label = "Second getblocks message sent from Initial Blocks Download (IBD) node"
|
||||
}
|
BIN
img/dev/en-ibd-getblocks2.png
Normal file
After Width: | Height: | Size: 13 KiB |
67
img/dev/en-ibd-getblocks2.svg
Normal file
|
@ -0,0 +1,67 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Generated by graphviz version 2.38.0 (20140413.2041)
|
||||
-->
|
||||
<!-- Title: %3 Pages: 1 -->
|
||||
<svg width="450pt" height="245pt"
|
||||
viewBox="0.00 0.00 450.00 244.83" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g id="graph0" class="graph" transform="scale(0.862069 0.862069) rotate(0) translate(4 280)">
|
||||
<title>%3</title>
|
||||
<polygon fill="white" stroke="none" points="-4,4 -4,-280 518,-280 518,4 -4,4"/>
|
||||
<text text-anchor="middle" x="257" y="-7.8" font-family="Sans" font-size="14.00">Second getblocks message sent from Initial Blocks Download (IBD) node</text>
|
||||
<!-- ibd -->
|
||||
<g id="node1" class="node"><title>ibd</title>
|
||||
<text text-anchor="middle" x="31.5" y="-260.3" font-family="Sans" font-size="14.00">IBD</text>
|
||||
<text text-anchor="middle" x="31.5" y="-245.3" font-family="Sans" font-size="14.00">Node</text>
|
||||
</g>
|
||||
<!-- getblocks -->
|
||||
<g id="node2" class="node"><title>getblocks</title>
|
||||
<text text-anchor="start" x="179" y="-253.3" font-family="Sans" font-weight="bold" font-size="14.00">GetBlocks Message</text>
|
||||
<text text-anchor="start" x="200" y="-230.3" font-family="Sans" font-style="italic" font-size="14.00">Message Header</text>
|
||||
<polygon fill="none" stroke="black" points="100,-187.5 100,-221.5 186,-221.5 186,-187.5 100,-187.5"/>
|
||||
<text text-anchor="start" x="103" y="-208.3" font-family="Sans" font-style="italic" font-size="14.00">Start String</text>
|
||||
<text text-anchor="start" x="109.5" y="-194.3" font-family="Courier,monospace" font-size="14.00">f9beb4d9</text>
|
||||
<polygon fill="none" stroke="black" points="188,-187.5 188,-221.5 269,-221.5 269,-187.5 188,-187.5"/>
|
||||
<text text-anchor="start" x="193.5" y="-208.3" font-family="Sans" font-style="italic" font-size="14.00">Command</text>
|
||||
<text text-anchor="start" x="191" y="-194.3" font-family="Courier,monospace" font-size="14.00">getblocks</text>
|
||||
<polygon fill="none" stroke="black" points="271,-187.5 271,-221.5 320,-221.5 320,-187.5 271,-187.5"/>
|
||||
<text text-anchor="start" x="281" y="-208.3" font-family="Sans" font-style="italic" font-size="14.00">Size</text>
|
||||
<text text-anchor="start" x="283" y="-194.3" font-family="Courier,monospace" font-size="14.00">677</text>
|
||||
<polygon fill="none" stroke="black" points="322,-187.5 322,-221.5 415,-221.5 415,-187.5 322,-187.5"/>
|
||||
<text text-anchor="start" x="332" y="-208.3" font-family="Sans" font-style="italic" font-size="14.00">Checksum</text>
|
||||
<text text-anchor="start" x="335" y="-194.3" font-family="Courier,monospace" font-size="14.00">52be83ef</text>
|
||||
<text text-anchor="start" x="230" y="-173.3" font-family="Sans" font-style="italic" font-size="14.00">Payload</text>
|
||||
<polygon fill="none" stroke="black" points="100,-130.5 100,-164.5 269,-164.5 269,-130.5 100,-130.5"/>
|
||||
<text text-anchor="start" x="128" y="-151.3" font-family="Sans" font-style="italic" font-size="14.00">Protocol Version</text>
|
||||
<text text-anchor="start" x="163.5" y="-137.3" font-family="Courier,monospace" font-size="14.00">70002</text>
|
||||
<polygon fill="none" stroke="black" points="271,-130.5 271,-164.5 415,-164.5 415,-130.5 271,-130.5"/>
|
||||
<text text-anchor="start" x="275" y="-151.3" font-family="Sans" font-style="italic" font-size="14.00">Header Hash Count</text>
|
||||
<text text-anchor="start" x="334.5" y="-137.3" font-family="Courier,monospace" font-size="14.00">20</text>
|
||||
<polygon fill="none" stroke="black" points="100,-66.5 100,-128.5 415,-128.5 415,-66.5 100,-66.5"/>
|
||||
<text text-anchor="start" x="128" y="-115.3" font-family="Sans" font-style="italic" font-size="14.00">Header Hashes (Highest-Height First)</text>
|
||||
<text text-anchor="start" x="129.5" y="-101.3" font-family="Courier,monospace" font-size="14.00">db773c8f3b90ef...64f64f00000000</text>
|
||||
<text text-anchor="start" x="129.5" y="-87.3" font-family="Courier,monospace" font-size="14.00">459f16a1c695d0...f66d8000000000</text>
|
||||
<text text-anchor="start" x="148" y="-73.3" font-family="Sans" font-style="italic" font-size="14.00">......18 more header hashes......</text>
|
||||
<polygon fill="none" stroke="black" points="100,-30.5 100,-64.5 415,-64.5 415,-30.5 100,-30.5"/>
|
||||
<text text-anchor="start" x="139" y="-51.3" font-family="Sans" font-style="italic" font-size="14.00">Stopping Hash (Zero Is "No Stop")</text>
|
||||
<text text-anchor="start" x="129.5" y="-37.3" font-family="Courier,monospace" font-size="14.00">00000000000000...00000000000000</text>
|
||||
<polygon fill="none" stroke="black" stroke-width="2" points="96.5,-28 96.5,-271 417.5,-271 417.5,-28 96.5,-28"/>
|
||||
</g>
|
||||
<!-- ibd->getblocks -->
|
||||
<g id="edge1" class="edge"><title>ibd->getblocks:f1</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M58.7826,-256.5C69.3835,-256.5 80.9737,-256.5 88.9768,-256.5"/>
|
||||
<polygon fill="black" stroke="black" stroke-width="1.75" points="89,-260 99,-256.5 89,-253 89,-260"/>
|
||||
</g>
|
||||
<!-- sync -->
|
||||
<g id="node3" class="node"><title>sync</title>
|
||||
<text text-anchor="middle" x="482.5" y="-260.3" font-family="Sans" font-size="14.00">Sync</text>
|
||||
<text text-anchor="middle" x="482.5" y="-245.3" font-family="Sans" font-size="14.00">Node</text>
|
||||
</g>
|
||||
<!-- getblocks->sync -->
|
||||
<g id="edge2" class="edge"><title>getblocks:f1->sync</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M416,-256.5C416,-256.5 429.872,-256.5 444.848,-256.5"/>
|
||||
<polygon fill="black" stroke="black" stroke-width="1.75" points="445.236,-260 455.236,-256.5 445.236,-253 445.236,-260"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 5.4 KiB |
73
img/dev/en-ibd-getdata.dot
Normal file
|
@ -0,0 +1,73 @@
|
|||
digraph {
|
||||
// This file is licensed under the MIT License (MIT) available on
|
||||
// http://opensource.org/licenses/MIT.
|
||||
|
||||
size=6.25;
|
||||
rankdir=LR
|
||||
splines = "false";
|
||||
ranksep = 0.2;
|
||||
nodesep = 0.1;
|
||||
|
||||
edge [ penwidth = 1.75, fontname="Sans" ]
|
||||
node [ penwidth = 1.75, shape = "box", fontname="Sans"]
|
||||
graph [ penwidth = 1.75, fontname="Sans" ]
|
||||
|
||||
ibd -> getdata:f1 -> sync;
|
||||
|
||||
ibd [ label = "IBD\nNode", shape="none" ];
|
||||
sync [ label = "Sync\nNode", shape="none" ];
|
||||
|
||||
getdata [ shape="plaintext", label=<
|
||||
<table border="2" cellborder="1">
|
||||
<tr>
|
||||
<td colspan="4" port="f1" border="0" cellpadding="4"><b>GetData Message</b></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="4" border="0"><i>Message Header</i></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td border="1"><i>Start String</i><br/><font face="courier">f9beb4d9</font></td>
|
||||
<td border="1"><i>Command</i><br/><font face="courier">getdata</font></td>
|
||||
<td border="1"><i>Size</i><br/><font face="courier">4609</font></td>
|
||||
<td border="1"><i>Checksum</i><br/><font face="courier">33e41222</font></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="4" border="0"><i>Payload</i></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="4"><i>Number Of Objects Requested By Inventory</i><br /><font face="courier">128</font></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<table border="0">
|
||||
<tr>
|
||||
<td colspan="2"><i>Objects Requested (Inventory Entries)</i></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><i>Type</i></td>
|
||||
<td><i>Unique Identifier (For Blocks, A Header Hash)</i></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Block</td>
|
||||
<td><font face="courier">4860eb18bf1b1620...688e9a8300000000</font></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Block</td>
|
||||
<td><font face="courier">bddd99ccfda39da1...065f626a00000000</font></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2"><i>...............126 more inventory entries...............</i></td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>>];
|
||||
|
||||
label = "First getdata message sent from Initial Blocks Download (IBD) node"
|
||||
}
|
BIN
img/dev/en-ibd-getdata.png
Normal file
After Width: | Height: | Size: 17 KiB |
65
img/dev/en-ibd-getdata.svg
Normal file
|
@ -0,0 +1,65 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Generated by graphviz version 2.38.0 (20140413.2041)
|
||||
-->
|
||||
<!-- Title: %3 Pages: 1 -->
|
||||
<svg width="450pt" height="246pt"
|
||||
viewBox="0.00 0.00 450.00 245.98" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g id="graph0" class="graph" transform="scale(0.822669 0.822669) rotate(0) translate(4 295)">
|
||||
<title>%3</title>
|
||||
<polygon fill="white" stroke="none" points="-4,4 -4,-295 543,-295 543,4 -4,4"/>
|
||||
<text text-anchor="middle" x="269.5" y="-7.8" font-family="Sans" font-size="14.00">First getdata message sent from Initial Blocks Download (IBD) node</text>
|
||||
<!-- ibd -->
|
||||
<g id="node1" class="node"><title>ibd</title>
|
||||
<text text-anchor="middle" x="27" y="-275.8" font-family="Sans" font-size="14.00">IBD</text>
|
||||
<text text-anchor="middle" x="27" y="-260.8" font-family="Sans" font-size="14.00">Node</text>
|
||||
</g>
|
||||
<!-- getdata -->
|
||||
<g id="node2" class="node"><title>getdata</title>
|
||||
<text text-anchor="start" x="198.5" y="-268.8" font-family="Sans" font-weight="bold" font-size="14.00">GetData Message</text>
|
||||
<text text-anchor="start" x="212.5" y="-245.8" font-family="Sans" font-style="italic" font-size="14.00">Message Header</text>
|
||||
<polygon fill="none" stroke="black" points="80.5,-203 80.5,-237 212.5,-237 212.5,-203 80.5,-203"/>
|
||||
<text text-anchor="start" x="106.5" y="-223.8" font-family="Sans" font-style="italic" font-size="14.00">Start String</text>
|
||||
<text text-anchor="start" x="113" y="-209.8" font-family="Courier,monospace" font-size="14.00">f9beb4d9</text>
|
||||
<polygon fill="none" stroke="black" points="214.5,-203 214.5,-237 313.5,-237 313.5,-203 214.5,-203"/>
|
||||
<text text-anchor="start" x="229" y="-223.8" font-family="Sans" font-style="italic" font-size="14.00">Command</text>
|
||||
<text text-anchor="start" x="235" y="-209.8" font-family="Courier,monospace" font-size="14.00">getdata</text>
|
||||
<polygon fill="none" stroke="black" points="315.5,-203 315.5,-237 366.5,-237 366.5,-203 315.5,-203"/>
|
||||
<text text-anchor="start" x="326.5" y="-223.8" font-family="Sans" font-style="italic" font-size="14.00">Size</text>
|
||||
<text text-anchor="start" x="324" y="-209.8" font-family="Courier,monospace" font-size="14.00">4609</text>
|
||||
<polygon fill="none" stroke="black" points="368.5,-203 368.5,-237 459.5,-237 459.5,-203 368.5,-203"/>
|
||||
<text text-anchor="start" x="377.5" y="-223.8" font-family="Sans" font-style="italic" font-size="14.00">Checksum</text>
|
||||
<text text-anchor="start" x="380.5" y="-209.8" font-family="Courier,monospace" font-size="14.00">33e41222</text>
|
||||
<text text-anchor="start" x="242.5" y="-188.8" font-family="Sans" font-style="italic" font-size="14.00">Payload</text>
|
||||
<polygon fill="none" stroke="black" points="80.5,-146 80.5,-180 459.5,-180 459.5,-146 80.5,-146"/>
|
||||
<text text-anchor="start" x="118" y="-166.8" font-family="Sans" font-style="italic" font-size="14.00">Number Of Objects Requested By Inventory</text>
|
||||
<text text-anchor="start" x="257.5" y="-152.8" font-family="Courier,monospace" font-size="14.00">128</text>
|
||||
<polygon fill="none" stroke="black" points="80.5,-31 80.5,-144 459.5,-144 459.5,-31 80.5,-31"/>
|
||||
<text text-anchor="start" x="137.5" y="-126.8" font-family="Sans" font-style="italic" font-size="14.00">Objects Requested (Inventory Entries)</text>
|
||||
<text text-anchor="start" x="91" y="-105.8" font-family="Sans" font-style="italic" font-size="14.00">Type</text>
|
||||
<text text-anchor="start" x="135" y="-105.8" font-family="Sans" font-style="italic" font-size="14.00">Unique Identifier (For Blocks, A Header Hash)</text>
|
||||
<text text-anchor="start" x="89" y="-83.8" font-family="Sans" font-size="14.00">Block</text>
|
||||
<text text-anchor="start" x="148.5" y="-83.8" font-family="Courier,monospace" font-size="14.00">4860eb18bf1b1620...688e9a8300000000</text>
|
||||
<text text-anchor="start" x="89" y="-62.8" font-family="Sans" font-size="14.00">Block</text>
|
||||
<text text-anchor="start" x="148.5" y="-62.8" font-family="Courier,monospace" font-size="14.00">bddd99ccfda39da1...065f626a00000000</text>
|
||||
<text text-anchor="start" x="107.5" y="-42.8" font-family="Sans" font-style="italic" font-size="14.00">...............126 more inventory entries...............</text>
|
||||
<polygon fill="none" stroke="black" stroke-width="2" points="77,-28 77,-286 462,-286 462,-28 77,-28"/>
|
||||
</g>
|
||||
<!-- ibd->getdata -->
|
||||
<g id="edge1" class="edge"><title>ibd->getdata:f1</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M54.0518,-272C59.4406,-272 64.8119,-272 69.2213,-272"/>
|
||||
<polygon fill="black" stroke="black" stroke-width="1.75" points="69.5,-275.5 79.5,-272 69.5,-268.5 69.5,-275.5"/>
|
||||
</g>
|
||||
<!-- sync -->
|
||||
<g id="node3" class="node"><title>sync</title>
|
||||
<text text-anchor="middle" x="512" y="-275.8" font-family="Sans" font-size="14.00">Sync</text>
|
||||
<text text-anchor="middle" x="512" y="-260.8" font-family="Sans" font-size="14.00">Node</text>
|
||||
</g>
|
||||
<!-- getdata->sync -->
|
||||
<g id="edge2" class="edge"><title>getdata:f1->sync</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M460.5,-272C460.5,-272 466.72,-272 474.794,-272"/>
|
||||
<polygon fill="black" stroke="black" stroke-width="1.75" points="474.863,-275.5 484.862,-272 474.862,-268.5 474.863,-275.5"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 5.2 KiB |
73
img/dev/en-ibd-inv.dot
Normal file
|
@ -0,0 +1,73 @@
|
|||
digraph {
|
||||
// This file is licensed under the MIT License (MIT) available on
|
||||
// http://opensource.org/licenses/MIT.
|
||||
|
||||
size=6.25;
|
||||
rankdir=LR
|
||||
splines = "false";
|
||||
ranksep = 0.2;
|
||||
nodesep = 0.1;
|
||||
|
||||
edge [ penwidth = 1.75, fontname="Sans" ]
|
||||
node [ penwidth = 1.75, shape = "box", fontname="Sans"]
|
||||
graph [ penwidth = 1.75, fontname="Sans" ]
|
||||
|
||||
ibd -> inv:f1 -> sync [ dir = "back" ];
|
||||
|
||||
ibd [ label = "IBD\nNode", shape="none" ];
|
||||
sync [ label = "Sync\nNode", shape="none" ];
|
||||
|
||||
inv [ shape="plaintext", label=<
|
||||
<table border="2" cellborder="1">
|
||||
<tr>
|
||||
<td colspan="4" port="f1" border="0" cellpadding="4"><b>Inv Message</b></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="4" border="0"><i>Message Header</i></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td border="1"><i>Start String</i><br/><font face="courier">f9beb4d9</font></td>
|
||||
<td border="1"><i>Command</i><br/><font face="courier">inv</font></td>
|
||||
<td border="1"><i>Size</i><br/><font face="courier">18003</font></td>
|
||||
<td border="1"><i>Checksum</i><br/><font face="courier">25173c57</font></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="4" border="0"><i>Payload</i></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="4"><i>Number Of Inventories (Max 500 In Reply To GetBlocks) </i><br /><font face="courier">500</font></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<table border="0">
|
||||
<tr>
|
||||
<td colspan="2"><i>Inventory Entries</i></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><i>Type</i></td>
|
||||
<td><i>Unique Identifier (For Blocks, A Header Hash)</i></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><font face="courier">block</font></td>
|
||||
<td><font face="courier">4860eb18bf1b1620...688e9a8300000000</font></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><font face="courier">block</font></td>
|
||||
<td><font face="courier">bddd99ccfda39da1...065f626a00000000</font></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2"><i>...............498 more inventory entries...............</i></td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>>];
|
||||
|
||||
label = "First inv message reply sent to Initial Blocks Download (IBD) node"
|
||||
}
|
BIN
img/dev/en-ibd-inv.png
Normal file
After Width: | Height: | Size: 16 KiB |
65
img/dev/en-ibd-inv.svg
Normal file
|
@ -0,0 +1,65 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Generated by graphviz version 2.38.0 (20140413.2041)
|
||||
-->
|
||||
<!-- Title: %3 Pages: 1 -->
|
||||
<svg width="450pt" height="234pt"
|
||||
viewBox="0.00 0.00 450.00 234.41" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g id="graph0" class="graph" transform="scale(0.783972 0.783972) rotate(0) translate(4 295)">
|
||||
<title>%3</title>
|
||||
<polygon fill="white" stroke="none" points="-4,4 -4,-295 570,-295 570,4 -4,4"/>
|
||||
<text text-anchor="middle" x="283" y="-7.8" font-family="Sans" font-size="14.00">First inv message reply sent to Initial Blocks Download (IBD) node</text>
|
||||
<!-- ibd -->
|
||||
<g id="node1" class="node"><title>ibd</title>
|
||||
<text text-anchor="middle" x="27" y="-275.8" font-family="Sans" font-size="14.00">IBD</text>
|
||||
<text text-anchor="middle" x="27" y="-260.8" font-family="Sans" font-size="14.00">Node</text>
|
||||
</g>
|
||||
<!-- inv -->
|
||||
<g id="node2" class="node"><title>inv</title>
|
||||
<text text-anchor="start" x="232.5" y="-268.8" font-family="Sans" font-weight="bold" font-size="14.00">Inv Message</text>
|
||||
<text text-anchor="start" x="225.5" y="-245.8" font-family="Sans" font-style="italic" font-size="14.00">Message Header</text>
|
||||
<polygon fill="none" stroke="black" points="80,-203 80,-237 221,-237 221,-203 80,-203"/>
|
||||
<text text-anchor="start" x="110.5" y="-223.8" font-family="Sans" font-style="italic" font-size="14.00">Start String</text>
|
||||
<text text-anchor="start" x="117" y="-209.8" font-family="Courier,monospace" font-size="14.00">f9beb4d9</text>
|
||||
<polygon fill="none" stroke="black" points="223,-203 223,-237 327,-237 327,-203 223,-203"/>
|
||||
<text text-anchor="start" x="240" y="-223.8" font-family="Sans" font-style="italic" font-size="14.00">Command</text>
|
||||
<text text-anchor="start" x="262.5" y="-209.8" font-family="Courier,monospace" font-size="14.00">inv</text>
|
||||
<polygon fill="none" stroke="black" points="329,-203 329,-237 391,-237 391,-203 329,-203"/>
|
||||
<text text-anchor="start" x="345.5" y="-223.8" font-family="Sans" font-style="italic" font-size="14.00">Size</text>
|
||||
<text text-anchor="start" x="339" y="-209.8" font-family="Courier,monospace" font-size="14.00">18003</text>
|
||||
<polygon fill="none" stroke="black" points="393,-203 393,-237 486,-237 486,-203 393,-203"/>
|
||||
<text text-anchor="start" x="403" y="-223.8" font-family="Sans" font-style="italic" font-size="14.00">Checksum</text>
|
||||
<text text-anchor="start" x="406" y="-209.8" font-family="Courier,monospace" font-size="14.00">25173c57</text>
|
||||
<text text-anchor="start" x="255.5" y="-188.8" font-family="Sans" font-style="italic" font-size="14.00">Payload</text>
|
||||
<polygon fill="none" stroke="black" points="80,-146 80,-180 486,-180 486,-146 80,-146"/>
|
||||
<text text-anchor="start" x="86" y="-166.8" font-family="Sans" font-style="italic" font-size="14.00">Number Of Inventories (Max 500 In Reply To GetBlocks) </text>
|
||||
<text text-anchor="start" x="270.5" y="-152.8" font-family="Courier,monospace" font-size="14.00">500</text>
|
||||
<polygon fill="none" stroke="black" points="80,-31 80,-144 486,-144 486,-31 80,-31"/>
|
||||
<text text-anchor="start" x="222.5" y="-126.8" font-family="Sans" font-style="italic" font-size="14.00">Inventory Entries</text>
|
||||
<text text-anchor="start" x="98.5" y="-105.8" font-family="Sans" font-style="italic" font-size="14.00">Type</text>
|
||||
<text text-anchor="start" x="156" y="-105.8" font-family="Sans" font-style="italic" font-size="14.00">Unique Identifier (For Blocks, A Header Hash)</text>
|
||||
<text text-anchor="start" x="94" y="-83.8" font-family="Courier,monospace" font-size="14.00">block</text>
|
||||
<text text-anchor="start" x="169.5" y="-83.8" font-family="Courier,monospace" font-size="14.00">4860eb18bf1b1620...688e9a8300000000</text>
|
||||
<text text-anchor="start" x="94" y="-62.8" font-family="Courier,monospace" font-size="14.00">block</text>
|
||||
<text text-anchor="start" x="169.5" y="-62.8" font-family="Courier,monospace" font-size="14.00">bddd99ccfda39da1...065f626a00000000</text>
|
||||
<text text-anchor="start" x="120.5" y="-42.8" font-family="Sans" font-style="italic" font-size="14.00">...............498 more inventory entries...............</text>
|
||||
<polygon fill="none" stroke="black" stroke-width="2" points="77,-28 77,-286 489,-286 489,-28 77,-28"/>
|
||||
</g>
|
||||
<!-- ibd->inv -->
|
||||
<g id="edge1" class="edge"><title>ibd->inv:f1</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M64.0987,-272C72.4781,-272 79,-272 79,-272"/>
|
||||
<polygon fill="black" stroke="black" stroke-width="1.75" points="64.0976,-268.5 54.0976,-272 64.0976,-275.5 64.0976,-268.5"/>
|
||||
</g>
|
||||
<!-- sync -->
|
||||
<g id="node3" class="node"><title>sync</title>
|
||||
<text text-anchor="middle" x="539" y="-275.8" font-family="Sans" font-size="14.00">Sync</text>
|
||||
<text text-anchor="middle" x="539" y="-260.8" font-family="Sans" font-size="14.00">Node</text>
|
||||
</g>
|
||||
<!-- inv->sync -->
|
||||
<g id="edge2" class="edge"><title>inv:f1->sync</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M497.038,-272C501.35,-272 506.609,-272 511.902,-272"/>
|
||||
<polygon fill="black" stroke="black" stroke-width="1.75" points="497,-268.5 487,-272 497,-275.5 497,-268.5"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 5.1 KiB |
43
img/dev/en-orphan-stale-definition.dot
Normal file
|
@ -0,0 +1,43 @@
|
|||
digraph {
|
||||
// This file is licensed under the MIT License (MIT) available on
|
||||
// http://opensource.org/licenses/MIT.
|
||||
|
||||
size=6.25;
|
||||
rankdir=LR
|
||||
splines = "false";
|
||||
ranksep = 0.2;
|
||||
nodesep = 0.1;
|
||||
|
||||
edge [ penwidth = 1.75, fontname="Sans" ]
|
||||
node [ penwidth = 1.75, shape = "box", fontname="Sans", ]
|
||||
graph [ penwidth = 1.75, fontname="Sans" ]
|
||||
|
||||
subgraph cluster_mainchain {
|
||||
block0 [ label = "1\n←Parent: 0" ];
|
||||
block1 [ label = "2\n←Parent: 1" ];
|
||||
block2 [ label = "3\n←Parent: 2" ];
|
||||
|
||||
style = "invis";
|
||||
}
|
||||
|
||||
block0 -> block1 -> block2;
|
||||
|
||||
block0 -> block1_1;
|
||||
|
||||
block2 -> block5 [ style = "invis", minlen = 4 ];
|
||||
|
||||
|
||||
block1_1 [ label = "2 (Stale)\n←Parent: 1", style = "filled" ];
|
||||
|
||||
block5 [ label = "5 (Orphan)\n←Parent: 4", style = "filled" ];
|
||||
|
||||
subgraph cluster_toplabel {
|
||||
node [ style = "invis", height = 0, width = 0, label = "" ];
|
||||
graph [ penwidth = 0 ];
|
||||
a -> b -> c -> d -> e -> f -> g [ style = "invis" ];
|
||||
label = "Orphan blocks have no known parent, so they can't be validated"
|
||||
}
|
||||
|
||||
label = " \nStale blocks are valid but not part of the best block chain"
|
||||
|
||||
}
|
BIN
img/dev/en-orphan-stale-definition.png
Normal file
After Width: | Height: | Size: 6.5 KiB |
80
img/dev/en-orphan-stale-definition.svg
Normal file
|
@ -0,0 +1,80 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Generated by graphviz version 2.26.3 (20100126.1600)
|
||||
-->
|
||||
<!-- Title: _anonymous_0 Pages: 1 -->
|
||||
<svg width="450pt" height="196pt"
|
||||
viewBox="0.00 0.00 450.00 195.85" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g id="graph1" class="graph" transform="scale(0.910931 0.910931) rotate(0) translate(4 211)">
|
||||
<title>_anonymous_0</title>
|
||||
<polygon fill="white" stroke="white" points="-4,5 -4,-211 491,-211 491,5 -4,5"/>
|
||||
<text text-anchor="middle" x="243" y="-25.4" font-family="Sans" font-size="14.00"> </text>
|
||||
<text text-anchor="middle" x="243" y="-8.4" font-family="Sans" font-size="14.00">Stale blocks are valid but not part of the best block chain</text>
|
||||
<g id="graph2" class="cluster"><title>cluster_mainchain</title>
|
||||
</g>
|
||||
<g id="graph3" class="cluster"><title>cluster_toplabel</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="0" points="15,-158 15,-199 478,-199 478,-158 15,-158"/>
|
||||
<text text-anchor="middle" x="246.5" y="-182.4" font-family="Sans" font-size="14.00">Orphan blocks have no known parent, so they can't be validated</text>
|
||||
</g>
|
||||
<!-- block0 -->
|
||||
<g id="node2" class="node"><title>block0</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="108,-142 16,-142 16,-100 108,-100 108,-142"/>
|
||||
<text text-anchor="middle" x="62" y="-125.4" font-family="Sans" font-size="14.00">1</text>
|
||||
<text text-anchor="middle" x="62" y="-108.4" font-family="Sans" font-size="14.00">←Parent: 0</text>
|
||||
</g>
|
||||
<!-- block1 -->
|
||||
<g id="node3" class="node"><title>block1</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="214,-142 122,-142 122,-100 214,-100 214,-142"/>
|
||||
<text text-anchor="middle" x="168" y="-125.4" font-family="Sans" font-size="14.00">2</text>
|
||||
<text text-anchor="middle" x="168" y="-108.4" font-family="Sans" font-size="14.00">←Parent: 1</text>
|
||||
</g>
|
||||
<!-- block0->block1 -->
|
||||
<g id="edge3" class="edge"><title>block0->block1</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M108.185,-121C109.328,-121 110.477,-121 111.627,-121"/>
|
||||
<polygon fill="black" stroke="black" points="111.977,-124.5 121.977,-121 111.977,-117.5 111.977,-124.5"/>
|
||||
</g>
|
||||
<!-- block1_1 -->
|
||||
<g id="node7" class="node"><title>block1_1</title>
|
||||
<polygon fill="lightgrey" stroke="black" stroke-width="1.75" points="214,-84 122,-84 122,-42 214,-42 214,-84"/>
|
||||
<text text-anchor="middle" x="168" y="-67.4" font-family="Sans" font-size="14.00">2 (Stale)</text>
|
||||
<text text-anchor="middle" x="168" y="-50.4" font-family="Sans" font-size="14.00">←Parent: 1</text>
|
||||
</g>
|
||||
<!-- block0->block1_1 -->
|
||||
<g id="edge6" class="edge"><title>block0->block1_1</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M100.568,-99.8966C106.998,-96.3782 113.735,-92.692 120.359,-89.0675"/>
|
||||
<polygon fill="black" stroke="black" points="122.19,-92.0555 129.283,-84.1849 118.83,-85.9146 122.19,-92.0555"/>
|
||||
</g>
|
||||
<!-- block2 -->
|
||||
<g id="node4" class="node"><title>block2</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="320,-142 228,-142 228,-100 320,-100 320,-142"/>
|
||||
<text text-anchor="middle" x="274" y="-125.4" font-family="Sans" font-size="14.00">3</text>
|
||||
<text text-anchor="middle" x="274" y="-108.4" font-family="Sans" font-size="14.00">←Parent: 2</text>
|
||||
</g>
|
||||
<!-- block1->block2 -->
|
||||
<g id="edge4" class="edge"><title>block1->block2</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M214.185,-121C215.328,-121 216.477,-121 217.627,-121"/>
|
||||
<polygon fill="black" stroke="black" points="217.977,-124.5 227.977,-121 217.977,-117.5 217.977,-124.5"/>
|
||||
</g>
|
||||
<!-- block5 -->
|
||||
<g id="node9" class="node"><title>block5</title>
|
||||
<polygon fill="lightgrey" stroke="black" stroke-width="1.75" points="476,-142 384,-142 384,-100 476,-100 476,-142"/>
|
||||
<text text-anchor="middle" x="430" y="-125.4" font-family="Sans" font-size="14.00">5 (Orphan)</text>
|
||||
<text text-anchor="middle" x="430" y="-108.4" font-family="Sans" font-size="14.00">←Parent: 4</text>
|
||||
</g>
|
||||
<!-- block2->block5 -->
|
||||
<!-- a -->
|
||||
<!-- b -->
|
||||
<!-- a->b -->
|
||||
<!-- c -->
|
||||
<!-- b->c -->
|
||||
<!-- d -->
|
||||
<!-- c->d -->
|
||||
<!-- e -->
|
||||
<!-- d->e -->
|
||||
<!-- f -->
|
||||
<!-- e->f -->
|
||||
<!-- g -->
|
||||
<!-- f->g -->
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 4.3 KiB |