Dev Docs: Add P2P Messages That Request Or Reply With Data
Adds to the devel reference page detailed documentation on the following messages: block, getblocks, getdata, getheaders, headers, inv, mempool, merkleblock, notfound, and tx. Adds to the devel examples page an example of requesting and parsing a merkleblock message. Adds to the devel docs overview pages links to the above two new P2P sections. Tweaks the autocrossref plugin ignore pattern to not crossref in the middle of a GIF image name; this allows the inclusion of animated GIFs.
BIN
img/dev/animated-en-merkleblock-creation.gif
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
img/dev/animated-en-merkleblock-parsing.gif
Normal file
After Width: | Height: | Size: 14 KiB |
36
img/dev/en-p2p-data-messages.dot
Normal file
|
@ -0,0 +1,36 @@
|
|||
digraph {
|
||||
|
||||
size="6.25";
|
||||
rankdir=LR
|
||||
nodesep=0.05;
|
||||
ranksep=0.1;
|
||||
splines="false"
|
||||
|
||||
edge [ penwidth = 1.75, fontname="Sans", dir="none" ]
|
||||
node [ penwidth = 1.75, shape = "box", fontname="Sans", ]
|
||||
graph [ penwidth = 1.75, fontname="Sans" ]
|
||||
|
||||
getblocks -> inv;
|
||||
mempool -> inv;
|
||||
|
||||
inv -> getdata;
|
||||
|
||||
getdata -> tx;
|
||||
getdata -> block;
|
||||
getdata -> merkleblock;
|
||||
getdata -> notfound;
|
||||
|
||||
getheaders -> headers [ minlen = 3 ];
|
||||
|
||||
{
|
||||
node [ shape = "none" ];
|
||||
label1 [ label = "Request For Help\nGetting Up To Date" ];
|
||||
label2 [ label = "Reply With\nInventory" ];
|
||||
label3 [ label = "Request For Specific Data" ];
|
||||
label4 [ label = "Reply With\nRequested Data" ];
|
||||
|
||||
label1 -> label2 -> label3 -> label4 [style = "invis" ];
|
||||
}
|
||||
|
||||
label = "Overview Of P2P Protocol Data Request And Reply Messages"
|
||||
}
|
BIN
img/dev/en-p2p-data-messages.png
Normal file
After Width: | Height: | Size: 7.5 KiB |
118
img/dev/en-p2p-data-messages.svg
Normal file
|
@ -0,0 +1,118 @@
|
|||
<?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="208pt"
|
||||
viewBox="0.00 0.00 450.00 207.63" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g id="graph1" class="graph" transform="scale(0.755034 0.755034) rotate(0) translate(4 271)">
|
||||
<title>_anonymous_0</title>
|
||||
<polygon fill="white" stroke="white" points="-4,5 -4,-271 593,-271 593,5 -4,5"/>
|
||||
<text text-anchor="middle" x="294" y="-8.4" font-family="Sans" font-size="14.00">Overview Of P2P Protocol Data Request And Reply Messages</text>
|
||||
<!-- getblocks -->
|
||||
<g id="node1" class="node"><title>getblocks</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="116,-141 36,-141 36,-105 116,-105 116,-141"/>
|
||||
<text text-anchor="middle" x="76" y="-118.9" font-family="Sans" font-size="14.00">getblocks</text>
|
||||
</g>
|
||||
<!-- inv -->
|
||||
<g id="node3" class="node"><title>inv</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="233,-121 179,-121 179,-85 233,-85 233,-121"/>
|
||||
<text text-anchor="middle" x="206" y="-98.9" font-family="Sans" font-size="14.00">inv</text>
|
||||
</g>
|
||||
<!-- getblocks->inv -->
|
||||
<g id="edge2" class="edge"><title>getblocks->inv</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M116.776,-116.727C137.03,-113.611 160.945,-109.931 178.916,-107.167"/>
|
||||
</g>
|
||||
<!-- getdata -->
|
||||
<g id="node7" class="node"><title>getdata</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="391,-121 321,-121 321,-85 391,-85 391,-121"/>
|
||||
<text text-anchor="middle" x="356" y="-98.9" font-family="Sans" font-size="14.00">getdata</text>
|
||||
</g>
|
||||
<!-- inv->getdata -->
|
||||
<g id="edge6" class="edge"><title>inv->getdata</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M233.164,-103C257.732,-103 294.053,-103 320.831,-103"/>
|
||||
</g>
|
||||
<!-- mempool -->
|
||||
<g id="node4" class="node"><title>mempool</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="115,-101 37,-101 37,-65 115,-65 115,-101"/>
|
||||
<text text-anchor="middle" x="76" y="-78.9" font-family="Sans" font-size="14.00">mempool</text>
|
||||
</g>
|
||||
<!-- mempool->inv -->
|
||||
<g id="edge4" class="edge"><title>mempool->inv</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M115.711,-89.1093C136.17,-92.2569 160.59,-96.0138 178.871,-98.8264"/>
|
||||
</g>
|
||||
<!-- tx -->
|
||||
<g id="node9" class="node"><title>tx</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="551,-181 497,-181 497,-145 551,-145 551,-181"/>
|
||||
<text text-anchor="middle" x="524" y="-158.9" font-family="Sans" font-size="14.00">tx</text>
|
||||
</g>
|
||||
<!-- getdata->tx -->
|
||||
<g id="edge8" class="edge"><title>getdata->tx</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M391.218,-115.578C422.681,-126.815 468.117,-143.042 496.844,-153.301"/>
|
||||
</g>
|
||||
<!-- block -->
|
||||
<g id="node11" class="node"><title>block</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="551,-141 497,-141 497,-105 551,-105 551,-141"/>
|
||||
<text text-anchor="middle" x="524" y="-118.9" font-family="Sans" font-size="14.00">block</text>
|
||||
</g>
|
||||
<!-- getdata->block -->
|
||||
<g id="edge10" class="edge"><title>getdata->block</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M391.218,-107.193C422.681,-110.938 468.117,-116.347 496.844,-119.767"/>
|
||||
</g>
|
||||
<!-- merkleblock -->
|
||||
<g id="node13" class="node"><title>merkleblock</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="573,-101 475,-101 475,-65 573,-65 573,-101"/>
|
||||
<text text-anchor="middle" x="524" y="-78.9" font-family="Sans" font-size="14.00">merkleblock</text>
|
||||
</g>
|
||||
<!-- getdata->merkleblock -->
|
||||
<g id="edge12" class="edge"><title>getdata->merkleblock</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M391.218,-98.8073C415.369,-95.9323 447.752,-92.0772 474.492,-88.8939"/>
|
||||
</g>
|
||||
<!-- notfound -->
|
||||
<g id="node15" class="node"><title>notfound</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="563,-61 485,-61 485,-25 563,-25 563,-61"/>
|
||||
<text text-anchor="middle" x="524" y="-38.9" font-family="Sans" font-size="14.00">notfound</text>
|
||||
</g>
|
||||
<!-- getdata->notfound -->
|
||||
<g id="edge14" class="edge"><title>getdata->notfound</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M391.218,-90.422C418.448,-80.6973 456.143,-67.2348 484.415,-57.1376"/>
|
||||
</g>
|
||||
<!-- getheaders -->
|
||||
<g id="node16" class="node"><title>getheaders</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="123,-221 29,-221 29,-185 123,-185 123,-221"/>
|
||||
<text text-anchor="middle" x="76" y="-198.9" font-family="Sans" font-size="14.00">getheaders</text>
|
||||
</g>
|
||||
<!-- headers -->
|
||||
<g id="node18" class="node"><title>headers</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="559,-221 489,-221 489,-185 559,-185 559,-221"/>
|
||||
<text text-anchor="middle" x="524" y="-198.9" font-family="Sans" font-size="14.00">headers</text>
|
||||
</g>
|
||||
<!-- getheaders->headers -->
|
||||
<g id="edge16" class="edge"><title>getheaders->headers</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M123.097,-203C213.183,-203 408.074,-203 488.344,-203"/>
|
||||
</g>
|
||||
<!-- label1 -->
|
||||
<g id="node20" class="node"><title>label1</title>
|
||||
<text text-anchor="middle" x="76" y="-250.4" font-family="Sans" font-size="14.00">Request For Help</text>
|
||||
<text text-anchor="middle" x="76" y="-233.4" font-family="Sans" font-size="14.00">Getting Up To Date</text>
|
||||
</g>
|
||||
<!-- label2 -->
|
||||
<g id="node21" class="node"><title>label2</title>
|
||||
<text text-anchor="middle" x="206" y="-250.4" font-family="Sans" font-size="14.00">Reply With</text>
|
||||
<text text-anchor="middle" x="206" y="-233.4" font-family="Sans" font-size="14.00">Inventory</text>
|
||||
</g>
|
||||
<!-- label1->label2 -->
|
||||
<!-- label3 -->
|
||||
<g id="node22" class="node"><title>label3</title>
|
||||
<text text-anchor="middle" x="356" y="-241.9" font-family="Sans" font-size="14.00">Request For Specific Data</text>
|
||||
</g>
|
||||
<!-- label2->label3 -->
|
||||
<!-- label4 -->
|
||||
<g id="node23" class="node"><title>label4</title>
|
||||
<text text-anchor="middle" x="524" y="-250.4" font-family="Sans" font-size="14.00">Reply With</text>
|
||||
<text text-anchor="middle" x="524" y="-233.4" font-family="Sans" font-size="14.00">Requested Data</text>
|
||||
</g>
|
||||
<!-- label3->label4 -->
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 6.3 KiB |
31
img/dev/gifs/README.md
Normal file
|
@ -0,0 +1,31 @@
|
|||
# Some Animated GIF Hints
|
||||
|
||||
An excellent set of background information can be found here:
|
||||
|
||||
http://www.imagemagick.org/Usage/anim_basics/
|
||||
|
||||
1. Create source images. GraphViz supports direct GIF output, but its
|
||||
white background is not-quite-white and its transparent backgroud is
|
||||
hideous---so we output to PNG and then convert to GIF.
|
||||
|
||||
for f in *dot ; do dot -o ${f/.dot}.png -T png $f ; done
|
||||
|
||||
2. Create animated GIF using ImageMagick. Manually prefix first frame
|
||||
and suffix last frame to provide a brief pause in the animation on
|
||||
those frames. This wastes space but the optimization removes all of
|
||||
that wasted space except for 3 bytes.
|
||||
|
||||
convert -delay 100 \
|
||||
en-merkleblock-parsing-001.gif \
|
||||
*gif \
|
||||
en-merkleblock-parsing-011.gif \
|
||||
-loop 0 \
|
||||
animated-en-merkleblock-parsing.gif
|
||||
|
||||
3. Compress animated GIF (118 KB -> 15 KB in this example). You may need
|
||||
to play with color settings; 8 worked in this example but 4 was too
|
||||
few. Fewer colors (base-2) results in much better compression.
|
||||
|
||||
gifsicle -b -O3 --colors 8 --no-background \
|
||||
animated-en-merkleblock-parsing.gif
|
||||
|
|
@ -0,0 +1,148 @@
|
|||
digraph merkleblock {
|
||||
|
||||
//size="6.25,2.22";
|
||||
size="6.25";
|
||||
rankdir=BT
|
||||
nodesep=0.07
|
||||
splines="false"
|
||||
|
||||
edge [ penwidth = 1.75, fontname="Sans" ]
|
||||
node [ penwidth = 1.75, shape = "box", fontname="Sans", ]
|
||||
graph [ penwidth = 1.75, fontname="Sans", fontsize = 16 ]
|
||||
|
||||
subgraph cluster_flags {
|
||||
node [ label = "", width=0.2, height=0.2, fontsize = 14, shape = "none", style = "invis" ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
flag8 [ label = "0" ];
|
||||
flag7 [ label = "0" ];
|
||||
flag6 [ label = "0" ];
|
||||
flag5 [ label = "1" ];
|
||||
flag4 [ label = "1" ];
|
||||
flag3 [ label = "1" ];
|
||||
flag2 [ label = "0" ];
|
||||
flag1 [ label = "1" ];
|
||||
flag_label [ label = "Flags", style = "", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
subgraph cluster_hashes {
|
||||
graph [ penwidth = 0 ];
|
||||
node [ shape = "none", style = "invis" ];
|
||||
|
||||
hash4 [ label = "H4" ];
|
||||
hash3 [ label = "H3" ];
|
||||
hash2 [ label = "H2" ];
|
||||
hash1 [ label = "H1" ];
|
||||
hash_label [ label = "Hashes", style = "", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
hash_label -> flag_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_legend {
|
||||
node [ label = "", fontsize = 18 ];
|
||||
graph [ penwidth = 0 ];
|
||||
edge [ style = "invis" ];
|
||||
ranksep = 3;
|
||||
|
||||
|
||||
{
|
||||
node [ shape = "none" ];
|
||||
matched_filter_label [ label = "Match Or\nMatch\nAncestor" ];
|
||||
hash_from_list_label [ label = "Hash\nOn\nList" ];
|
||||
hash_computed_label [ label = "Hash\nNot\nNeeded" ];
|
||||
waiting_label [ label = "Wait\nFor\nChild" ];
|
||||
}
|
||||
|
||||
matched_filter [ penwidth = 4 ];
|
||||
hash_from_list [ label = "H1", style = "diagonals" ];
|
||||
hash_computed [ label = "" ];
|
||||
waiting [ label = "↓" ];
|
||||
|
||||
pre_legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
pre_legend_label -> legend_label [ style = "invis" ];
|
||||
|
||||
|
||||
|
||||
waiting_label -> waiting;
|
||||
hash_from_list_label -> hash_from_list;
|
||||
hash_computed_label -> hash_computed;
|
||||
matched_filter_label -> matched_filter;
|
||||
|
||||
labelloc = b;
|
||||
label = "Legend"
|
||||
|
||||
}
|
||||
|
||||
legend_label -> hash_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_tree {
|
||||
edge [ dir = "none" ];
|
||||
node [ label = "", fontsize = 16 ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
{
|
||||
root_row [ shape = "none" ];
|
||||
row1 [ shape = "none", label = "Non-TXID\nNodes" ];
|
||||
row2 [ shape = "none", style = "invis", width = 1.2 ];
|
||||
txid_row [ label = "TXID\nNodes", shape = "none" ];
|
||||
|
||||
row2 -> row1 [ dir = "back" ];
|
||||
row1 -> root_row [ dir = ""];
|
||||
txid_row -> row2 [ style = "invis" ];
|
||||
}
|
||||
|
||||
G [ label = "H7" ];
|
||||
F [ label = "H6" ];
|
||||
E [ label = "H5" ];
|
||||
D [ label = "H4" ];
|
||||
C [ label = "H3" ];
|
||||
B [ label = "H2" ];
|
||||
A [ label = "H1" ];
|
||||
|
||||
A -> AB;
|
||||
B -> AB;
|
||||
C -> CD;
|
||||
D -> CD;
|
||||
E -> EF;
|
||||
F -> EF;
|
||||
G -> G2;
|
||||
|
||||
AB [ label = "H8" ];
|
||||
CD [ label = "H9" ];
|
||||
EF [ label = "H10" ];
|
||||
G2 [ label = "H11" ];
|
||||
|
||||
AB -> A [ constraint = false, style = "invis" ];
|
||||
AB -> B [ constraint = false, style = "invis" ];
|
||||
CD -> C [ constraint = false, style = "invis" ];
|
||||
CD -> D [ constraint = false, style = "invis" ];
|
||||
EF -> E [ constraint = false, style = "invis" ];
|
||||
EF -> F [ constraint = false, style = "invis" ];
|
||||
G2 -> G [ constraint = false, style = "invis" ];
|
||||
|
||||
AB -> ABCD;
|
||||
CD -> ABCD;
|
||||
EF -> EFG2;
|
||||
G2 -> EFG2;
|
||||
|
||||
ABCD -> AB [ constraint = false, style = "invis" ];
|
||||
ABCD -> CD [ constraint = false, style = "invis" ];
|
||||
EFG2 -> EF [ constraint = false, style = "invis" ];
|
||||
EFG2 -> G2 [ constraint = false, style = "invis" ];
|
||||
|
||||
ABCD [ label = "H12" ];
|
||||
EFG2 [ label = "H13" ];
|
||||
|
||||
ABCD -> ROOT;
|
||||
EFG2 -> ROOT;
|
||||
|
||||
ROOT -> ABCD [ constraint = false, style = "invis" ];
|
||||
ROOT -> EFG2 [ constraint = false, style = "invis" ];
|
||||
|
||||
ROOT [ label = "H14" ];
|
||||
|
||||
}
|
||||
|
||||
//label = "Parsing A MerkleBlock Message"
|
||||
}
|
|
@ -0,0 +1,148 @@
|
|||
digraph merkleblock {
|
||||
|
||||
//size="6.25,2.22";
|
||||
size="6.25";
|
||||
rankdir=BT
|
||||
nodesep=0.07
|
||||
splines="false"
|
||||
|
||||
edge [ penwidth = 1.75, fontname="Sans" ]
|
||||
node [ penwidth = 1.75, shape = "box", fontname="Sans", ]
|
||||
graph [ penwidth = 1.75, fontname="Sans", fontsize = 16 ]
|
||||
|
||||
subgraph cluster_flags {
|
||||
node [ label = "", width=0.2, height=0.2, fontsize = 14, shape = "none", style = "invis" ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
flag8 [ label = "0" ];
|
||||
flag7 [ label = "0" ];
|
||||
flag6 [ label = "0" ];
|
||||
flag5 [ label = "1" ];
|
||||
flag4 [ label = "1" ];
|
||||
flag3 [ label = "1" ];
|
||||
flag2 [ label = "0" ];
|
||||
flag1 [ label = "1" ];
|
||||
flag_label [ label = "Flags", style = "", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
subgraph cluster_hashes {
|
||||
graph [ penwidth = 0 ];
|
||||
node [ shape = "none", style = "invis" ];
|
||||
|
||||
hash4 [ label = "H4" ];
|
||||
hash3 [ label = "H3" ];
|
||||
hash2 [ label = "H2" ];
|
||||
hash1 [ label = "H1" ];
|
||||
hash_label [ label = "Hashes", style = "", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
hash_label -> flag_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_legend {
|
||||
node [ label = "", fontsize = 18 ];
|
||||
graph [ penwidth = 0 ];
|
||||
edge [ style = "invis" ];
|
||||
ranksep = 3;
|
||||
|
||||
|
||||
{
|
||||
node [ shape = "none" ];
|
||||
matched_filter_label [ label = "Match Or\nMatch\nAncestor" ];
|
||||
hash_from_list_label [ label = "Hash\nOn\nList" ];
|
||||
hash_computed_label [ label = "Hash\nNot\nNeeded" ];
|
||||
waiting_label [ label = "Wait\nFor\nChild" ];
|
||||
}
|
||||
|
||||
matched_filter [ penwidth = 4 ];
|
||||
hash_from_list [ label = "H1", style = "diagonals" ];
|
||||
hash_computed [ label = "" ];
|
||||
waiting [ label = "↓" ];
|
||||
|
||||
pre_legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
pre_legend_label -> legend_label [ style = "invis" ];
|
||||
|
||||
|
||||
|
||||
waiting_label -> waiting;
|
||||
hash_from_list_label -> hash_from_list;
|
||||
hash_computed_label -> hash_computed;
|
||||
matched_filter_label -> matched_filter;
|
||||
|
||||
labelloc = b;
|
||||
label = "Legend"
|
||||
|
||||
}
|
||||
|
||||
legend_label -> hash_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_tree {
|
||||
edge [ dir = "none" ];
|
||||
node [ label = "", fontsize = 16 ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
{
|
||||
root_row [ shape = "none" ];
|
||||
row1 [ shape = "none", label = "Non-TXID\nNodes" ];
|
||||
row2 [ shape = "none", style = "invis", width = 1.2 ];
|
||||
txid_row [ label = "TXID\nNodes", shape = "none" ];
|
||||
|
||||
row2 -> row1 [ dir = "back" ];
|
||||
row1 -> root_row [ dir = ""];
|
||||
txid_row -> row2 [ style = "invis" ];
|
||||
}
|
||||
|
||||
G [ label = "H7" ];
|
||||
F [ label = "H6" ];
|
||||
E [ label = "H5", penwidth = 4 ];
|
||||
D [ label = "H4" ];
|
||||
C [ label = "H3" ];
|
||||
B [ label = "H2" ];
|
||||
A [ label = "H1" ];
|
||||
|
||||
A -> AB;
|
||||
B -> AB;
|
||||
C -> CD;
|
||||
D -> CD;
|
||||
E -> EF;
|
||||
F -> EF;
|
||||
G -> G2;
|
||||
|
||||
AB [ label = "H8" ];
|
||||
CD [ label = "H9" ];
|
||||
EF [ label = "H10", penwidth = 4 ];
|
||||
G2 [ label = "H11" ];
|
||||
|
||||
AB -> A [ constraint = false, style = "invis" ];
|
||||
AB -> B [ constraint = false, style = "invis" ];
|
||||
CD -> C [ constraint = false, style = "invis" ];
|
||||
CD -> D [ constraint = false, style = "invis" ];
|
||||
EF -> E [ constraint = false, style = "invis" ];
|
||||
EF -> F [ constraint = false, style = "invis" ];
|
||||
G2 -> G [ constraint = false, style = "invis" ];
|
||||
|
||||
AB -> ABCD;
|
||||
CD -> ABCD;
|
||||
EF -> EFG2;
|
||||
G2 -> EFG2;
|
||||
|
||||
ABCD -> AB [ constraint = false, style = "invis" ];
|
||||
ABCD -> CD [ constraint = false, style = "invis" ];
|
||||
EFG2 -> EF [ constraint = false, style = "invis" ];
|
||||
EFG2 -> G2 [ constraint = false, style = "invis" ];
|
||||
|
||||
ABCD [ label = "H12" ];
|
||||
EFG2 [ label = "H13", penwidth = 4 ];
|
||||
|
||||
ABCD -> ROOT;
|
||||
EFG2 -> ROOT;
|
||||
|
||||
ROOT -> ABCD [ constraint = false, style = "invis" ];
|
||||
ROOT -> EFG2 [ constraint = false, style = "invis" ];
|
||||
|
||||
ROOT [ label = "H14", penwidth = 4 ];
|
||||
|
||||
}
|
||||
|
||||
//label = "Parsing A MerkleBlock Message"
|
||||
}
|
|
@ -0,0 +1,148 @@
|
|||
digraph merkleblock {
|
||||
|
||||
//size="6.25,2.22";
|
||||
size="6.25";
|
||||
rankdir=BT
|
||||
nodesep=0.07
|
||||
splines="false"
|
||||
|
||||
edge [ penwidth = 1.75, fontname="Sans" ]
|
||||
node [ penwidth = 1.75, shape = "box", fontname="Sans", ]
|
||||
graph [ penwidth = 1.75, fontname="Sans", fontsize = 16 ]
|
||||
|
||||
subgraph cluster_flags {
|
||||
node [ label = "", width=0.2, height=0.2, fontsize = 14, shape = "none", style = "invis" ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
flag8 [ label = "0" ];
|
||||
flag7 [ label = "0" ];
|
||||
flag6 [ label = "0" ];
|
||||
flag5 [ label = "1" ];
|
||||
flag4 [ label = "1" ];
|
||||
flag3 [ label = "1" ];
|
||||
flag2 [ label = "0" ];
|
||||
flag1 [ label = "1", style = "filled" ];
|
||||
flag_label [ label = "Flags", style = "", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
subgraph cluster_hashes {
|
||||
graph [ penwidth = 0 ];
|
||||
node [ shape = "none", style = "invis" ];
|
||||
|
||||
hash4 [ label = "H4" ];
|
||||
hash3 [ label = "H3" ];
|
||||
hash2 [ label = "H2" ];
|
||||
hash1 [ label = "H1" ];
|
||||
hash_label [ label = "Hashes", style = "", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
hash_label -> flag_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_legend {
|
||||
node [ label = "", fontsize = 18 ];
|
||||
graph [ penwidth = 0 ];
|
||||
edge [ style = "invis" ];
|
||||
ranksep = 3;
|
||||
|
||||
|
||||
{
|
||||
node [ shape = "none" ];
|
||||
matched_filter_label [ label = "Match Or\nMatch\nAncestor" ];
|
||||
hash_from_list_label [ label = "Hash\nOn\nList" ];
|
||||
hash_computed_label [ label = "Hash\nNot\nNeeded" ];
|
||||
waiting_label [ label = "Wait\nFor\nChild" ];
|
||||
}
|
||||
|
||||
matched_filter [ penwidth = 4 ];
|
||||
hash_from_list [ label = "H1", style = "diagonals" ];
|
||||
hash_computed [ label = "" ];
|
||||
waiting [ label = "↓" ];
|
||||
|
||||
pre_legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
pre_legend_label -> legend_label [ style = "invis" ];
|
||||
|
||||
|
||||
|
||||
waiting_label -> waiting;
|
||||
hash_from_list_label -> hash_from_list;
|
||||
hash_computed_label -> hash_computed;
|
||||
matched_filter_label -> matched_filter;
|
||||
|
||||
labelloc = b;
|
||||
label = "Legend"
|
||||
|
||||
}
|
||||
|
||||
legend_label -> hash_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_tree {
|
||||
edge [ dir = "none" ];
|
||||
node [ label = "", fontsize = 16 ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
{
|
||||
root_row [ shape = "none" ];
|
||||
row1 [ shape = "none", label = "Non-TXID\nNodes" ];
|
||||
row2 [ shape = "none", style = "invis", width = 1.2 ];
|
||||
txid_row [ label = "TXID\nNodes", shape = "none" ];
|
||||
|
||||
row2 -> row1 [ dir = "back" ];
|
||||
row1 -> root_row [ dir = ""];
|
||||
txid_row -> row2 [ style = "invis" ];
|
||||
}
|
||||
|
||||
G [ label = "H7" ];
|
||||
F [ label = "H6" ];
|
||||
E [ label = "H5", penwidth = 4 ];
|
||||
D [ label = "H4" ];
|
||||
C [ label = "H3" ];
|
||||
B [ label = "H2" ];
|
||||
A [ label = "H1" ];
|
||||
|
||||
A -> AB;
|
||||
B -> AB;
|
||||
C -> CD;
|
||||
D -> CD;
|
||||
E -> EF;
|
||||
F -> EF;
|
||||
G -> G2;
|
||||
|
||||
AB [ label = "H8" ];
|
||||
CD [ label = "H9" ];
|
||||
EF [ label = "H10", penwidth = 4 ];
|
||||
G2 [ label = "H11" ];
|
||||
|
||||
AB -> A [ constraint = false, style = "invis" ];
|
||||
AB -> B [ constraint = false, style = "invis" ];
|
||||
CD -> C [ constraint = false, style = "invis" ];
|
||||
CD -> D [ constraint = false, style = "invis" ];
|
||||
EF -> E [ constraint = false, style = "invis" ];
|
||||
EF -> F [ constraint = false, style = "invis" ];
|
||||
G2 -> G [ constraint = false, style = "invis" ];
|
||||
|
||||
AB -> ABCD;
|
||||
CD -> ABCD;
|
||||
EF -> EFG2;
|
||||
G2 -> EFG2;
|
||||
|
||||
ABCD -> AB [ constraint = false, style = "invis" ];
|
||||
ABCD -> CD [ constraint = false, style = "invis" ];
|
||||
EFG2 -> EF [ constraint = false, style = "invis" ];
|
||||
EFG2 -> G2 [ constraint = false, style = "invis" ];
|
||||
|
||||
ABCD [ label = "H12" ];
|
||||
EFG2 [ label = "H13", penwidth = 4 ];
|
||||
|
||||
ABCD -> ROOT [ dir = "back" ];
|
||||
EFG2 -> ROOT;
|
||||
|
||||
ROOT -> ABCD [ constraint = false, style = "invis" ];
|
||||
ROOT -> EFG2 [ constraint = false, style = "invis" ];
|
||||
|
||||
ROOT [ label = "↓", penwidth = 4, style = "filled" ];
|
||||
|
||||
}
|
||||
|
||||
//label = "Parsing A MerkleBlock Message"
|
||||
}
|
|
@ -0,0 +1,148 @@
|
|||
digraph merkleblock {
|
||||
|
||||
//size="6.25,2.22";
|
||||
size="6.25";
|
||||
rankdir=BT
|
||||
nodesep=0.07
|
||||
splines="false"
|
||||
|
||||
edge [ penwidth = 1.75, fontname="Sans" ]
|
||||
node [ penwidth = 1.75, shape = "box", fontname="Sans", ]
|
||||
graph [ penwidth = 1.75, fontname="Sans", fontsize = 16 ]
|
||||
|
||||
subgraph cluster_flags {
|
||||
node [ label = "", width=0.2, height=0.2, fontsize = 14, shape = "none", style = "invis" ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
flag8 [ label = "0" ];
|
||||
flag7 [ label = "0" ];
|
||||
flag6 [ label = "0" ];
|
||||
flag5 [ label = "1" ];
|
||||
flag4 [ label = "1" ];
|
||||
flag3 [ label = "1" ];
|
||||
flag2 [ label = "0", style = "filled" ];
|
||||
flag1 [ label = "1", style = "" ];
|
||||
flag_label [ label = "Flags", style = "", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
subgraph cluster_hashes {
|
||||
graph [ penwidth = 0 ];
|
||||
node [ shape = "none", style = "invis" ];
|
||||
|
||||
hash4 [ label = "H4" ];
|
||||
hash3 [ label = "H3" ];
|
||||
hash2 [ label = "H2" ];
|
||||
hash1 [ label = "H12", style = "filled" ];
|
||||
hash_label [ label = "Hashes", style = "", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
hash_label -> flag_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_legend {
|
||||
node [ label = "", fontsize = 18 ];
|
||||
graph [ penwidth = 0 ];
|
||||
edge [ style = "invis" ];
|
||||
ranksep = 3;
|
||||
|
||||
|
||||
{
|
||||
node [ shape = "none" ];
|
||||
matched_filter_label [ label = "Match Or\nMatch\nAncestor" ];
|
||||
hash_from_list_label [ label = "Hash\nOn\nList" ];
|
||||
hash_computed_label [ label = "Hash\nNot\nNeeded" ];
|
||||
waiting_label [ label = "Wait\nFor\nChild" ];
|
||||
}
|
||||
|
||||
matched_filter [ penwidth = 4 ];
|
||||
hash_from_list [ label = "H1", style = "diagonals" ];
|
||||
hash_computed [ label = "" ];
|
||||
waiting [ label = "↓" ];
|
||||
|
||||
pre_legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
pre_legend_label -> legend_label [ style = "invis" ];
|
||||
|
||||
|
||||
|
||||
waiting_label -> waiting;
|
||||
hash_from_list_label -> hash_from_list;
|
||||
hash_computed_label -> hash_computed;
|
||||
matched_filter_label -> matched_filter;
|
||||
|
||||
labelloc = b;
|
||||
label = "Legend"
|
||||
|
||||
}
|
||||
|
||||
legend_label -> hash_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_tree {
|
||||
edge [ dir = "none" ];
|
||||
node [ label = "", fontsize = 16 ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
{
|
||||
root_row [ shape = "none" ];
|
||||
row1 [ shape = "none", label = "Non-TXID\nNodes" ];
|
||||
row2 [ shape = "none", style = "invis", width = 1.2 ];
|
||||
txid_row [ label = "TXID\nNodes", shape = "none" ];
|
||||
|
||||
row2 -> row1 [ dir = "back" ];
|
||||
row1 -> root_row [ dir = ""];
|
||||
txid_row -> row2 [ style = "invis" ];
|
||||
}
|
||||
|
||||
G [ label = "H7" ];
|
||||
F [ label = "H6" ];
|
||||
E [ label = "H5", penwidth = 4 ];
|
||||
D [ label = "" ];
|
||||
C [ label = "" ];
|
||||
B [ label = "" ];
|
||||
A [ label = "" ];
|
||||
|
||||
A -> AB;
|
||||
B -> AB;
|
||||
C -> CD;
|
||||
D -> CD;
|
||||
E -> EF;
|
||||
F -> EF;
|
||||
G -> G2;
|
||||
|
||||
AB [ label = "" ];
|
||||
CD [ label = "" ];
|
||||
EF [ label = "H10", penwidth = 4 ];
|
||||
G2 [ label = "H11" ];
|
||||
|
||||
AB -> A [ constraint = false, style = "invis" ];
|
||||
AB -> B [ constraint = false, style = "invis" ];
|
||||
CD -> C [ constraint = false, style = "invis" ];
|
||||
CD -> D [ constraint = false, style = "invis" ];
|
||||
EF -> E [ constraint = false, style = "invis" ];
|
||||
EF -> F [ constraint = false, style = "invis" ];
|
||||
G2 -> G [ constraint = false, style = "invis" ];
|
||||
|
||||
AB -> ABCD;
|
||||
CD -> ABCD;
|
||||
EF -> EFG2;
|
||||
G2 -> EFG2;
|
||||
|
||||
ABCD -> AB [ constraint = false, style = "invis" ];
|
||||
ABCD -> CD [ constraint = false, style = "invis" ];
|
||||
EFG2 -> EF [ constraint = false, style = "invis" ];
|
||||
EFG2 -> G2 [ constraint = false, style = "invis" ];
|
||||
|
||||
ABCD [ label = "H12", style = "diagonals,filled" ];
|
||||
EFG2 [ label = "H13", penwidth = 4 ];
|
||||
|
||||
ABCD -> ROOT [ dir = "back" ];
|
||||
EFG2 -> ROOT [ dir = "back" ];
|
||||
|
||||
ROOT -> ABCD [ constraint = false, dir = "back" ];
|
||||
ROOT -> EFG2 [ constraint = false, style = "invis" ];
|
||||
|
||||
ROOT [ label = "↓", penwidth = 4 ];
|
||||
|
||||
}
|
||||
|
||||
//label = "Parsing A MerkleBlock Message"
|
||||
}
|
|
@ -0,0 +1,148 @@
|
|||
digraph merkleblock {
|
||||
|
||||
//size="6.25,2.22";
|
||||
size="6.25";
|
||||
rankdir=BT
|
||||
nodesep=0.07
|
||||
splines="false"
|
||||
|
||||
edge [ penwidth = 1.75, fontname="Sans" ]
|
||||
node [ penwidth = 1.75, shape = "box", fontname="Sans", ]
|
||||
graph [ penwidth = 1.75, fontname="Sans", fontsize = 16 ]
|
||||
|
||||
subgraph cluster_flags {
|
||||
node [ label = "", width=0.2, height=0.2, fontsize = 14, shape = "none", style = "invis" ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
flag8 [ label = "0" ];
|
||||
flag7 [ label = "0" ];
|
||||
flag6 [ label = "0" ];
|
||||
flag5 [ label = "1" ];
|
||||
flag4 [ label = "1" ];
|
||||
flag3 [ label = "1", style = "filled" ];
|
||||
flag2 [ label = "0", style = "" ];
|
||||
flag1 [ label = "1", style = "" ];
|
||||
flag_label [ label = "Flags", style = "", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
subgraph cluster_hashes {
|
||||
graph [ penwidth = 0 ];
|
||||
node [ shape = "none", style = "invis" ];
|
||||
|
||||
hash4 [ label = "H4" ];
|
||||
hash3 [ label = "H3" ];
|
||||
hash2 [ label = "H2" ];
|
||||
hash1 [ label = "H12", style = "" ];
|
||||
hash_label [ label = "Hashes", style = "", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
hash_label -> flag_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_legend {
|
||||
node [ label = "", fontsize = 18 ];
|
||||
graph [ penwidth = 0 ];
|
||||
edge [ style = "invis" ];
|
||||
ranksep = 3;
|
||||
|
||||
|
||||
{
|
||||
node [ shape = "none" ];
|
||||
matched_filter_label [ label = "Match Or\nMatch\nAncestor" ];
|
||||
hash_from_list_label [ label = "Hash\nOn\nList" ];
|
||||
hash_computed_label [ label = "Hash\nNot\nNeeded" ];
|
||||
waiting_label [ label = "Wait\nFor\nChild" ];
|
||||
}
|
||||
|
||||
matched_filter [ penwidth = 4 ];
|
||||
hash_from_list [ label = "H1", style = "diagonals" ];
|
||||
hash_computed [ label = "" ];
|
||||
waiting [ label = "↓" ];
|
||||
|
||||
pre_legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
pre_legend_label -> legend_label [ style = "invis" ];
|
||||
|
||||
|
||||
|
||||
waiting_label -> waiting;
|
||||
hash_from_list_label -> hash_from_list;
|
||||
hash_computed_label -> hash_computed;
|
||||
matched_filter_label -> matched_filter;
|
||||
|
||||
labelloc = b;
|
||||
label = "Legend"
|
||||
|
||||
}
|
||||
|
||||
legend_label -> hash_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_tree {
|
||||
edge [ dir = "none" ];
|
||||
node [ label = "", fontsize = 16 ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
{
|
||||
root_row [ shape = "none" ];
|
||||
row1 [ shape = "none", label = "Non-TXID\nNodes" ];
|
||||
row2 [ shape = "none", style = "invis", width = 1.2 ];
|
||||
txid_row [ label = "TXID\nNodes", shape = "none" ];
|
||||
|
||||
row2 -> row1 [ dir = "back" ];
|
||||
row1 -> root_row [ dir = ""];
|
||||
txid_row -> row2 [ style = "invis" ];
|
||||
}
|
||||
|
||||
G [ label = "H7" ];
|
||||
F [ label = "H6" ];
|
||||
E [ label = "H5", penwidth = 4 ];
|
||||
D [ label = "" ];
|
||||
C [ label = "" ];
|
||||
B [ label = "" ];
|
||||
A [ label = "" ];
|
||||
|
||||
A -> AB;
|
||||
B -> AB;
|
||||
C -> CD;
|
||||
D -> CD;
|
||||
E -> EF;
|
||||
F -> EF;
|
||||
G -> G2;
|
||||
|
||||
AB [ label = "" ];
|
||||
CD [ label = "" ];
|
||||
EF [ label = "H10", penwidth = 4 ];
|
||||
G2 [ label = "H11" ];
|
||||
|
||||
AB -> A [ constraint = false, style = "invis" ];
|
||||
AB -> B [ constraint = false, style = "invis" ];
|
||||
CD -> C [ constraint = false, style = "invis" ];
|
||||
CD -> D [ constraint = false, style = "invis" ];
|
||||
EF -> E [ constraint = false, style = "invis" ];
|
||||
EF -> F [ constraint = false, style = "invis" ];
|
||||
G2 -> G [ constraint = false, style = "invis" ];
|
||||
|
||||
AB -> ABCD;
|
||||
CD -> ABCD;
|
||||
EF -> EFG2 [ dir = "back" ];
|
||||
G2 -> EFG2;
|
||||
|
||||
ABCD -> AB [ constraint = false, style = "invis" ];
|
||||
ABCD -> CD [ constraint = false, style = "invis" ];
|
||||
EFG2 -> EF [ constraint = false, style = "invis" ];
|
||||
EFG2 -> G2 [ constraint = false, style = "invis" ];
|
||||
|
||||
ABCD [ label = "H12", style = "diagonals" ];
|
||||
EFG2 [ label = "↓", penwidth = 4, style = "filled" ];
|
||||
|
||||
ABCD -> ROOT [ dir = "back" ];
|
||||
EFG2 -> ROOT [ dir = "back" ];
|
||||
|
||||
ROOT -> ABCD [ constraint = false, dir = "back" ];
|
||||
ROOT -> EFG2 [ constraint = false, style = "invis" ];
|
||||
|
||||
ROOT [ label = "↓", penwidth = 4 ];
|
||||
|
||||
}
|
||||
|
||||
//label = "Parsing A MerkleBlock Message"
|
||||
}
|
|
@ -0,0 +1,148 @@
|
|||
digraph merkleblock {
|
||||
|
||||
//size="6.25,2.22";
|
||||
size="6.25";
|
||||
rankdir=BT
|
||||
nodesep=0.07
|
||||
splines="false"
|
||||
|
||||
edge [ penwidth = 1.75, fontname="Sans" ]
|
||||
node [ penwidth = 1.75, shape = "box", fontname="Sans", ]
|
||||
graph [ penwidth = 1.75, fontname="Sans", fontsize = 16 ]
|
||||
|
||||
subgraph cluster_flags {
|
||||
node [ label = "", width=0.2, height=0.2, fontsize = 14, shape = "none", style = "invis" ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
flag8 [ label = "0" ];
|
||||
flag7 [ label = "0" ];
|
||||
flag6 [ label = "0" ];
|
||||
flag5 [ label = "1" ];
|
||||
flag4 [ label = "1", style = "filled" ];
|
||||
flag3 [ label = "1", style = "" ];
|
||||
flag2 [ label = "0", style = "" ];
|
||||
flag1 [ label = "1", style = "" ];
|
||||
flag_label [ label = "Flags", style = "", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
subgraph cluster_hashes {
|
||||
graph [ penwidth = 0 ];
|
||||
node [ shape = "none", style = "invis" ];
|
||||
|
||||
hash4 [ label = "H4" ];
|
||||
hash3 [ label = "H3" ];
|
||||
hash2 [ label = "H2" ];
|
||||
hash1 [ label = "H12", style = "" ];
|
||||
hash_label [ label = "Hashes", style = "", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
hash_label -> flag_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_legend {
|
||||
node [ label = "", fontsize = 18 ];
|
||||
graph [ penwidth = 0 ];
|
||||
edge [ style = "invis" ];
|
||||
ranksep = 3;
|
||||
|
||||
|
||||
{
|
||||
node [ shape = "none" ];
|
||||
matched_filter_label [ label = "Match Or\nMatch\nAncestor" ];
|
||||
hash_from_list_label [ label = "Hash\nOn\nList" ];
|
||||
hash_computed_label [ label = "Hash\nNot\nNeeded" ];
|
||||
waiting_label [ label = "Wait\nFor\nChild" ];
|
||||
}
|
||||
|
||||
matched_filter [ penwidth = 4 ];
|
||||
hash_from_list [ label = "H1", style = "diagonals" ];
|
||||
hash_computed [ label = "" ];
|
||||
waiting [ label = "↓" ];
|
||||
|
||||
pre_legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
pre_legend_label -> legend_label [ style = "invis" ];
|
||||
|
||||
|
||||
|
||||
waiting_label -> waiting;
|
||||
hash_from_list_label -> hash_from_list;
|
||||
hash_computed_label -> hash_computed;
|
||||
matched_filter_label -> matched_filter;
|
||||
|
||||
labelloc = b;
|
||||
label = "Legend"
|
||||
|
||||
}
|
||||
|
||||
legend_label -> hash_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_tree {
|
||||
edge [ dir = "none" ];
|
||||
node [ label = "", fontsize = 16 ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
{
|
||||
root_row [ shape = "none" ];
|
||||
row1 [ shape = "none", label = "Non-TXID\nNodes" ];
|
||||
row2 [ shape = "none", style = "invis", width = 1.2 ];
|
||||
txid_row [ label = "TXID\nNodes", shape = "none" ];
|
||||
|
||||
row2 -> row1 [ dir = "back" ];
|
||||
row1 -> root_row [ dir = ""];
|
||||
txid_row -> row2 [ style = "invis" ];
|
||||
}
|
||||
|
||||
G [ label = "H7" ];
|
||||
F [ label = "H6" ];
|
||||
E [ label = "H5", penwidth = 4 ];
|
||||
D [ label = "" ];
|
||||
C [ label = "" ];
|
||||
B [ label = "" ];
|
||||
A [ label = "" ];
|
||||
|
||||
A -> AB;
|
||||
B -> AB;
|
||||
C -> CD;
|
||||
D -> CD;
|
||||
E -> EF [ dir = "back" ];
|
||||
F -> EF;
|
||||
G -> G2;
|
||||
|
||||
AB [ label = "" ];
|
||||
CD [ label = "" ];
|
||||
EF [ label = "↓", penwidth = 4, style = "filled" ];
|
||||
G2 [ label = "H11" ];
|
||||
|
||||
AB -> A [ constraint = false, style = "invis" ];
|
||||
AB -> B [ constraint = false, style = "invis" ];
|
||||
CD -> C [ constraint = false, style = "invis" ];
|
||||
CD -> D [ constraint = false, style = "invis" ];
|
||||
EF -> E [ constraint = false, style = "invis" ];
|
||||
EF -> F [ constraint = false, style = "invis" ];
|
||||
G2 -> G [ constraint = false, style = "invis" ];
|
||||
|
||||
AB -> ABCD;
|
||||
CD -> ABCD;
|
||||
EF -> EFG2 [ dir = "back" ];
|
||||
G2 -> EFG2;
|
||||
|
||||
ABCD -> AB [ constraint = false, style = "invis" ];
|
||||
ABCD -> CD [ constraint = false, style = "invis" ];
|
||||
EFG2 -> EF [ constraint = false, style = "invis" ];
|
||||
EFG2 -> G2 [ constraint = false, style = "invis" ];
|
||||
|
||||
ABCD [ label = "H12", style = "diagonals" ];
|
||||
EFG2 [ label = "↓", penwidth = 4 ];
|
||||
|
||||
ABCD -> ROOT [ dir = "back" ];
|
||||
EFG2 -> ROOT [ dir = "back" ];
|
||||
|
||||
ROOT -> ABCD [ constraint = false, dir = "back" ];
|
||||
ROOT -> EFG2 [ constraint = false, style = "invis" ];
|
||||
|
||||
ROOT [ label = "↓", penwidth = 4 ];
|
||||
|
||||
}
|
||||
|
||||
//label = "Parsing A MerkleBlock Message"
|
||||
}
|
|
@ -0,0 +1,148 @@
|
|||
digraph merkleblock {
|
||||
|
||||
//size="6.25,2.22";
|
||||
size="6.25";
|
||||
rankdir=BT
|
||||
nodesep=0.07
|
||||
splines="false"
|
||||
|
||||
edge [ penwidth = 1.75, fontname="Sans" ]
|
||||
node [ penwidth = 1.75, shape = "box", fontname="Sans", ]
|
||||
graph [ penwidth = 1.75, fontname="Sans", fontsize = 16 ]
|
||||
|
||||
subgraph cluster_flags {
|
||||
node [ label = "", width=0.2, height=0.2, fontsize = 14, shape = "none", style = "invis" ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
flag8 [ label = "0" ];
|
||||
flag7 [ label = "0" ];
|
||||
flag6 [ label = "0" ];
|
||||
flag5 [ label = "1", style = "filled" ];
|
||||
flag4 [ label = "1", style = "" ];
|
||||
flag3 [ label = "1", style = "" ];
|
||||
flag2 [ label = "0", style = "" ];
|
||||
flag1 [ label = "1", style = "" ];
|
||||
flag_label [ label = "Flags", style = "", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
subgraph cluster_hashes {
|
||||
graph [ penwidth = 0 ];
|
||||
node [ shape = "none", style = "invis" ];
|
||||
|
||||
hash4 [ label = "H4" ];
|
||||
hash3 [ label = "H3" ];
|
||||
hash2 [ label = "H5", style = "filled" ];
|
||||
hash1 [ label = "H12", style = "" ];
|
||||
hash_label [ label = "Hashes", style = "", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
hash_label -> flag_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_legend {
|
||||
node [ label = "", fontsize = 18 ];
|
||||
graph [ penwidth = 0 ];
|
||||
edge [ style = "invis" ];
|
||||
ranksep = 3;
|
||||
|
||||
|
||||
{
|
||||
node [ shape = "none" ];
|
||||
matched_filter_label [ label = "Match Or\nMatch\nAncestor" ];
|
||||
hash_from_list_label [ label = "Hash\nOn\nList" ];
|
||||
hash_computed_label [ label = "Hash\nNot\nNeeded" ];
|
||||
waiting_label [ label = "Wait\nFor\nChild" ];
|
||||
}
|
||||
|
||||
matched_filter [ penwidth = 4 ];
|
||||
hash_from_list [ label = "H1", style = "diagonals" ];
|
||||
hash_computed [ label = "" ];
|
||||
waiting [ label = "↓" ];
|
||||
|
||||
pre_legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
pre_legend_label -> legend_label [ style = "invis" ];
|
||||
|
||||
|
||||
|
||||
waiting_label -> waiting;
|
||||
hash_from_list_label -> hash_from_list;
|
||||
hash_computed_label -> hash_computed;
|
||||
matched_filter_label -> matched_filter;
|
||||
|
||||
labelloc = b;
|
||||
label = "Legend"
|
||||
|
||||
}
|
||||
|
||||
legend_label -> hash_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_tree {
|
||||
edge [ dir = "none" ];
|
||||
node [ label = "", fontsize = 16 ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
{
|
||||
root_row [ shape = "none" ];
|
||||
row1 [ shape = "none", label = "Non-TXID\nNodes" ];
|
||||
row2 [ shape = "none", style = "invis", width = 1.2 ];
|
||||
txid_row [ label = "TXID\nNodes", shape = "none" ];
|
||||
|
||||
row2 -> row1 [ dir = "back" ];
|
||||
row1 -> root_row [ dir = ""];
|
||||
txid_row -> row2 [ style = "invis" ];
|
||||
}
|
||||
|
||||
G [ label = "H7" ];
|
||||
F [ label = "H6" ];
|
||||
E [ label = "H5", penwidth = 4, style = "diagonals,filled" ];
|
||||
D [ label = "" ];
|
||||
C [ label = "" ];
|
||||
B [ label = "" ];
|
||||
A [ label = "" ];
|
||||
|
||||
A -> AB;
|
||||
B -> AB;
|
||||
C -> CD;
|
||||
D -> CD;
|
||||
E -> EF [ dir = "back" ];
|
||||
F -> EF [ dir = "back" ];
|
||||
G -> G2;
|
||||
|
||||
AB [ label = "" ];
|
||||
CD [ label = "" ];
|
||||
EF [ label = "↓", penwidth = 4 ];
|
||||
G2 [ label = "H11" ];
|
||||
|
||||
AB -> A [ constraint = false, style = "invis" ];
|
||||
AB -> B [ constraint = false, style = "invis" ];
|
||||
CD -> C [ constraint = false, style = "invis" ];
|
||||
CD -> D [ constraint = false, style = "invis" ];
|
||||
EF -> E [ constraint = false, dir = "back" ];
|
||||
EF -> F [ constraint = false, style = "invis" ];
|
||||
G2 -> G [ constraint = false, style = "invis" ];
|
||||
|
||||
AB -> ABCD;
|
||||
CD -> ABCD;
|
||||
EF -> EFG2 [ dir = "back" ];
|
||||
G2 -> EFG2;
|
||||
|
||||
ABCD -> AB [ constraint = false, style = "invis" ];
|
||||
ABCD -> CD [ constraint = false, style = "invis" ];
|
||||
EFG2 -> EF [ constraint = false, style = "invis" ];
|
||||
EFG2 -> G2 [ constraint = false, style = "invis" ];
|
||||
|
||||
ABCD [ label = "H12", style = "diagonals" ];
|
||||
EFG2 [ label = "↓", penwidth = 4 ];
|
||||
|
||||
ABCD -> ROOT [ dir = "back" ];
|
||||
EFG2 -> ROOT [ dir = "back" ];
|
||||
|
||||
ROOT -> ABCD [ constraint = false, dir = "back" ];
|
||||
ROOT -> EFG2 [ constraint = false, style = "invis" ];
|
||||
|
||||
ROOT [ label = "↓", penwidth = 4 ];
|
||||
|
||||
}
|
||||
|
||||
//label = "Parsing A MerkleBlock Message"
|
||||
}
|
|
@ -0,0 +1,148 @@
|
|||
digraph merkleblock {
|
||||
|
||||
//size="6.25,2.22";
|
||||
size="6.25";
|
||||
rankdir=BT
|
||||
nodesep=0.07
|
||||
splines="false"
|
||||
|
||||
edge [ penwidth = 1.75, fontname="Sans" ]
|
||||
node [ penwidth = 1.75, shape = "box", fontname="Sans", ]
|
||||
graph [ penwidth = 1.75, fontname="Sans", fontsize = 16 ]
|
||||
|
||||
subgraph cluster_flags {
|
||||
node [ label = "", width=0.2, height=0.2, fontsize = 14, shape = "none", style = "invis" ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
flag8 [ label = "0" ];
|
||||
flag7 [ label = "0" ];
|
||||
flag6 [ label = "0", style = "filled" ];
|
||||
flag5 [ label = "1", style = "" ];
|
||||
flag4 [ label = "1", style = "" ];
|
||||
flag3 [ label = "1", style = "" ];
|
||||
flag2 [ label = "0", style = "" ];
|
||||
flag1 [ label = "1", style = "" ];
|
||||
flag_label [ label = "Flags", style = "", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
subgraph cluster_hashes {
|
||||
graph [ penwidth = 0 ];
|
||||
node [ shape = "none", style = "invis" ];
|
||||
|
||||
hash4 [ label = "H4" ];
|
||||
hash3 [ label = "H6", style = "filled" ];
|
||||
hash2 [ label = "H5", style = "" ];
|
||||
hash1 [ label = "H12", style = "" ];
|
||||
hash_label [ label = "Hashes", style = "", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
hash_label -> flag_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_legend {
|
||||
node [ label = "", fontsize = 18 ];
|
||||
graph [ penwidth = 0 ];
|
||||
edge [ style = "invis" ];
|
||||
ranksep = 3;
|
||||
|
||||
|
||||
{
|
||||
node [ shape = "none" ];
|
||||
matched_filter_label [ label = "Match Or\nMatch\nAncestor" ];
|
||||
hash_from_list_label [ label = "Hash\nOn\nList" ];
|
||||
hash_computed_label [ label = "Hash\nNot\nNeeded" ];
|
||||
waiting_label [ label = "Wait\nFor\nChild" ];
|
||||
}
|
||||
|
||||
matched_filter [ penwidth = 4 ];
|
||||
hash_from_list [ label = "H1", style = "diagonals" ];
|
||||
hash_computed [ label = "" ];
|
||||
waiting [ label = "↓" ];
|
||||
|
||||
pre_legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
pre_legend_label -> legend_label [ style = "invis" ];
|
||||
|
||||
|
||||
|
||||
waiting_label -> waiting;
|
||||
hash_from_list_label -> hash_from_list;
|
||||
hash_computed_label -> hash_computed;
|
||||
matched_filter_label -> matched_filter;
|
||||
|
||||
labelloc = b;
|
||||
label = "Legend"
|
||||
|
||||
}
|
||||
|
||||
legend_label -> hash_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_tree {
|
||||
edge [ dir = "none" ];
|
||||
node [ label = "", fontsize = 16 ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
{
|
||||
root_row [ shape = "none" ];
|
||||
row1 [ shape = "none", label = "Non-TXID\nNodes" ];
|
||||
row2 [ shape = "none", style = "invis", width = 1.2 ];
|
||||
txid_row [ label = "TXID\nNodes", shape = "none" ];
|
||||
|
||||
row2 -> row1 [ dir = "back" ];
|
||||
row1 -> root_row [ dir = ""];
|
||||
txid_row -> row2 [ style = "invis" ];
|
||||
}
|
||||
|
||||
G [ label = "H7" ];
|
||||
F [ label = "H6", style = "diagonals,filled" ];
|
||||
E [ label = "H5", penwidth = 4, style = "diagonals" ];
|
||||
D [ label = "" ];
|
||||
C [ label = "" ];
|
||||
B [ label = "" ];
|
||||
A [ label = "" ];
|
||||
|
||||
A -> AB;
|
||||
B -> AB;
|
||||
C -> CD;
|
||||
D -> CD;
|
||||
E -> EF [ dir = "back" ];
|
||||
F -> EF [ dir = "back" ];
|
||||
G -> G2;
|
||||
|
||||
AB [ label = "" ];
|
||||
CD [ label = "" ];
|
||||
EF [ label = "↓", penwidth = 4 ];
|
||||
G2 [ label = "H11" ];
|
||||
|
||||
AB -> A [ constraint = false, style = "invis" ];
|
||||
AB -> B [ constraint = false, style = "invis" ];
|
||||
CD -> C [ constraint = false, style = "invis" ];
|
||||
CD -> D [ constraint = false, style = "invis" ];
|
||||
EF -> E [ constraint = false, dir = "back" ];
|
||||
EF -> F [ constraint = false, dir = "back" ];
|
||||
G2 -> G [ constraint = false, style = "invis" ];
|
||||
|
||||
AB -> ABCD;
|
||||
CD -> ABCD;
|
||||
EF -> EFG2 [ dir = "back" ];
|
||||
G2 -> EFG2;
|
||||
|
||||
ABCD -> AB [ constraint = false, style = "invis" ];
|
||||
ABCD -> CD [ constraint = false, style = "invis" ];
|
||||
EFG2 -> EF [ constraint = false, style = "invis" ];
|
||||
EFG2 -> G2 [ constraint = false, style = "invis" ];
|
||||
|
||||
ABCD [ label = "H12", style = "diagonals" ];
|
||||
EFG2 [ label = "↓", penwidth = 4 ];
|
||||
|
||||
ABCD -> ROOT [ dir = "back" ];
|
||||
EFG2 -> ROOT [ dir = "back" ];
|
||||
|
||||
ROOT -> ABCD [ constraint = false, dir = "back" ];
|
||||
ROOT -> EFG2 [ constraint = false, style = "invis" ];
|
||||
|
||||
ROOT [ label = "↓", penwidth = 4 ];
|
||||
|
||||
}
|
||||
|
||||
//label = "Parsing A MerkleBlock Message"
|
||||
}
|
|
@ -0,0 +1,148 @@
|
|||
digraph merkleblock {
|
||||
|
||||
//size="6.25,2.22";
|
||||
size="6.25";
|
||||
rankdir=BT
|
||||
nodesep=0.07
|
||||
splines="false"
|
||||
|
||||
edge [ penwidth = 1.75, fontname="Sans" ]
|
||||
node [ penwidth = 1.75, shape = "box", fontname="Sans", ]
|
||||
graph [ penwidth = 1.75, fontname="Sans", fontsize = 16 ]
|
||||
|
||||
subgraph cluster_flags {
|
||||
node [ label = "", width=0.2, height=0.2, fontsize = 14, shape = "none", style = "invis" ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
flag8 [ label = "0" ];
|
||||
flag7 [ label = "0" ];
|
||||
flag6 [ label = "0", style = "" ];
|
||||
flag5 [ label = "1", style = "" ];
|
||||
flag4 [ label = "1", style = "" ];
|
||||
flag3 [ label = "1", style = "" ];
|
||||
flag2 [ label = "0", style = "" ];
|
||||
flag1 [ label = "1", style = "" ];
|
||||
flag_label [ label = "Flags", style = "", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
subgraph cluster_hashes {
|
||||
graph [ penwidth = 0 ];
|
||||
node [ shape = "none", style = "invis" ];
|
||||
|
||||
hash4 [ label = "H4" ];
|
||||
hash3 [ label = "H6", style = "" ];
|
||||
hash2 [ label = "H5", style = "" ];
|
||||
hash1 [ label = "H12", style = "" ];
|
||||
hash_label [ label = "Hashes", style = "", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
hash_label -> flag_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_legend {
|
||||
node [ label = "", fontsize = 18 ];
|
||||
graph [ penwidth = 0 ];
|
||||
edge [ style = "invis" ];
|
||||
ranksep = 3;
|
||||
|
||||
|
||||
{
|
||||
node [ shape = "none" ];
|
||||
matched_filter_label [ label = "Match Or\nMatch\nAncestor" ];
|
||||
hash_from_list_label [ label = "Hash\nOn\nList" ];
|
||||
hash_computed_label [ label = "Hash\nNot\nNeeded" ];
|
||||
waiting_label [ label = "Wait\nFor\nChild" ];
|
||||
}
|
||||
|
||||
matched_filter [ penwidth = 4 ];
|
||||
hash_from_list [ label = "H1", style = "diagonals" ];
|
||||
hash_computed [ label = "" ];
|
||||
waiting [ label = "↓" ];
|
||||
|
||||
pre_legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
pre_legend_label -> legend_label [ style = "invis" ];
|
||||
|
||||
|
||||
|
||||
waiting_label -> waiting;
|
||||
hash_from_list_label -> hash_from_list;
|
||||
hash_computed_label -> hash_computed;
|
||||
matched_filter_label -> matched_filter;
|
||||
|
||||
labelloc = b;
|
||||
label = "Legend"
|
||||
|
||||
}
|
||||
|
||||
legend_label -> hash_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_tree {
|
||||
edge [ dir = "none" ];
|
||||
node [ label = "", fontsize = 16 ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
{
|
||||
root_row [ shape = "none" ];
|
||||
row1 [ shape = "none", label = "Non-TXID\nNodes" ];
|
||||
row2 [ shape = "none", style = "invis", width = 1.2 ];
|
||||
txid_row [ label = "TXID\nNodes", shape = "none" ];
|
||||
|
||||
row2 -> row1 [ dir = "back" ];
|
||||
row1 -> root_row [ dir = ""];
|
||||
txid_row -> row2 [ style = "invis" ];
|
||||
}
|
||||
|
||||
G [ label = "H7" ];
|
||||
F [ label = "H6", style = "diagonals" ];
|
||||
E [ label = "H5", penwidth = 4, style = "diagonals" ];
|
||||
D [ label = "" ];
|
||||
C [ label = "" ];
|
||||
B [ label = "" ];
|
||||
A [ label = "" ];
|
||||
|
||||
A -> AB;
|
||||
B -> AB;
|
||||
C -> CD;
|
||||
D -> CD;
|
||||
E -> EF [ dir = "back" ];
|
||||
F -> EF [ dir = "back" ];
|
||||
G -> G2;
|
||||
|
||||
AB [ label = "" ];
|
||||
CD [ label = "" ];
|
||||
EF [ label = "", penwidth = 4, style = "filled" ];
|
||||
G2 [ label = "H11" ];
|
||||
|
||||
AB -> A [ constraint = false, style = "invis" ];
|
||||
AB -> B [ constraint = false, style = "invis" ];
|
||||
CD -> C [ constraint = false, style = "invis" ];
|
||||
CD -> D [ constraint = false, style = "invis" ];
|
||||
EF -> E [ constraint = false, dir = "back" ];
|
||||
EF -> F [ constraint = false, dir = "back" ];
|
||||
G2 -> G [ constraint = false, style = "invis" ];
|
||||
|
||||
AB -> ABCD;
|
||||
CD -> ABCD;
|
||||
EF -> EFG2 [ dir = "back" ];
|
||||
G2 -> EFG2 [ dir = "back" ];
|
||||
|
||||
ABCD -> AB [ constraint = false, style = "invis" ];
|
||||
ABCD -> CD [ constraint = false, style = "invis" ];
|
||||
EFG2 -> EF [ constraint = false, dir = "back" ];
|
||||
EFG2 -> G2 [ constraint = false, style = "invis" ];
|
||||
|
||||
ABCD [ label = "H12", style = "diagonals" ];
|
||||
EFG2 [ label = "↓", penwidth = 4 ];
|
||||
|
||||
ABCD -> ROOT [ dir = "back" ];
|
||||
EFG2 -> ROOT [ dir = "back" ];
|
||||
|
||||
ROOT -> ABCD [ constraint = false, dir = "back" ];
|
||||
ROOT -> EFG2 [ constraint = false, style = "invis" ];
|
||||
|
||||
ROOT [ label = "↓", penwidth = 4 ];
|
||||
|
||||
}
|
||||
|
||||
//label = "Parsing A MerkleBlock Message"
|
||||
}
|
|
@ -0,0 +1,148 @@
|
|||
digraph merkleblock {
|
||||
|
||||
//size="6.25,2.22";
|
||||
size="6.25";
|
||||
rankdir=BT
|
||||
nodesep=0.07
|
||||
splines="false"
|
||||
|
||||
edge [ penwidth = 1.75, fontname="Sans" ]
|
||||
node [ penwidth = 1.75, shape = "box", fontname="Sans", ]
|
||||
graph [ penwidth = 1.75, fontname="Sans", fontsize = 16 ]
|
||||
|
||||
subgraph cluster_flags {
|
||||
node [ label = "", width=0.2, height=0.2, fontsize = 14, shape = "none", style = "invis" ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
flag8 [ label = "0" ];
|
||||
flag7 [ label = "0", style = "filled" ];
|
||||
flag6 [ label = "0", style = "" ];
|
||||
flag5 [ label = "1", style = "" ];
|
||||
flag4 [ label = "1", style = "" ];
|
||||
flag3 [ label = "1", style = "" ];
|
||||
flag2 [ label = "0", style = "" ];
|
||||
flag1 [ label = "1", style = "" ];
|
||||
flag_label [ label = "Flags", style = "", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
subgraph cluster_hashes {
|
||||
graph [ penwidth = 0 ];
|
||||
node [ shape = "none", style = "invis" ];
|
||||
|
||||
hash4 [ label = "H11", style = "filled" ];
|
||||
hash3 [ label = "H6", style = "" ];
|
||||
hash2 [ label = "H5", style = "" ];
|
||||
hash1 [ label = "H12", style = "" ];
|
||||
hash_label [ label = "Hashes", style = "", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
hash_label -> flag_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_legend {
|
||||
node [ label = "", fontsize = 18 ];
|
||||
graph [ penwidth = 0 ];
|
||||
edge [ style = "invis" ];
|
||||
ranksep = 3;
|
||||
|
||||
|
||||
{
|
||||
node [ shape = "none" ];
|
||||
matched_filter_label [ label = "Match Or\nMatch\nAncestor" ];
|
||||
hash_from_list_label [ label = "Hash\nOn\nList" ];
|
||||
hash_computed_label [ label = "Hash\nNot\nNeeded" ];
|
||||
waiting_label [ label = "Wait\nFor\nChild" ];
|
||||
}
|
||||
|
||||
matched_filter [ penwidth = 4 ];
|
||||
hash_from_list [ label = "H1", style = "diagonals" ];
|
||||
hash_computed [ label = "" ];
|
||||
waiting [ label = "↓" ];
|
||||
|
||||
pre_legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
pre_legend_label -> legend_label [ style = "invis" ];
|
||||
|
||||
|
||||
|
||||
waiting_label -> waiting;
|
||||
hash_from_list_label -> hash_from_list;
|
||||
hash_computed_label -> hash_computed;
|
||||
matched_filter_label -> matched_filter;
|
||||
|
||||
labelloc = b;
|
||||
label = "Legend"
|
||||
|
||||
}
|
||||
|
||||
legend_label -> hash_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_tree {
|
||||
edge [ dir = "none" ];
|
||||
node [ label = "", fontsize = 16 ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
{
|
||||
root_row [ shape = "none" ];
|
||||
row1 [ shape = "none", label = "Non-TXID\nNodes" ];
|
||||
row2 [ shape = "none", style = "invis", width = 1.2 ];
|
||||
txid_row [ label = "TXID\nNodes", shape = "none" ];
|
||||
|
||||
row2 -> row1 [ dir = "back" ];
|
||||
row1 -> root_row [ dir = ""];
|
||||
txid_row -> row2 [ style = "invis" ];
|
||||
}
|
||||
|
||||
G [ label = "" ];
|
||||
F [ label = "H6", style = "diagonals" ];
|
||||
E [ label = "H5", penwidth = 4, style = "diagonals" ];
|
||||
D [ label = "" ];
|
||||
C [ label = "" ];
|
||||
B [ label = "" ];
|
||||
A [ label = "" ];
|
||||
|
||||
A -> AB;
|
||||
B -> AB;
|
||||
C -> CD;
|
||||
D -> CD;
|
||||
E -> EF [ dir = "back" ];
|
||||
F -> EF [ dir = "back" ];
|
||||
G -> G2;
|
||||
|
||||
AB [ label = "" ];
|
||||
CD [ label = "" ];
|
||||
EF [ label = "", penwidth = 4 ];
|
||||
G2 [ label = "H11", style = "diagonals,filled" ];
|
||||
|
||||
AB -> A [ constraint = false, style = "invis" ];
|
||||
AB -> B [ constraint = false, style = "invis" ];
|
||||
CD -> C [ constraint = false, style = "invis" ];
|
||||
CD -> D [ constraint = false, style = "invis" ];
|
||||
EF -> E [ constraint = false, dir = "back" ];
|
||||
EF -> F [ constraint = false, dir = "back" ];
|
||||
G2 -> G [ constraint = false, style = "invis" ];
|
||||
|
||||
AB -> ABCD;
|
||||
CD -> ABCD;
|
||||
EF -> EFG2 [ dir = "back" ];
|
||||
G2 -> EFG2 [ dir = "back" ];
|
||||
|
||||
ABCD -> AB [ constraint = false, style = "invis" ];
|
||||
ABCD -> CD [ constraint = false, style = "invis" ];
|
||||
EFG2 -> EF [ constraint = false, dir = "back" ];
|
||||
EFG2 -> G2 [ constraint = false, dir = "back" ];
|
||||
|
||||
ABCD [ label = "H12", style = "diagonals" ];
|
||||
EFG2 [ label = "↓", penwidth = 4 ];
|
||||
|
||||
ABCD -> ROOT [ dir = "back" ];
|
||||
EFG2 -> ROOT [ dir = "back" ];
|
||||
|
||||
ROOT -> ABCD [ constraint = false, dir = "back" ];
|
||||
ROOT -> EFG2 [ constraint = false, style = "invis" ];
|
||||
|
||||
ROOT [ label = "↓", penwidth = 4 ];
|
||||
|
||||
}
|
||||
|
||||
//label = "Parsing A MerkleBlock Message"
|
||||
}
|
|
@ -0,0 +1,148 @@
|
|||
digraph merkleblock {
|
||||
|
||||
//size="6.25,2.22";
|
||||
size="6.25";
|
||||
rankdir=BT
|
||||
nodesep=0.07
|
||||
splines="false"
|
||||
|
||||
edge [ penwidth = 1.75, fontname="Sans" ]
|
||||
node [ penwidth = 1.75, shape = "box", fontname="Sans", ]
|
||||
graph [ penwidth = 1.75, fontname="Sans", fontsize = 16 ]
|
||||
|
||||
subgraph cluster_flags {
|
||||
node [ label = "", width=0.2, height=0.2, fontsize = 14, shape = "none", style = "invis" ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
flag8 [ label = "0" ];
|
||||
flag7 [ label = "0", style = "" ];
|
||||
flag6 [ label = "0", style = "" ];
|
||||
flag5 [ label = "1", style = "" ];
|
||||
flag4 [ label = "1", style = "" ];
|
||||
flag3 [ label = "1", style = "" ];
|
||||
flag2 [ label = "0", style = "" ];
|
||||
flag1 [ label = "1", style = "" ];
|
||||
flag_label [ label = "Flags", style = "", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
subgraph cluster_hashes {
|
||||
graph [ penwidth = 0 ];
|
||||
node [ shape = "none", style = "invis" ];
|
||||
|
||||
hash4 [ label = "H11", style = "" ];
|
||||
hash3 [ label = "H6", style = "" ];
|
||||
hash2 [ label = "H5", style = "" ];
|
||||
hash1 [ label = "H12", style = "" ];
|
||||
hash_label [ label = "Hashes", style = "", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
hash_label -> flag_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_legend {
|
||||
node [ label = "", fontsize = 18 ];
|
||||
graph [ penwidth = 0 ];
|
||||
edge [ style = "invis" ];
|
||||
ranksep = 3;
|
||||
|
||||
|
||||
{
|
||||
node [ shape = "none" ];
|
||||
matched_filter_label [ label = "Match Or\nMatch\nAncestor" ];
|
||||
hash_from_list_label [ label = "Hash\nOn\nList" ];
|
||||
hash_computed_label [ label = "Hash\nNot\nNeeded" ];
|
||||
waiting_label [ label = "Wait\nFor\nChild" ];
|
||||
}
|
||||
|
||||
matched_filter [ penwidth = 4 ];
|
||||
hash_from_list [ label = "H1", style = "diagonals" ];
|
||||
hash_computed [ label = "" ];
|
||||
waiting [ label = "↓" ];
|
||||
|
||||
pre_legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
pre_legend_label -> legend_label [ style = "invis" ];
|
||||
|
||||
|
||||
|
||||
waiting_label -> waiting;
|
||||
hash_from_list_label -> hash_from_list;
|
||||
hash_computed_label -> hash_computed;
|
||||
matched_filter_label -> matched_filter;
|
||||
|
||||
labelloc = b;
|
||||
label = "Legend"
|
||||
|
||||
}
|
||||
|
||||
legend_label -> hash_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_tree {
|
||||
edge [ dir = "none" ];
|
||||
node [ label = "", fontsize = 16 ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
{
|
||||
root_row [ shape = "none" ];
|
||||
row1 [ shape = "none", label = "Non-TXID\nNodes" ];
|
||||
row2 [ shape = "none", style = "invis", width = 1.2 ];
|
||||
txid_row [ label = "TXID\nNodes", shape = "none" ];
|
||||
|
||||
row2 -> row1 [ dir = "back" ];
|
||||
row1 -> root_row [ dir = ""];
|
||||
txid_row -> row2 [ style = "invis" ];
|
||||
}
|
||||
|
||||
G [ label = "" ];
|
||||
F [ label = "H6", style = "diagonals" ];
|
||||
E [ label = "H5", penwidth = 4, style = "diagonals" ];
|
||||
D [ label = "" ];
|
||||
C [ label = "" ];
|
||||
B [ label = "" ];
|
||||
A [ label = "" ];
|
||||
|
||||
A -> AB;
|
||||
B -> AB;
|
||||
C -> CD;
|
||||
D -> CD;
|
||||
E -> EF [ dir = "back" ];
|
||||
F -> EF [ dir = "back" ];
|
||||
G -> G2;
|
||||
|
||||
AB [ label = "" ];
|
||||
CD [ label = "" ];
|
||||
EF [ label = "", penwidth = 4 ];
|
||||
G2 [ label = "H11", style = "diagonals" ];
|
||||
|
||||
AB -> A [ constraint = false, style = "invis" ];
|
||||
AB -> B [ constraint = false, style = "invis" ];
|
||||
CD -> C [ constraint = false, style = "invis" ];
|
||||
CD -> D [ constraint = false, style = "invis" ];
|
||||
EF -> E [ constraint = false, dir = "back" ];
|
||||
EF -> F [ constraint = false, dir = "back" ];
|
||||
G2 -> G [ constraint = false, style = "invis" ];
|
||||
|
||||
AB -> ABCD;
|
||||
CD -> ABCD;
|
||||
EF -> EFG2 [ dir = "back" ];
|
||||
G2 -> EFG2 [ dir = "back" ];
|
||||
|
||||
ABCD -> AB [ constraint = false, style = "invis" ];
|
||||
ABCD -> CD [ constraint = false, style = "invis" ];
|
||||
EFG2 -> EF [ constraint = false, dir = "back" ];
|
||||
EFG2 -> G2 [ constraint = false, dir = "back" ];
|
||||
|
||||
ABCD [ label = "H12", style = "diagonals" ];
|
||||
EFG2 [ label = "", penwidth = 4, style = "filled" ];
|
||||
|
||||
ABCD -> ROOT [ dir = "back" ];
|
||||
EFG2 -> ROOT [ dir = "back" ];
|
||||
|
||||
ROOT -> ABCD [ constraint = false, dir = "back" ];
|
||||
ROOT -> EFG2 [ constraint = false, dir = "back" ];
|
||||
|
||||
ROOT [ label = "↓", penwidth = 4 ];
|
||||
|
||||
}
|
||||
|
||||
//label = "Parsing A MerkleBlock Message"
|
||||
}
|
|
@ -0,0 +1,148 @@
|
|||
digraph merkleblock {
|
||||
|
||||
//size="6.25,2.22";
|
||||
size="6.25";
|
||||
rankdir=BT
|
||||
nodesep=0.07
|
||||
splines="false"
|
||||
|
||||
edge [ penwidth = 1.75, fontname="Sans" ]
|
||||
node [ penwidth = 1.75, shape = "box", fontname="Sans", ]
|
||||
graph [ penwidth = 1.75, fontname="Sans", fontsize = 16 ]
|
||||
|
||||
subgraph cluster_flags {
|
||||
node [ label = "", width=0.2, height=0.2, fontsize = 14, shape = "none", style = "invis" ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
flag8 [ label = "0" ];
|
||||
flag7 [ label = "0", style = "" ];
|
||||
flag6 [ label = "0", style = "" ];
|
||||
flag5 [ label = "1", style = "" ];
|
||||
flag4 [ label = "1", style = "" ];
|
||||
flag3 [ label = "1", style = "" ];
|
||||
flag2 [ label = "0", style = "" ];
|
||||
flag1 [ label = "1", style = "" ];
|
||||
flag_label [ label = "Flags", style = "", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
subgraph cluster_hashes {
|
||||
graph [ penwidth = 0 ];
|
||||
node [ shape = "none", style = "invis" ];
|
||||
|
||||
hash4 [ label = "H11", style = "" ];
|
||||
hash3 [ label = "H6", style = "" ];
|
||||
hash2 [ label = "H5", style = "" ];
|
||||
hash1 [ label = "H12", style = "" ];
|
||||
hash_label [ label = "Hashes", style = "", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
hash_label -> flag_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_legend {
|
||||
node [ label = "", fontsize = 18 ];
|
||||
graph [ penwidth = 0 ];
|
||||
edge [ style = "invis" ];
|
||||
ranksep = 3;
|
||||
|
||||
|
||||
{
|
||||
node [ shape = "none" ];
|
||||
matched_filter_label [ label = "Match Or\nMatch\nAncestor" ];
|
||||
hash_from_list_label [ label = "Hash\nOn\nList" ];
|
||||
hash_computed_label [ label = "Hash\nNot\nNeeded" ];
|
||||
waiting_label [ label = "Wait\nFor\nChild" ];
|
||||
}
|
||||
|
||||
matched_filter [ penwidth = 4 ];
|
||||
hash_from_list [ label = "H1", style = "diagonals" ];
|
||||
hash_computed [ label = "" ];
|
||||
waiting [ label = "↓" ];
|
||||
|
||||
pre_legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
pre_legend_label -> legend_label [ style = "invis" ];
|
||||
|
||||
|
||||
|
||||
waiting_label -> waiting;
|
||||
hash_from_list_label -> hash_from_list;
|
||||
hash_computed_label -> hash_computed;
|
||||
matched_filter_label -> matched_filter;
|
||||
|
||||
labelloc = b;
|
||||
label = "Legend"
|
||||
|
||||
}
|
||||
|
||||
legend_label -> hash_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_tree {
|
||||
edge [ dir = "none" ];
|
||||
node [ label = "", fontsize = 16 ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
{
|
||||
root_row [ shape = "none" ];
|
||||
row1 [ shape = "none", label = "Non-TXID\nNodes" ];
|
||||
row2 [ shape = "none", style = "invis", width = 1.2 ];
|
||||
txid_row [ label = "TXID\nNodes", shape = "none" ];
|
||||
|
||||
row2 -> row1 [ dir = "back" ];
|
||||
row1 -> root_row [ dir = ""];
|
||||
txid_row -> row2 [ style = "invis" ];
|
||||
}
|
||||
|
||||
G [ label = "" ];
|
||||
F [ label = "H6", style = "diagonals" ];
|
||||
E [ label = "H5", penwidth = 4, style = "diagonals" ];
|
||||
D [ label = "" ];
|
||||
C [ label = "" ];
|
||||
B [ label = "" ];
|
||||
A [ label = "" ];
|
||||
|
||||
A -> AB;
|
||||
B -> AB;
|
||||
C -> CD;
|
||||
D -> CD;
|
||||
E -> EF [ dir = "back" ];
|
||||
F -> EF [ dir = "back" ];
|
||||
G -> G2;
|
||||
|
||||
AB [ label = "" ];
|
||||
CD [ label = "" ];
|
||||
EF [ label = "", penwidth = 4 ];
|
||||
G2 [ label = "H11", style = "diagonals" ];
|
||||
|
||||
AB -> A [ constraint = false, style = "invis" ];
|
||||
AB -> B [ constraint = false, style = "invis" ];
|
||||
CD -> C [ constraint = false, style = "invis" ];
|
||||
CD -> D [ constraint = false, style = "invis" ];
|
||||
EF -> E [ constraint = false, dir = "back" ];
|
||||
EF -> F [ constraint = false, dir = "back" ];
|
||||
G2 -> G [ constraint = false, style = "invis" ];
|
||||
|
||||
AB -> ABCD;
|
||||
CD -> ABCD;
|
||||
EF -> EFG2 [ dir = "back" ];
|
||||
G2 -> EFG2 [ dir = "back" ];
|
||||
|
||||
ABCD -> AB [ constraint = false, style = "invis" ];
|
||||
ABCD -> CD [ constraint = false, style = "invis" ];
|
||||
EFG2 -> EF [ constraint = false, dir = "back" ];
|
||||
EFG2 -> G2 [ constraint = false, dir = "back" ];
|
||||
|
||||
ABCD [ label = "H12", style = "diagonals" ];
|
||||
EFG2 [ label = "", penwidth = 4, ];
|
||||
|
||||
ABCD -> ROOT [ dir = "back" ];
|
||||
EFG2 -> ROOT [ dir = "back" ];
|
||||
|
||||
ROOT -> ABCD [ constraint = false, dir = "back" ];
|
||||
ROOT -> EFG2 [ constraint = false, dir = "back" ];
|
||||
|
||||
ROOT [ label = "", penwidth = 4, style = "filled" ];
|
||||
|
||||
}
|
||||
|
||||
//label = "Parsing A MerkleBlock Message"
|
||||
}
|
|
@ -0,0 +1,138 @@
|
|||
digraph merkleblock {
|
||||
|
||||
//size="6.25,2.22";
|
||||
size="6.25";
|
||||
rankdir=BT
|
||||
nodesep=0.1
|
||||
splines="false"
|
||||
|
||||
edge [ penwidth = 1.75, fontname="Sans" ]
|
||||
node [ penwidth = 1.75, shape = "box", fontname="Sans", ]
|
||||
graph [ penwidth = 1.75, fontname="Sans", fontsize = 16 ]
|
||||
|
||||
subgraph cluster_flags {
|
||||
node [ label = "", width=0.2, height=0.2, fontsize = 14, shape = "none" ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
flag8 [ label = "0" ];
|
||||
flag7 [ label = "0" ];
|
||||
flag6 [ label = "0" ];
|
||||
flag5 [ label = "1" ];
|
||||
flag4 [ label = "1" ];
|
||||
flag3 [ label = "1" ];
|
||||
flag2 [ label = "0" ];
|
||||
flag1 [ label = "1" ];
|
||||
flag_label [ label = "Flags", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
subgraph cluster_hashes {
|
||||
graph [ penwidth = 0 ];
|
||||
node [ shape = "none" ];
|
||||
|
||||
hash4 [ label = "H4" ];
|
||||
hash3 [ label = "H3" ];
|
||||
hash2 [ label = "H2" ];
|
||||
hash1 [ label = "H1" ];
|
||||
hash_label [ label = "Hashes", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
hash_label -> flag_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_legend {
|
||||
node [ label = "", fontsize = 18 ];
|
||||
graph [ penwidth = 0 ];
|
||||
edge [ style = "invis" ];
|
||||
ranksep = 3;
|
||||
|
||||
|
||||
{
|
||||
node [ shape = "none" ];
|
||||
matched_filter_label [ label = "TXID\nFilter\nMatch" ];
|
||||
hash_from_list_label [ label = "Hash\nFrom\nList" ];
|
||||
hash_computed_label [ label = "Hash\nCom-\nputed" ];
|
||||
waiting_label [ label = "Wait\nFor\nChild" ];
|
||||
}
|
||||
|
||||
matched_filter [ penwidth = 4, style = "diagonals", bgcolor = grey ];
|
||||
hash_from_list [ label = "H1", style = "diagonals" ];
|
||||
hash_computed [ label = "H()" ];
|
||||
waiting [ label = "↓" ];
|
||||
|
||||
pre_legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
pre_legend_label -> legend_label [ style = "invis" ];
|
||||
|
||||
|
||||
|
||||
waiting_label -> waiting;
|
||||
hash_from_list_label -> hash_from_list;
|
||||
hash_computed_label -> hash_computed;
|
||||
matched_filter_label -> matched_filter;
|
||||
|
||||
labelloc = b;
|
||||
label = "Legend"
|
||||
|
||||
}
|
||||
|
||||
legend_label -> hash_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_tree {
|
||||
edge [ dir = "none" ];
|
||||
node [ label = "", fontsize = 16 ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
{
|
||||
root_row [ shape = "none" ];
|
||||
row1 [ shape = "none", label = "Non-TXID\nNodes" ];
|
||||
row2 [ shape = "none", style = "invis", width = 1.2 ];
|
||||
txid_row [ label = "TXID\nNodes", shape = "none" ];
|
||||
|
||||
row2 -> row1 [ dir = "back" ];
|
||||
row1 -> root_row [ dir = ""];
|
||||
txid_row -> row2 [ style = "invis" ];
|
||||
}
|
||||
|
||||
G;
|
||||
F;
|
||||
E;
|
||||
D;
|
||||
C;
|
||||
B;
|
||||
A;
|
||||
|
||||
A -> AB;
|
||||
B -> AB;
|
||||
C -> CD;
|
||||
D -> CD;
|
||||
E -> EF;
|
||||
F -> EF;
|
||||
G -> G2;
|
||||
|
||||
AB -> A [ constraint = false, style = "invis" ];
|
||||
AB -> B [ constraint = false, style = "invis" ];
|
||||
CD -> C [ constraint = false, style = "invis" ];
|
||||
CD -> D [ constraint = false, style = "invis" ];
|
||||
EF -> E [ constraint = false, style = "invis" ];
|
||||
EF -> F [ constraint = false, style = "invis" ];
|
||||
G2 -> G [ constraint = false, style = "invis" ];
|
||||
|
||||
AB -> ABCD;
|
||||
CD -> ABCD;
|
||||
EF -> EFG2;
|
||||
G2 -> EFG2;
|
||||
|
||||
ABCD -> AB [ constraint = false, style = "invis" ];
|
||||
ABCD -> CD [ constraint = false, style = "invis" ];
|
||||
EFG2 -> EF [ constraint = false, style = "invis" ];
|
||||
EFG2 -> G2 [ constraint = false, style = "invis" ];
|
||||
|
||||
ABCD -> ROOT;
|
||||
EFG2 -> ROOT;
|
||||
|
||||
ROOT -> ABCD [ constraint = false, style = "invis" ];
|
||||
ROOT -> EFG2 [ constraint = false, style = "invis" ];
|
||||
|
||||
}
|
||||
|
||||
//label = "Parsing A MerkleBlock Message"
|
||||
}
|
After Width: | Height: | Size: 5.8 KiB |
|
@ -0,0 +1,288 @@
|
|||
<?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: merkleblock Pages: 1 -->
|
||||
<svg width="450pt" height="153pt"
|
||||
viewBox="0.00 0.00 450.00 152.71" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g id="graph1" class="graph" transform="scale(0.507328 0.507328) rotate(0) translate(4 297)">
|
||||
<title>merkleblock</title>
|
||||
<polygon fill="white" stroke="white" points="-4,5 -4,-297 884,-297 884,5 -4,5"/>
|
||||
<g id="graph2" class="cluster"><title>cluster_flags</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="0" points="16,-237 16,-281 354,-281 354,-237 16,-237"/>
|
||||
</g>
|
||||
<g id="graph3" class="cluster"><title>cluster_hashes</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="0" points="8,-177 8,-229 342,-229 342,-177 8,-177"/>
|
||||
</g>
|
||||
<g id="graph4" class="cluster"><title>cluster_legend</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="0" points="45,-8 45,-169 349,-169 349,-8 45,-8"/>
|
||||
<text text-anchor="middle" x="197" y="-150.6" font-family="Sans" font-size="16.00">Legend</text>
|
||||
</g>
|
||||
<g id="graph6" class="cluster"><title>cluster_tree</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="0" points="362,-22 362,-285 871,-285 871,-22 362,-22"/>
|
||||
</g>
|
||||
<!-- flag8 -->
|
||||
<g id="node2" class="node"><title>flag8</title>
|
||||
<text text-anchor="middle" x="333" y="-254.9" font-family="Sans" font-size="14.00">0</text>
|
||||
</g>
|
||||
<!-- flag7 -->
|
||||
<g id="node3" class="node"><title>flag7</title>
|
||||
<text text-anchor="middle" x="300" y="-254.9" font-family="Sans" font-size="14.00">0</text>
|
||||
</g>
|
||||
<!-- flag6 -->
|
||||
<g id="node4" class="node"><title>flag6</title>
|
||||
<text text-anchor="middle" x="267" y="-254.9" font-family="Sans" font-size="14.00">0</text>
|
||||
</g>
|
||||
<!-- flag5 -->
|
||||
<g id="node5" class="node"><title>flag5</title>
|
||||
<text text-anchor="middle" x="234" y="-254.9" font-family="Sans" font-size="14.00">1</text>
|
||||
</g>
|
||||
<!-- flag4 -->
|
||||
<g id="node6" class="node"><title>flag4</title>
|
||||
<text text-anchor="middle" x="201" y="-254.9" font-family="Sans" font-size="14.00">1</text>
|
||||
</g>
|
||||
<!-- flag3 -->
|
||||
<g id="node7" class="node"><title>flag3</title>
|
||||
<text text-anchor="middle" x="168" y="-254.9" font-family="Sans" font-size="14.00">1</text>
|
||||
</g>
|
||||
<!-- flag2 -->
|
||||
<g id="node8" class="node"><title>flag2</title>
|
||||
<text text-anchor="middle" x="135" y="-254.9" font-family="Sans" font-size="14.00">0</text>
|
||||
</g>
|
||||
<!-- flag1 -->
|
||||
<g id="node9" class="node"><title>flag1</title>
|
||||
<text text-anchor="middle" x="102" y="-254.9" font-family="Sans" font-size="14.00">1</text>
|
||||
</g>
|
||||
<!-- flag_label -->
|
||||
<g id="node10" class="node"><title>flag_label</title>
|
||||
<text text-anchor="middle" x="53" y="-254.1" font-family="Sans" font-size="16.00">Flags</text>
|
||||
</g>
|
||||
<!-- hash4 -->
|
||||
<g id="node12" class="node"><title>hash4</title>
|
||||
<text text-anchor="middle" x="307" y="-198.9" font-family="Sans" font-size="14.00">H4</text>
|
||||
</g>
|
||||
<!-- hash3 -->
|
||||
<g id="node13" class="node"><title>hash3</title>
|
||||
<text text-anchor="middle" x="246" y="-198.9" font-family="Sans" font-size="14.00">H3</text>
|
||||
</g>
|
||||
<!-- hash2 -->
|
||||
<g id="node14" class="node"><title>hash2</title>
|
||||
<text text-anchor="middle" x="185" y="-198.9" font-family="Sans" font-size="14.00">H2</text>
|
||||
</g>
|
||||
<!-- hash1 -->
|
||||
<g id="node15" class="node"><title>hash1</title>
|
||||
<text text-anchor="middle" x="124" y="-198.9" font-family="Sans" font-size="14.00">H1</text>
|
||||
</g>
|
||||
<!-- hash_label -->
|
||||
<g id="node16" class="node"><title>hash_label</title>
|
||||
<text text-anchor="middle" x="53" y="-198.1" font-family="Sans" font-size="16.00">Hashes</text>
|
||||
</g>
|
||||
<!-- hash_label->flag_label -->
|
||||
<!-- matched_filter_label -->
|
||||
<g id="node20" class="node"><title>matched_filter_label</title>
|
||||
<text text-anchor="middle" x="306" y="-69.8" font-family="Sans" font-size="18.00">TXID</text>
|
||||
<text text-anchor="middle" x="306" y="-47.8" font-family="Sans" font-size="18.00">Filter</text>
|
||||
<text text-anchor="middle" x="306" y="-25.8" font-family="Sans" font-size="18.00">Match</text>
|
||||
</g>
|
||||
<!-- matched_filter -->
|
||||
<g id="node24" class="node"><title>matched_filter</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="4" points="333,-134 279,-134 279,-98 333,-98 333,-134"/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="291,-134 279,-122 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="279,-110 291,-98 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="321,-98 333,-110 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="333,-122 321,-134 "/>
|
||||
</g>
|
||||
<!-- matched_filter_label->matched_filter -->
|
||||
<!-- hash_from_list_label -->
|
||||
<g id="node21" class="node"><title>hash_from_list_label</title>
|
||||
<text text-anchor="middle" x="234" y="-69.8" font-family="Sans" font-size="18.00">Hash</text>
|
||||
<text text-anchor="middle" x="234" y="-47.8" font-family="Sans" font-size="18.00">From</text>
|
||||
<text text-anchor="middle" x="234" y="-25.8" font-family="Sans" font-size="18.00">List</text>
|
||||
</g>
|
||||
<!-- hash_from_list -->
|
||||
<g id="node25" class="node"><title>hash_from_list</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="261,-134 207,-134 207,-98 261,-98 261,-134"/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="219,-134 207,-122 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="207,-110 219,-98 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="249,-98 261,-110 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="261,-122 249,-134 "/>
|
||||
<text text-anchor="middle" x="234" y="-110.8" font-family="Sans" font-size="18.00">H1</text>
|
||||
</g>
|
||||
<!-- hash_from_list_label->hash_from_list -->
|
||||
<!-- hash_computed_label -->
|
||||
<g id="node22" class="node"><title>hash_computed_label</title>
|
||||
<text text-anchor="middle" x="163" y="-69.8" font-family="Sans" font-size="18.00">Hash</text>
|
||||
<text text-anchor="middle" x="163" y="-47.8" font-family="Sans" font-size="18.00">Com-</text>
|
||||
<text text-anchor="middle" x="163" y="-25.8" font-family="Sans" font-size="18.00">puted</text>
|
||||
</g>
|
||||
<!-- hash_computed -->
|
||||
<g id="node26" class="node"><title>hash_computed</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="190,-134 136,-134 136,-98 190,-98 190,-134"/>
|
||||
<text text-anchor="middle" x="163" y="-110.8" font-family="Sans" font-size="18.00">H()</text>
|
||||
</g>
|
||||
<!-- hash_computed_label->hash_computed -->
|
||||
<!-- waiting_label -->
|
||||
<g id="node23" class="node"><title>waiting_label</title>
|
||||
<text text-anchor="middle" x="91" y="-69.8" font-family="Sans" font-size="18.00">Wait</text>
|
||||
<text text-anchor="middle" x="91" y="-47.8" font-family="Sans" font-size="18.00">For</text>
|
||||
<text text-anchor="middle" x="91" y="-25.8" font-family="Sans" font-size="18.00">Child</text>
|
||||
</g>
|
||||
<!-- waiting -->
|
||||
<g id="node27" class="node"><title>waiting</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="118,-134 64,-134 64,-98 118,-98 118,-134"/>
|
||||
<text text-anchor="middle" x="91" y="-110.8" font-family="Sans" font-size="18.00">↓</text>
|
||||
</g>
|
||||
<!-- waiting_label->waiting -->
|
||||
<!-- pre_legend_label -->
|
||||
<!-- legend_label -->
|
||||
<!-- pre_legend_label->legend_label -->
|
||||
<!-- legend_label->hash_label -->
|
||||
<!-- root_row -->
|
||||
<g id="node38" class="node"><title>root_row</title>
|
||||
</g>
|
||||
<!-- row1 -->
|
||||
<g id="node39" class="node"><title>row1</title>
|
||||
<text text-anchor="middle" x="818" y="-207.6" font-family="Sans" font-size="16.00">Non-TXID</text>
|
||||
<text text-anchor="middle" x="818" y="-188.6" font-family="Sans" font-size="16.00">Nodes</text>
|
||||
</g>
|
||||
<!-- row1->root_row -->
|
||||
<g id="edge24" class="edge"><title>row1->root_row</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M818,-226.101C818,-227.645 818,-229.209 818,-230.775"/>
|
||||
<polygon fill="black" stroke="black" points="814.5,-230.913 818,-240.913 821.5,-230.913 814.5,-230.913"/>
|
||||
</g>
|
||||
<!-- row2 -->
|
||||
<!-- row2->row1 -->
|
||||
<g id="edge22" class="edge"><title>row2->row1</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M818.674,-144.378C818.542,-155.812 818.393,-168.837 818.268,-179.702"/>
|
||||
<polygon fill="black" stroke="black" points="822.178,-144.066 818.793,-134.026 815.178,-143.986 822.178,-144.066"/>
|
||||
</g>
|
||||
<!-- txid_row -->
|
||||
<g id="node41" class="node"><title>txid_row</title>
|
||||
<text text-anchor="middle" x="830" y="-57.6" font-family="Sans" font-size="16.00">TXID</text>
|
||||
<text text-anchor="middle" x="830" y="-38.6" font-family="Sans" font-size="16.00">Nodes</text>
|
||||
</g>
|
||||
<!-- txid_row->row2 -->
|
||||
<!-- G -->
|
||||
<g id="node45" class="node"><title>G</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="790,-71 736,-71 736,-35 790,-35 790,-71"/>
|
||||
</g>
|
||||
<!-- G2 -->
|
||||
<g id="node62" class="node"><title>G2</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="759,-134 705,-134 705,-98 759,-98 759,-134"/>
|
||||
</g>
|
||||
<!-- G->G2 -->
|
||||
<g id="edge40" class="edge"><title>G->G2</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M751.972,-71.2222C747.646,-79.5078 742.829,-89.2936 738.986,-97.6005"/>
|
||||
</g>
|
||||
<!-- F -->
|
||||
<g id="node46" class="node"><title>F</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="729,-71 675,-71 675,-35 729,-35 729,-71"/>
|
||||
</g>
|
||||
<!-- EF -->
|
||||
<g id="node59" class="node"><title>EF</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="678,-134 624,-134 624,-98 678,-98 678,-134"/>
|
||||
</g>
|
||||
<!-- F->EF -->
|
||||
<g id="edge38" class="edge"><title>F->EF</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M685.187,-71.2222C678.23,-79.5078 670.307,-89.2936 663.828,-97.6005"/>
|
||||
</g>
|
||||
<!-- E -->
|
||||
<g id="node47" class="node"><title>E</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="668,-71 614,-71 614,-35 668,-35 668,-71"/>
|
||||
</g>
|
||||
<!-- E->EF -->
|
||||
<g id="edge36" class="edge"><title>E->EF</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M641.83,-71.2222C642.897,-79.5078 644.448,-89.2936 646.012,-97.6005"/>
|
||||
</g>
|
||||
<!-- D -->
|
||||
<g id="node48" class="node"><title>D</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="607,-71 553,-71 553,-35 607,-35 607,-71"/>
|
||||
</g>
|
||||
<!-- CD -->
|
||||
<g id="node56" class="node"><title>CD</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="577,-134 523,-134 523,-98 577,-98 577,-134"/>
|
||||
</g>
|
||||
<!-- D->CD -->
|
||||
<g id="edge34" class="edge"><title>D->CD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M569.261,-71.2222C565.066,-79.5078 560.405,-89.2936 556.694,-97.6005"/>
|
||||
</g>
|
||||
<!-- C -->
|
||||
<g id="node49" class="node"><title>C</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="546,-71 492,-71 492,-35 546,-35 546,-71"/>
|
||||
</g>
|
||||
<!-- C->CD -->
|
||||
<g id="edge32" class="edge"><title>C->CD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M525.904,-71.2222C529.733,-79.5078 534.546,-89.2936 538.879,-97.6005"/>
|
||||
</g>
|
||||
<!-- B -->
|
||||
<g id="node50" class="node"><title>B</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="485,-71 431,-71 431,-35 485,-35 485,-71"/>
|
||||
</g>
|
||||
<!-- AB -->
|
||||
<g id="node53" class="node"><title>AB</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="485,-134 431,-134 431,-98 485,-98 485,-134"/>
|
||||
</g>
|
||||
<!-- B->AB -->
|
||||
<g id="edge30" class="edge"><title>B->AB</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M455.938,-71.2222C455.689,-79.5078 455.687,-89.2936 455.933,-97.6005"/>
|
||||
</g>
|
||||
<!-- A -->
|
||||
<g id="node51" class="node"><title>A</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="424,-71 370,-71 370,-35 424,-35 424,-71"/>
|
||||
</g>
|
||||
<!-- A->AB -->
|
||||
<g id="edge28" class="edge"><title>A->AB</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M412.582,-71.2222C420.355,-79.5078 429.829,-89.2936 438.117,-97.6005"/>
|
||||
</g>
|
||||
<!-- AB->B -->
|
||||
<!-- AB->A -->
|
||||
<!-- ABCD -->
|
||||
<g id="node71" class="node"><title>ABCD</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="577,-221 523,-221 523,-185 577,-185 577,-221"/>
|
||||
</g>
|
||||
<!-- AB->ABCD -->
|
||||
<g id="edge56" class="edge"><title>AB->ABCD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M475.198,-134.026C490.473,-148.958 512.801,-170.072 529.099,-184.997"/>
|
||||
</g>
|
||||
<!-- CD->D -->
|
||||
<!-- CD->C -->
|
||||
<!-- CD->ABCD -->
|
||||
<g id="edge58" class="edge"><title>CD->ABCD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M548.136,-134.026C547.621,-148.958 547.621,-170.072 548.137,-184.997"/>
|
||||
</g>
|
||||
<!-- EF->F -->
|
||||
<!-- EF->E -->
|
||||
<!-- EFG2 -->
|
||||
<g id="node74" class="node"><title>EFG2</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="678,-221 624,-221 624,-185 678,-185 678,-221"/>
|
||||
</g>
|
||||
<!-- EF->EFG2 -->
|
||||
<g id="edge60" class="edge"><title>EF->EFG2</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M649.136,-134.026C648.621,-148.958 648.621,-170.072 649.137,-184.997"/>
|
||||
</g>
|
||||
<!-- G2->G -->
|
||||
<!-- G2->EFG2 -->
|
||||
<g id="edge62" class="edge"><title>G2->EFG2</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M713.353,-134.026C698.936,-148.958 679.279,-170.072 665.898,-184.997"/>
|
||||
</g>
|
||||
<!-- ABCD->AB -->
|
||||
<!-- ABCD->CD -->
|
||||
<!-- ROOT -->
|
||||
<g id="node81" class="node"><title>ROOT</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="628,-277 574,-277 574,-241 628,-241 628,-277"/>
|
||||
</g>
|
||||
<!-- ABCD->ROOT -->
|
||||
<g id="edge72" class="edge"><title>ABCD->ROOT</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M564.299,-221.027C569.834,-227.294 576.236,-234.327 582.136,-240.622"/>
|
||||
</g>
|
||||
<!-- EFG2->EF -->
|
||||
<!-- EFG2->G2 -->
|
||||
<!-- EFG2->ROOT -->
|
||||
<g id="edge74" class="edge"><title>EFG2->ROOT</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M632.786,-221.027C627.018,-227.294 620.735,-234.327 615.281,-240.622"/>
|
||||
</g>
|
||||
<!-- ROOT->ABCD -->
|
||||
<!-- ROOT->EFG2 -->
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 14 KiB |
|
@ -0,0 +1,140 @@
|
|||
digraph merkleblock {
|
||||
|
||||
//size="6.25,2.22";
|
||||
size="6.25";
|
||||
rankdir=BT
|
||||
nodesep=0.1
|
||||
splines="false"
|
||||
|
||||
edge [ penwidth = 1.75, fontname="Sans" ]
|
||||
node [ penwidth = 1.75, shape = "box", fontname="Sans", ]
|
||||
graph [ penwidth = 1.75, fontname="Sans", fontsize = 16 ]
|
||||
|
||||
subgraph cluster_flags {
|
||||
node [ label = "", width=0.2, height=0.2, fontsize = 14, shape = "none" ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
flag8 [ label = "0" ];
|
||||
flag7 [ label = "0" ];
|
||||
flag6 [ label = "0" ];
|
||||
flag5 [ label = "1" ];
|
||||
flag4 [ label = "1" ];
|
||||
flag3 [ label = "1" ];
|
||||
flag2 [ label = "0" ];
|
||||
flag1 [ label = "1", style = "filled" ];
|
||||
flag_label [ label = "Flags", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
subgraph cluster_hashes {
|
||||
graph [ penwidth = 0 ];
|
||||
node [ shape = "none" ];
|
||||
|
||||
hash4 [ label = "H4" ];
|
||||
hash3 [ label = "H3" ];
|
||||
hash2 [ label = "H2" ];
|
||||
hash1 [ label = "H1" ];
|
||||
hash_label [ label = "Hashes", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
hash_label -> flag_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_legend {
|
||||
node [ label = "", fontsize = 18 ];
|
||||
graph [ penwidth = 0 ];
|
||||
edge [ style = "invis" ];
|
||||
ranksep = 3;
|
||||
|
||||
|
||||
{
|
||||
node [ shape = "none" ];
|
||||
matched_filter_label [ label = "TXID\nFilter\nMatch" ];
|
||||
hash_from_list_label [ label = "Hash\nFrom\nList" ];
|
||||
hash_computed_label [ label = "Hash\nCom-\nputed" ];
|
||||
waiting_label [ label = "Wait\nFor\nChild" ];
|
||||
}
|
||||
|
||||
matched_filter [ penwidth = 4, style = "diagonals", bgcolor = grey ];
|
||||
hash_from_list [ label = "H1", style = "diagonals" ];
|
||||
hash_computed [ label = "H()" ];
|
||||
waiting [ label = "↓" ];
|
||||
|
||||
pre_legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
pre_legend_label -> legend_label [ style = "invis" ];
|
||||
|
||||
|
||||
|
||||
waiting_label -> waiting;
|
||||
hash_from_list_label -> hash_from_list;
|
||||
hash_computed_label -> hash_computed;
|
||||
matched_filter_label -> matched_filter;
|
||||
|
||||
labelloc = b;
|
||||
label = "Legend"
|
||||
|
||||
}
|
||||
|
||||
legend_label -> hash_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_tree {
|
||||
edge [ dir = "none" ];
|
||||
node [ label = "", fontsize = 16 ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
{
|
||||
root_row [ shape = "none" ];
|
||||
row1 [ shape = "none", label = "Non-TXID\nNodes" ];
|
||||
row2 [ shape = "none", style = "invis", width = 1.2 ];
|
||||
txid_row [ label = "TXID\nNodes", shape = "none" ];
|
||||
|
||||
row2 -> row1 [ dir = "back" ];
|
||||
row1 -> root_row [ dir = ""];
|
||||
txid_row -> row2 [ style = "invis" ];
|
||||
}
|
||||
|
||||
G;
|
||||
F;
|
||||
E;
|
||||
D;
|
||||
C;
|
||||
B;
|
||||
A;
|
||||
|
||||
ROOT [ style = "filled", label = "↓" ]
|
||||
|
||||
A -> AB;
|
||||
B -> AB;
|
||||
C -> CD;
|
||||
D -> CD;
|
||||
E -> EF;
|
||||
F -> EF;
|
||||
G -> G2;
|
||||
|
||||
AB -> A [ constraint = false, style = "invis" ];
|
||||
AB -> B [ constraint = false, style = "invis" ];
|
||||
CD -> C [ constraint = false, style = "invis" ];
|
||||
CD -> D [ constraint = false, style = "invis" ];
|
||||
EF -> E [ constraint = false, style = "invis" ];
|
||||
EF -> F [ constraint = false, style = "invis" ];
|
||||
G2 -> G [ constraint = false, style = "invis" ];
|
||||
|
||||
AB -> ABCD;
|
||||
CD -> ABCD;
|
||||
EF -> EFG2;
|
||||
G2 -> EFG2;
|
||||
|
||||
ABCD -> AB [ constraint = false, style = "invis" ];
|
||||
ABCD -> CD [ constraint = false, style = "invis" ];
|
||||
EFG2 -> EF [ constraint = false, style = "invis" ];
|
||||
EFG2 -> G2 [ constraint = false, style = "invis" ];
|
||||
|
||||
ABCD -> ROOT [ dir = "back" ];
|
||||
EFG2 -> ROOT;
|
||||
|
||||
ROOT -> ABCD [ constraint = false, style = "invis" ];
|
||||
ROOT -> EFG2 [ constraint = false, style = "invis" ];
|
||||
|
||||
}
|
||||
|
||||
//label = "Parsing A MerkleBlock Message"
|
||||
}
|
After Width: | Height: | Size: 5.9 KiB |
|
@ -0,0 +1,291 @@
|
|||
<?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: merkleblock Pages: 1 -->
|
||||
<svg width="450pt" height="153pt"
|
||||
viewBox="0.00 0.00 450.00 152.71" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g id="graph1" class="graph" transform="scale(0.507328 0.507328) rotate(0) translate(4 297)">
|
||||
<title>merkleblock</title>
|
||||
<polygon fill="white" stroke="white" points="-4,5 -4,-297 884,-297 884,5 -4,5"/>
|
||||
<g id="graph2" class="cluster"><title>cluster_flags</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="0" points="16,-237 16,-281 354,-281 354,-237 16,-237"/>
|
||||
</g>
|
||||
<g id="graph3" class="cluster"><title>cluster_hashes</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="0" points="8,-177 8,-229 342,-229 342,-177 8,-177"/>
|
||||
</g>
|
||||
<g id="graph4" class="cluster"><title>cluster_legend</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="0" points="45,-8 45,-169 349,-169 349,-8 45,-8"/>
|
||||
<text text-anchor="middle" x="197" y="-150.6" font-family="Sans" font-size="16.00">Legend</text>
|
||||
</g>
|
||||
<g id="graph6" class="cluster"><title>cluster_tree</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="0" points="362,-22 362,-285 871,-285 871,-22 362,-22"/>
|
||||
</g>
|
||||
<!-- flag8 -->
|
||||
<g id="node2" class="node"><title>flag8</title>
|
||||
<text text-anchor="middle" x="333" y="-254.9" font-family="Sans" font-size="14.00">0</text>
|
||||
</g>
|
||||
<!-- flag7 -->
|
||||
<g id="node3" class="node"><title>flag7</title>
|
||||
<text text-anchor="middle" x="300" y="-254.9" font-family="Sans" font-size="14.00">0</text>
|
||||
</g>
|
||||
<!-- flag6 -->
|
||||
<g id="node4" class="node"><title>flag6</title>
|
||||
<text text-anchor="middle" x="267" y="-254.9" font-family="Sans" font-size="14.00">0</text>
|
||||
</g>
|
||||
<!-- flag5 -->
|
||||
<g id="node5" class="node"><title>flag5</title>
|
||||
<text text-anchor="middle" x="234" y="-254.9" font-family="Sans" font-size="14.00">1</text>
|
||||
</g>
|
||||
<!-- flag4 -->
|
||||
<g id="node6" class="node"><title>flag4</title>
|
||||
<text text-anchor="middle" x="201" y="-254.9" font-family="Sans" font-size="14.00">1</text>
|
||||
</g>
|
||||
<!-- flag3 -->
|
||||
<g id="node7" class="node"><title>flag3</title>
|
||||
<text text-anchor="middle" x="168" y="-254.9" font-family="Sans" font-size="14.00">1</text>
|
||||
</g>
|
||||
<!-- flag2 -->
|
||||
<g id="node8" class="node"><title>flag2</title>
|
||||
<text text-anchor="middle" x="135" y="-254.9" font-family="Sans" font-size="14.00">0</text>
|
||||
</g>
|
||||
<!-- flag1 -->
|
||||
<g id="node9" class="node"><title>flag1</title>
|
||||
<polygon fill="lightgrey" stroke="lightgrey" stroke-width="1.75" points="115,-271.5 89,-271.5 89,-246.5 115,-246.5 115,-271.5"/>
|
||||
<text text-anchor="middle" x="102" y="-254.9" font-family="Sans" font-size="14.00">1</text>
|
||||
</g>
|
||||
<!-- flag_label -->
|
||||
<g id="node10" class="node"><title>flag_label</title>
|
||||
<text text-anchor="middle" x="53" y="-254.1" font-family="Sans" font-size="16.00">Flags</text>
|
||||
</g>
|
||||
<!-- hash4 -->
|
||||
<g id="node12" class="node"><title>hash4</title>
|
||||
<text text-anchor="middle" x="307" y="-198.9" font-family="Sans" font-size="14.00">H4</text>
|
||||
</g>
|
||||
<!-- hash3 -->
|
||||
<g id="node13" class="node"><title>hash3</title>
|
||||
<text text-anchor="middle" x="246" y="-198.9" font-family="Sans" font-size="14.00">H3</text>
|
||||
</g>
|
||||
<!-- hash2 -->
|
||||
<g id="node14" class="node"><title>hash2</title>
|
||||
<text text-anchor="middle" x="185" y="-198.9" font-family="Sans" font-size="14.00">H2</text>
|
||||
</g>
|
||||
<!-- hash1 -->
|
||||
<g id="node15" class="node"><title>hash1</title>
|
||||
<text text-anchor="middle" x="124" y="-198.9" font-family="Sans" font-size="14.00">H1</text>
|
||||
</g>
|
||||
<!-- hash_label -->
|
||||
<g id="node16" class="node"><title>hash_label</title>
|
||||
<text text-anchor="middle" x="53" y="-198.1" font-family="Sans" font-size="16.00">Hashes</text>
|
||||
</g>
|
||||
<!-- hash_label->flag_label -->
|
||||
<!-- matched_filter_label -->
|
||||
<g id="node20" class="node"><title>matched_filter_label</title>
|
||||
<text text-anchor="middle" x="306" y="-69.8" font-family="Sans" font-size="18.00">TXID</text>
|
||||
<text text-anchor="middle" x="306" y="-47.8" font-family="Sans" font-size="18.00">Filter</text>
|
||||
<text text-anchor="middle" x="306" y="-25.8" font-family="Sans" font-size="18.00">Match</text>
|
||||
</g>
|
||||
<!-- matched_filter -->
|
||||
<g id="node24" class="node"><title>matched_filter</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="4" points="333,-134 279,-134 279,-98 333,-98 333,-134"/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="291,-134 279,-122 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="279,-110 291,-98 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="321,-98 333,-110 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="333,-122 321,-134 "/>
|
||||
</g>
|
||||
<!-- matched_filter_label->matched_filter -->
|
||||
<!-- hash_from_list_label -->
|
||||
<g id="node21" class="node"><title>hash_from_list_label</title>
|
||||
<text text-anchor="middle" x="234" y="-69.8" font-family="Sans" font-size="18.00">Hash</text>
|
||||
<text text-anchor="middle" x="234" y="-47.8" font-family="Sans" font-size="18.00">From</text>
|
||||
<text text-anchor="middle" x="234" y="-25.8" font-family="Sans" font-size="18.00">List</text>
|
||||
</g>
|
||||
<!-- hash_from_list -->
|
||||
<g id="node25" class="node"><title>hash_from_list</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="261,-134 207,-134 207,-98 261,-98 261,-134"/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="219,-134 207,-122 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="207,-110 219,-98 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="249,-98 261,-110 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="261,-122 249,-134 "/>
|
||||
<text text-anchor="middle" x="234" y="-110.8" font-family="Sans" font-size="18.00">H1</text>
|
||||
</g>
|
||||
<!-- hash_from_list_label->hash_from_list -->
|
||||
<!-- hash_computed_label -->
|
||||
<g id="node22" class="node"><title>hash_computed_label</title>
|
||||
<text text-anchor="middle" x="163" y="-69.8" font-family="Sans" font-size="18.00">Hash</text>
|
||||
<text text-anchor="middle" x="163" y="-47.8" font-family="Sans" font-size="18.00">Com-</text>
|
||||
<text text-anchor="middle" x="163" y="-25.8" font-family="Sans" font-size="18.00">puted</text>
|
||||
</g>
|
||||
<!-- hash_computed -->
|
||||
<g id="node26" class="node"><title>hash_computed</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="190,-134 136,-134 136,-98 190,-98 190,-134"/>
|
||||
<text text-anchor="middle" x="163" y="-110.8" font-family="Sans" font-size="18.00">H()</text>
|
||||
</g>
|
||||
<!-- hash_computed_label->hash_computed -->
|
||||
<!-- waiting_label -->
|
||||
<g id="node23" class="node"><title>waiting_label</title>
|
||||
<text text-anchor="middle" x="91" y="-69.8" font-family="Sans" font-size="18.00">Wait</text>
|
||||
<text text-anchor="middle" x="91" y="-47.8" font-family="Sans" font-size="18.00">For</text>
|
||||
<text text-anchor="middle" x="91" y="-25.8" font-family="Sans" font-size="18.00">Child</text>
|
||||
</g>
|
||||
<!-- waiting -->
|
||||
<g id="node27" class="node"><title>waiting</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="118,-134 64,-134 64,-98 118,-98 118,-134"/>
|
||||
<text text-anchor="middle" x="91" y="-110.8" font-family="Sans" font-size="18.00">↓</text>
|
||||
</g>
|
||||
<!-- waiting_label->waiting -->
|
||||
<!-- pre_legend_label -->
|
||||
<!-- legend_label -->
|
||||
<!-- pre_legend_label->legend_label -->
|
||||
<!-- legend_label->hash_label -->
|
||||
<!-- root_row -->
|
||||
<g id="node38" class="node"><title>root_row</title>
|
||||
</g>
|
||||
<!-- row1 -->
|
||||
<g id="node39" class="node"><title>row1</title>
|
||||
<text text-anchor="middle" x="818" y="-207.6" font-family="Sans" font-size="16.00">Non-TXID</text>
|
||||
<text text-anchor="middle" x="818" y="-188.6" font-family="Sans" font-size="16.00">Nodes</text>
|
||||
</g>
|
||||
<!-- row1->root_row -->
|
||||
<g id="edge24" class="edge"><title>row1->root_row</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M818,-226.101C818,-227.645 818,-229.209 818,-230.775"/>
|
||||
<polygon fill="black" stroke="black" points="814.5,-230.913 818,-240.913 821.5,-230.913 814.5,-230.913"/>
|
||||
</g>
|
||||
<!-- row2 -->
|
||||
<!-- row2->row1 -->
|
||||
<g id="edge22" class="edge"><title>row2->row1</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M818.674,-144.378C818.542,-155.812 818.393,-168.837 818.268,-179.702"/>
|
||||
<polygon fill="black" stroke="black" points="822.178,-144.066 818.793,-134.026 815.178,-143.986 822.178,-144.066"/>
|
||||
</g>
|
||||
<!-- txid_row -->
|
||||
<g id="node41" class="node"><title>txid_row</title>
|
||||
<text text-anchor="middle" x="830" y="-57.6" font-family="Sans" font-size="16.00">TXID</text>
|
||||
<text text-anchor="middle" x="830" y="-38.6" font-family="Sans" font-size="16.00">Nodes</text>
|
||||
</g>
|
||||
<!-- txid_row->row2 -->
|
||||
<!-- G -->
|
||||
<g id="node45" class="node"><title>G</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="790,-71 736,-71 736,-35 790,-35 790,-71"/>
|
||||
</g>
|
||||
<!-- G2 -->
|
||||
<g id="node63" class="node"><title>G2</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="759,-134 705,-134 705,-98 759,-98 759,-134"/>
|
||||
</g>
|
||||
<!-- G->G2 -->
|
||||
<g id="edge40" class="edge"><title>G->G2</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M751.972,-71.2222C747.646,-79.5078 742.829,-89.2936 738.986,-97.6005"/>
|
||||
</g>
|
||||
<!-- F -->
|
||||
<g id="node46" class="node"><title>F</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="729,-71 675,-71 675,-35 729,-35 729,-71"/>
|
||||
</g>
|
||||
<!-- EF -->
|
||||
<g id="node60" class="node"><title>EF</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="678,-134 624,-134 624,-98 678,-98 678,-134"/>
|
||||
</g>
|
||||
<!-- F->EF -->
|
||||
<g id="edge38" class="edge"><title>F->EF</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M685.187,-71.2222C678.23,-79.5078 670.307,-89.2936 663.828,-97.6005"/>
|
||||
</g>
|
||||
<!-- E -->
|
||||
<g id="node47" class="node"><title>E</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="668,-71 614,-71 614,-35 668,-35 668,-71"/>
|
||||
</g>
|
||||
<!-- E->EF -->
|
||||
<g id="edge36" class="edge"><title>E->EF</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M641.83,-71.2222C642.897,-79.5078 644.448,-89.2936 646.012,-97.6005"/>
|
||||
</g>
|
||||
<!-- D -->
|
||||
<g id="node48" class="node"><title>D</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="607,-71 553,-71 553,-35 607,-35 607,-71"/>
|
||||
</g>
|
||||
<!-- CD -->
|
||||
<g id="node57" class="node"><title>CD</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="577,-134 523,-134 523,-98 577,-98 577,-134"/>
|
||||
</g>
|
||||
<!-- D->CD -->
|
||||
<g id="edge34" class="edge"><title>D->CD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M569.261,-71.2222C565.066,-79.5078 560.405,-89.2936 556.694,-97.6005"/>
|
||||
</g>
|
||||
<!-- C -->
|
||||
<g id="node49" class="node"><title>C</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="546,-71 492,-71 492,-35 546,-35 546,-71"/>
|
||||
</g>
|
||||
<!-- C->CD -->
|
||||
<g id="edge32" class="edge"><title>C->CD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M525.904,-71.2222C529.733,-79.5078 534.546,-89.2936 538.879,-97.6005"/>
|
||||
</g>
|
||||
<!-- B -->
|
||||
<g id="node50" class="node"><title>B</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="485,-71 431,-71 431,-35 485,-35 485,-71"/>
|
||||
</g>
|
||||
<!-- AB -->
|
||||
<g id="node54" class="node"><title>AB</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="485,-134 431,-134 431,-98 485,-98 485,-134"/>
|
||||
</g>
|
||||
<!-- B->AB -->
|
||||
<g id="edge30" class="edge"><title>B->AB</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M455.938,-71.2222C455.689,-79.5078 455.687,-89.2936 455.933,-97.6005"/>
|
||||
</g>
|
||||
<!-- A -->
|
||||
<g id="node51" class="node"><title>A</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="424,-71 370,-71 370,-35 424,-35 424,-71"/>
|
||||
</g>
|
||||
<!-- A->AB -->
|
||||
<g id="edge28" class="edge"><title>A->AB</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M412.582,-71.2222C420.355,-79.5078 429.829,-89.2936 438.117,-97.6005"/>
|
||||
</g>
|
||||
<!-- ROOT -->
|
||||
<g id="node52" class="node"><title>ROOT</title>
|
||||
<polygon fill="lightgrey" stroke="black" stroke-width="1.75" points="628,-277 574,-277 574,-241 628,-241 628,-277"/>
|
||||
<text text-anchor="middle" x="601" y="-254.1" font-family="Sans" font-size="16.00">↓</text>
|
||||
</g>
|
||||
<!-- ABCD -->
|
||||
<g id="node72" class="node"><title>ABCD</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="577,-221 523,-221 523,-185 577,-185 577,-221"/>
|
||||
</g>
|
||||
<!-- ROOT->ABCD -->
|
||||
<!-- EFG2 -->
|
||||
<g id="node75" class="node"><title>EFG2</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="678,-221 624,-221 624,-185 678,-185 678,-221"/>
|
||||
</g>
|
||||
<!-- ROOT->EFG2 -->
|
||||
<!-- AB->B -->
|
||||
<!-- AB->A -->
|
||||
<!-- AB->ABCD -->
|
||||
<g id="edge56" class="edge"><title>AB->ABCD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M475.198,-134.026C490.473,-148.958 512.801,-170.072 529.099,-184.997"/>
|
||||
</g>
|
||||
<!-- CD->D -->
|
||||
<!-- CD->C -->
|
||||
<!-- CD->ABCD -->
|
||||
<g id="edge58" class="edge"><title>CD->ABCD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M548.136,-134.026C547.621,-148.958 547.621,-170.072 548.137,-184.997"/>
|
||||
</g>
|
||||
<!-- EF->F -->
|
||||
<!-- EF->E -->
|
||||
<!-- EF->EFG2 -->
|
||||
<g id="edge60" class="edge"><title>EF->EFG2</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M649.136,-134.026C648.621,-148.958 648.621,-170.072 649.137,-184.997"/>
|
||||
</g>
|
||||
<!-- G2->G -->
|
||||
<!-- G2->EFG2 -->
|
||||
<g id="edge62" class="edge"><title>G2->EFG2</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M713.353,-134.026C698.936,-148.958 679.279,-170.072 665.898,-184.997"/>
|
||||
</g>
|
||||
<!-- ABCD->ROOT -->
|
||||
<g id="edge72" class="edge"><title>ABCD->ROOT</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M571.101,-228.632C574.759,-232.676 578.541,-236.786 582.136,-240.622"/>
|
||||
<polygon fill="black" stroke="black" points="573.575,-226.148 564.299,-221.027 568.357,-230.814 573.575,-226.148"/>
|
||||
</g>
|
||||
<!-- ABCD->AB -->
|
||||
<!-- ABCD->CD -->
|
||||
<!-- EFG2->ROOT -->
|
||||
<g id="edge74" class="edge"><title>EFG2->ROOT</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M632.786,-221.027C627.018,-227.294 620.735,-234.327 615.281,-240.622"/>
|
||||
</g>
|
||||
<!-- EFG2->EF -->
|
||||
<!-- EFG2->G2 -->
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 14 KiB |
|
@ -0,0 +1,141 @@
|
|||
digraph merkleblock {
|
||||
|
||||
//size="6.25,2.22";
|
||||
size="6.25";
|
||||
rankdir=BT
|
||||
nodesep=0.1
|
||||
splines="false"
|
||||
|
||||
edge [ penwidth = 1.75, fontname="Sans" ]
|
||||
node [ penwidth = 1.75, shape = "box", fontname="Sans", ]
|
||||
graph [ penwidth = 1.75, fontname="Sans", fontsize = 16 ]
|
||||
|
||||
subgraph cluster_flags {
|
||||
node [ label = "", width=0.2, height=0.2, fontsize = 14, shape = "none" ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
flag8 [ label = "0" ];
|
||||
flag7 [ label = "0" ];
|
||||
flag6 [ label = "0" ];
|
||||
flag5 [ label = "1" ];
|
||||
flag4 [ label = "1" ];
|
||||
flag3 [ label = "1" ];
|
||||
flag2 [ label = "0", style = "filled" ];
|
||||
flag1 [ label = "1", style = "invis" ];
|
||||
flag_label [ label = "Flags", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
subgraph cluster_hashes {
|
||||
graph [ penwidth = 0 ];
|
||||
node [ shape = "none" ];
|
||||
|
||||
hash4 [ label = "H4" ];
|
||||
hash3 [ label = "H3" ];
|
||||
hash2 [ label = "H2" ];
|
||||
hash1 [ label = "H1", style = "filled" ];
|
||||
hash_label [ label = "Hashes", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
hash_label -> flag_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_legend {
|
||||
node [ label = "", fontsize = 18 ];
|
||||
graph [ penwidth = 0 ];
|
||||
edge [ style = "invis" ];
|
||||
ranksep = 3;
|
||||
|
||||
|
||||
{
|
||||
node [ shape = "none" ];
|
||||
matched_filter_label [ label = "TXID\nFilter\nMatch" ];
|
||||
hash_from_list_label [ label = "Hash\nFrom\nList" ];
|
||||
hash_computed_label [ label = "Hash\nCom-\nputed" ];
|
||||
waiting_label [ label = "Wait\nFor\nChild" ];
|
||||
}
|
||||
|
||||
matched_filter [ penwidth = 4, style = "diagonals", bgcolor = grey ];
|
||||
hash_from_list [ label = "H1", style = "diagonals" ];
|
||||
hash_computed [ label = "H()" ];
|
||||
waiting [ label = "↓" ];
|
||||
|
||||
pre_legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
pre_legend_label -> legend_label [ style = "invis" ];
|
||||
|
||||
|
||||
|
||||
waiting_label -> waiting;
|
||||
hash_from_list_label -> hash_from_list;
|
||||
hash_computed_label -> hash_computed;
|
||||
matched_filter_label -> matched_filter;
|
||||
|
||||
labelloc = b;
|
||||
label = "Legend"
|
||||
|
||||
}
|
||||
|
||||
legend_label -> hash_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_tree {
|
||||
edge [ dir = "none" ];
|
||||
node [ label = "", fontsize = 16 ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
{
|
||||
root_row [ shape = "none" ];
|
||||
row1 [ shape = "none", label = "Non-TXID\nNodes" ];
|
||||
row2 [ shape = "none", style = "invis", width = 1.2 ];
|
||||
txid_row [ label = "TXID\nNodes", shape = "none" ];
|
||||
|
||||
row2 -> row1 [ dir = "back" ];
|
||||
row1 -> root_row [ dir = ""];
|
||||
txid_row -> row2 [ style = "invis" ];
|
||||
}
|
||||
|
||||
G;
|
||||
F;
|
||||
E;
|
||||
D;
|
||||
C;
|
||||
B;
|
||||
A;
|
||||
|
||||
ABCD [ style = "filled,diagonals", label = "H1" ]
|
||||
ROOT [ label = "↓" ]
|
||||
|
||||
A -> AB;
|
||||
B -> AB;
|
||||
C -> CD;
|
||||
D -> CD;
|
||||
E -> EF;
|
||||
F -> EF;
|
||||
G -> G2;
|
||||
|
||||
AB -> A [ constraint = false, style = "invis" ];
|
||||
AB -> B [ constraint = false, style = "invis" ];
|
||||
CD -> C [ constraint = false, style = "invis" ];
|
||||
CD -> D [ constraint = false, style = "invis" ];
|
||||
EF -> E [ constraint = false, style = "invis" ];
|
||||
EF -> F [ constraint = false, style = "invis" ];
|
||||
G2 -> G [ constraint = false, style = "invis" ];
|
||||
|
||||
AB -> ABCD;
|
||||
CD -> ABCD;
|
||||
EF -> EFG2;
|
||||
G2 -> EFG2;
|
||||
|
||||
ABCD -> AB [ constraint = false, style = "invis" ];
|
||||
ABCD -> CD [ constraint = false, style = "invis" ];
|
||||
EFG2 -> EF [ constraint = false, style = "invis" ];
|
||||
EFG2 -> G2 [ constraint = false, style = "invis" ];
|
||||
|
||||
ABCD -> ROOT [ dir = "back" ];
|
||||
EFG2 -> ROOT [ dir = "back" ];
|
||||
|
||||
ROOT -> ABCD [ constraint = false, dir = "back" ];
|
||||
ROOT -> EFG2 [ constraint = false, style = "invis" ];
|
||||
|
||||
}
|
||||
|
||||
//label = "Parsing A MerkleBlock Message"
|
||||
}
|
After Width: | Height: | Size: 6.2 KiB |
|
@ -0,0 +1,299 @@
|
|||
<?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: merkleblock Pages: 1 -->
|
||||
<svg width="450pt" height="153pt"
|
||||
viewBox="0.00 0.00 450.00 152.71" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g id="graph1" class="graph" transform="scale(0.507328 0.507328) rotate(0) translate(4 297)">
|
||||
<title>merkleblock</title>
|
||||
<polygon fill="white" stroke="white" points="-4,5 -4,-297 884,-297 884,5 -4,5"/>
|
||||
<g id="graph2" class="cluster"><title>cluster_flags</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="0" points="16,-237 16,-281 354,-281 354,-237 16,-237"/>
|
||||
</g>
|
||||
<g id="graph3" class="cluster"><title>cluster_hashes</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="0" points="8,-177 8,-229 342,-229 342,-177 8,-177"/>
|
||||
</g>
|
||||
<g id="graph4" class="cluster"><title>cluster_legend</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="0" points="45,-8 45,-169 349,-169 349,-8 45,-8"/>
|
||||
<text text-anchor="middle" x="197" y="-150.6" font-family="Sans" font-size="16.00">Legend</text>
|
||||
</g>
|
||||
<g id="graph6" class="cluster"><title>cluster_tree</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="0" points="362,-22 362,-285 871,-285 871,-22 362,-22"/>
|
||||
</g>
|
||||
<!-- flag8 -->
|
||||
<g id="node2" class="node"><title>flag8</title>
|
||||
<text text-anchor="middle" x="333" y="-254.9" font-family="Sans" font-size="14.00">0</text>
|
||||
</g>
|
||||
<!-- flag7 -->
|
||||
<g id="node3" class="node"><title>flag7</title>
|
||||
<text text-anchor="middle" x="300" y="-254.9" font-family="Sans" font-size="14.00">0</text>
|
||||
</g>
|
||||
<!-- flag6 -->
|
||||
<g id="node4" class="node"><title>flag6</title>
|
||||
<text text-anchor="middle" x="267" y="-254.9" font-family="Sans" font-size="14.00">0</text>
|
||||
</g>
|
||||
<!-- flag5 -->
|
||||
<g id="node5" class="node"><title>flag5</title>
|
||||
<text text-anchor="middle" x="234" y="-254.9" font-family="Sans" font-size="14.00">1</text>
|
||||
</g>
|
||||
<!-- flag4 -->
|
||||
<g id="node6" class="node"><title>flag4</title>
|
||||
<text text-anchor="middle" x="201" y="-254.9" font-family="Sans" font-size="14.00">1</text>
|
||||
</g>
|
||||
<!-- flag3 -->
|
||||
<g id="node7" class="node"><title>flag3</title>
|
||||
<text text-anchor="middle" x="168" y="-254.9" font-family="Sans" font-size="14.00">1</text>
|
||||
</g>
|
||||
<!-- flag2 -->
|
||||
<g id="node8" class="node"><title>flag2</title>
|
||||
<polygon fill="lightgrey" stroke="lightgrey" stroke-width="1.75" points="148,-271.5 122,-271.5 122,-246.5 148,-246.5 148,-271.5"/>
|
||||
<text text-anchor="middle" x="135" y="-254.9" font-family="Sans" font-size="14.00">0</text>
|
||||
</g>
|
||||
<!-- flag1 -->
|
||||
<!-- flag_label -->
|
||||
<g id="node10" class="node"><title>flag_label</title>
|
||||
<text text-anchor="middle" x="53" y="-254.1" font-family="Sans" font-size="16.00">Flags</text>
|
||||
</g>
|
||||
<!-- hash4 -->
|
||||
<g id="node12" class="node"><title>hash4</title>
|
||||
<text text-anchor="middle" x="307" y="-198.9" font-family="Sans" font-size="14.00">H4</text>
|
||||
</g>
|
||||
<!-- hash3 -->
|
||||
<g id="node13" class="node"><title>hash3</title>
|
||||
<text text-anchor="middle" x="246" y="-198.9" font-family="Sans" font-size="14.00">H3</text>
|
||||
</g>
|
||||
<!-- hash2 -->
|
||||
<g id="node14" class="node"><title>hash2</title>
|
||||
<text text-anchor="middle" x="185" y="-198.9" font-family="Sans" font-size="14.00">H2</text>
|
||||
</g>
|
||||
<!-- hash1 -->
|
||||
<g id="node15" class="node"><title>hash1</title>
|
||||
<polygon fill="lightgrey" stroke="lightgrey" stroke-width="1.75" points="151,-221 97,-221 97,-185 151,-185 151,-221"/>
|
||||
<text text-anchor="middle" x="124" y="-198.9" font-family="Sans" font-size="14.00">H1</text>
|
||||
</g>
|
||||
<!-- hash_label -->
|
||||
<g id="node16" class="node"><title>hash_label</title>
|
||||
<text text-anchor="middle" x="53" y="-198.1" font-family="Sans" font-size="16.00">Hashes</text>
|
||||
</g>
|
||||
<!-- hash_label->flag_label -->
|
||||
<!-- matched_filter_label -->
|
||||
<g id="node20" class="node"><title>matched_filter_label</title>
|
||||
<text text-anchor="middle" x="306" y="-69.8" font-family="Sans" font-size="18.00">TXID</text>
|
||||
<text text-anchor="middle" x="306" y="-47.8" font-family="Sans" font-size="18.00">Filter</text>
|
||||
<text text-anchor="middle" x="306" y="-25.8" font-family="Sans" font-size="18.00">Match</text>
|
||||
</g>
|
||||
<!-- matched_filter -->
|
||||
<g id="node24" class="node"><title>matched_filter</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="4" points="333,-134 279,-134 279,-98 333,-98 333,-134"/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="291,-134 279,-122 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="279,-110 291,-98 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="321,-98 333,-110 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="333,-122 321,-134 "/>
|
||||
</g>
|
||||
<!-- matched_filter_label->matched_filter -->
|
||||
<!-- hash_from_list_label -->
|
||||
<g id="node21" class="node"><title>hash_from_list_label</title>
|
||||
<text text-anchor="middle" x="234" y="-69.8" font-family="Sans" font-size="18.00">Hash</text>
|
||||
<text text-anchor="middle" x="234" y="-47.8" font-family="Sans" font-size="18.00">From</text>
|
||||
<text text-anchor="middle" x="234" y="-25.8" font-family="Sans" font-size="18.00">List</text>
|
||||
</g>
|
||||
<!-- hash_from_list -->
|
||||
<g id="node25" class="node"><title>hash_from_list</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="261,-134 207,-134 207,-98 261,-98 261,-134"/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="219,-134 207,-122 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="207,-110 219,-98 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="249,-98 261,-110 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="261,-122 249,-134 "/>
|
||||
<text text-anchor="middle" x="234" y="-110.8" font-family="Sans" font-size="18.00">H1</text>
|
||||
</g>
|
||||
<!-- hash_from_list_label->hash_from_list -->
|
||||
<!-- hash_computed_label -->
|
||||
<g id="node22" class="node"><title>hash_computed_label</title>
|
||||
<text text-anchor="middle" x="163" y="-69.8" font-family="Sans" font-size="18.00">Hash</text>
|
||||
<text text-anchor="middle" x="163" y="-47.8" font-family="Sans" font-size="18.00">Com-</text>
|
||||
<text text-anchor="middle" x="163" y="-25.8" font-family="Sans" font-size="18.00">puted</text>
|
||||
</g>
|
||||
<!-- hash_computed -->
|
||||
<g id="node26" class="node"><title>hash_computed</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="190,-134 136,-134 136,-98 190,-98 190,-134"/>
|
||||
<text text-anchor="middle" x="163" y="-110.8" font-family="Sans" font-size="18.00">H()</text>
|
||||
</g>
|
||||
<!-- hash_computed_label->hash_computed -->
|
||||
<!-- waiting_label -->
|
||||
<g id="node23" class="node"><title>waiting_label</title>
|
||||
<text text-anchor="middle" x="91" y="-69.8" font-family="Sans" font-size="18.00">Wait</text>
|
||||
<text text-anchor="middle" x="91" y="-47.8" font-family="Sans" font-size="18.00">For</text>
|
||||
<text text-anchor="middle" x="91" y="-25.8" font-family="Sans" font-size="18.00">Child</text>
|
||||
</g>
|
||||
<!-- waiting -->
|
||||
<g id="node27" class="node"><title>waiting</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="118,-134 64,-134 64,-98 118,-98 118,-134"/>
|
||||
<text text-anchor="middle" x="91" y="-110.8" font-family="Sans" font-size="18.00">↓</text>
|
||||
</g>
|
||||
<!-- waiting_label->waiting -->
|
||||
<!-- pre_legend_label -->
|
||||
<!-- legend_label -->
|
||||
<!-- pre_legend_label->legend_label -->
|
||||
<!-- legend_label->hash_label -->
|
||||
<!-- root_row -->
|
||||
<g id="node38" class="node"><title>root_row</title>
|
||||
</g>
|
||||
<!-- row1 -->
|
||||
<g id="node39" class="node"><title>row1</title>
|
||||
<text text-anchor="middle" x="818" y="-207.6" font-family="Sans" font-size="16.00">Non-TXID</text>
|
||||
<text text-anchor="middle" x="818" y="-188.6" font-family="Sans" font-size="16.00">Nodes</text>
|
||||
</g>
|
||||
<!-- row1->root_row -->
|
||||
<g id="edge24" class="edge"><title>row1->root_row</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M818,-226.101C818,-227.645 818,-229.209 818,-230.775"/>
|
||||
<polygon fill="black" stroke="black" points="814.5,-230.913 818,-240.913 821.5,-230.913 814.5,-230.913"/>
|
||||
</g>
|
||||
<!-- row2 -->
|
||||
<!-- row2->row1 -->
|
||||
<g id="edge22" class="edge"><title>row2->row1</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M818.674,-144.378C818.542,-155.812 818.393,-168.837 818.268,-179.702"/>
|
||||
<polygon fill="black" stroke="black" points="822.178,-144.066 818.793,-134.026 815.178,-143.986 822.178,-144.066"/>
|
||||
</g>
|
||||
<!-- txid_row -->
|
||||
<g id="node41" class="node"><title>txid_row</title>
|
||||
<text text-anchor="middle" x="830" y="-57.6" font-family="Sans" font-size="16.00">TXID</text>
|
||||
<text text-anchor="middle" x="830" y="-38.6" font-family="Sans" font-size="16.00">Nodes</text>
|
||||
</g>
|
||||
<!-- txid_row->row2 -->
|
||||
<!-- G -->
|
||||
<g id="node45" class="node"><title>G</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="790,-71 736,-71 736,-35 790,-35 790,-71"/>
|
||||
</g>
|
||||
<!-- G2 -->
|
||||
<g id="node64" class="node"><title>G2</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="759,-134 705,-134 705,-98 759,-98 759,-134"/>
|
||||
</g>
|
||||
<!-- G->G2 -->
|
||||
<g id="edge40" class="edge"><title>G->G2</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M751.972,-71.2222C747.646,-79.5078 742.829,-89.2936 738.986,-97.6005"/>
|
||||
</g>
|
||||
<!-- F -->
|
||||
<g id="node46" class="node"><title>F</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="729,-71 675,-71 675,-35 729,-35 729,-71"/>
|
||||
</g>
|
||||
<!-- EF -->
|
||||
<g id="node61" class="node"><title>EF</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="678,-134 624,-134 624,-98 678,-98 678,-134"/>
|
||||
</g>
|
||||
<!-- F->EF -->
|
||||
<g id="edge38" class="edge"><title>F->EF</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M685.187,-71.2222C678.23,-79.5078 670.307,-89.2936 663.828,-97.6005"/>
|
||||
</g>
|
||||
<!-- E -->
|
||||
<g id="node47" class="node"><title>E</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="668,-71 614,-71 614,-35 668,-35 668,-71"/>
|
||||
</g>
|
||||
<!-- E->EF -->
|
||||
<g id="edge36" class="edge"><title>E->EF</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M641.83,-71.2222C642.897,-79.5078 644.448,-89.2936 646.012,-97.6005"/>
|
||||
</g>
|
||||
<!-- D -->
|
||||
<g id="node48" class="node"><title>D</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="607,-71 553,-71 553,-35 607,-35 607,-71"/>
|
||||
</g>
|
||||
<!-- CD -->
|
||||
<g id="node58" class="node"><title>CD</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="577,-134 523,-134 523,-98 577,-98 577,-134"/>
|
||||
</g>
|
||||
<!-- D->CD -->
|
||||
<g id="edge34" class="edge"><title>D->CD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M569.261,-71.2222C565.066,-79.5078 560.405,-89.2936 556.694,-97.6005"/>
|
||||
</g>
|
||||
<!-- C -->
|
||||
<g id="node49" class="node"><title>C</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="546,-71 492,-71 492,-35 546,-35 546,-71"/>
|
||||
</g>
|
||||
<!-- C->CD -->
|
||||
<g id="edge32" class="edge"><title>C->CD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M525.904,-71.2222C529.733,-79.5078 534.546,-89.2936 538.879,-97.6005"/>
|
||||
</g>
|
||||
<!-- B -->
|
||||
<g id="node50" class="node"><title>B</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="485,-71 431,-71 431,-35 485,-35 485,-71"/>
|
||||
</g>
|
||||
<!-- AB -->
|
||||
<g id="node55" class="node"><title>AB</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="485,-134 431,-134 431,-98 485,-98 485,-134"/>
|
||||
</g>
|
||||
<!-- B->AB -->
|
||||
<g id="edge30" class="edge"><title>B->AB</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M455.938,-71.2222C455.689,-79.5078 455.687,-89.2936 455.933,-97.6005"/>
|
||||
</g>
|
||||
<!-- A -->
|
||||
<g id="node51" class="node"><title>A</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="424,-71 370,-71 370,-35 424,-35 424,-71"/>
|
||||
</g>
|
||||
<!-- A->AB -->
|
||||
<g id="edge28" class="edge"><title>A->AB</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M412.582,-71.2222C420.355,-79.5078 429.829,-89.2936 438.117,-97.6005"/>
|
||||
</g>
|
||||
<!-- ABCD -->
|
||||
<g id="node52" class="node"><title>ABCD</title>
|
||||
<polygon fill="lightgrey" stroke="black" stroke-width="1.75" points="577,-221 523,-221 523,-185 577,-185 577,-221"/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="535,-221 523,-209 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="523,-197 535,-185 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="565,-185 577,-197 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="577,-209 565,-221 "/>
|
||||
<text text-anchor="middle" x="550" y="-198.1" font-family="Sans" font-size="16.00">H1</text>
|
||||
</g>
|
||||
<!-- ROOT -->
|
||||
<g id="node53" class="node"><title>ROOT</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="628,-277 574,-277 574,-241 628,-241 628,-277"/>
|
||||
<text text-anchor="middle" x="601" y="-254.1" font-family="Sans" font-size="16.00">↓</text>
|
||||
</g>
|
||||
<!-- ABCD->ROOT -->
|
||||
<g id="edge72" class="edge"><title>ABCD->ROOT</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M571.101,-228.632C574.759,-232.676 578.541,-236.786 582.136,-240.622"/>
|
||||
<polygon fill="black" stroke="black" points="573.575,-226.148 564.299,-221.027 568.357,-230.814 573.575,-226.148"/>
|
||||
</g>
|
||||
<!-- ABCD->AB -->
|
||||
<!-- ABCD->CD -->
|
||||
<!-- ROOT->ABCD -->
|
||||
<g id="edge76" class="edge"><title>ROOT->ABCD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M580.312,-232.997C576.653,-228.949 572.86,-224.846 569.241,-221.027"/>
|
||||
<polygon fill="black" stroke="black" points="577.837,-235.48 587.1,-240.622 583.065,-230.826 577.837,-235.48"/>
|
||||
</g>
|
||||
<!-- EFG2 -->
|
||||
<g id="node75" class="node"><title>EFG2</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="678,-221 624,-221 624,-185 678,-185 678,-221"/>
|
||||
</g>
|
||||
<!-- ROOT->EFG2 -->
|
||||
<!-- AB->B -->
|
||||
<!-- AB->A -->
|
||||
<!-- AB->ABCD -->
|
||||
<g id="edge56" class="edge"><title>AB->ABCD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M475.198,-134.026C490.473,-148.958 512.801,-170.072 529.099,-184.997"/>
|
||||
</g>
|
||||
<!-- CD->D -->
|
||||
<!-- CD->C -->
|
||||
<!-- CD->ABCD -->
|
||||
<g id="edge58" class="edge"><title>CD->ABCD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M548.136,-134.026C547.621,-148.958 547.621,-170.072 548.137,-184.997"/>
|
||||
</g>
|
||||
<!-- EF->F -->
|
||||
<!-- EF->E -->
|
||||
<!-- EF->EFG2 -->
|
||||
<g id="edge60" class="edge"><title>EF->EFG2</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M649.136,-134.026C648.621,-148.958 648.621,-170.072 649.137,-184.997"/>
|
||||
</g>
|
||||
<!-- G2->G -->
|
||||
<!-- G2->EFG2 -->
|
||||
<g id="edge62" class="edge"><title>G2->EFG2</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M713.353,-134.026C698.936,-148.958 679.279,-170.072 665.898,-184.997"/>
|
||||
</g>
|
||||
<!-- EFG2->ROOT -->
|
||||
<g id="edge74" class="edge"><title>EFG2->ROOT</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M625.871,-228.632C622.236,-232.676 618.605,-236.786 615.281,-240.622"/>
|
||||
<polygon fill="black" stroke="black" points="628.649,-230.78 632.786,-221.027 623.469,-226.071 628.649,-230.78"/>
|
||||
</g>
|
||||
<!-- EFG2->EF -->
|
||||
<!-- EFG2->G2 -->
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 15 KiB |
|
@ -0,0 +1,142 @@
|
|||
digraph merkleblock {
|
||||
|
||||
//size="6.25,2.22";
|
||||
size="6.25";
|
||||
rankdir=BT
|
||||
nodesep=0.1
|
||||
splines="false"
|
||||
|
||||
edge [ penwidth = 1.75, fontname="Sans" ]
|
||||
node [ penwidth = 1.75, shape = "box", fontname="Sans", ]
|
||||
graph [ penwidth = 1.75, fontname="Sans", fontsize = 16 ]
|
||||
|
||||
subgraph cluster_flags {
|
||||
node [ label = "", width=0.2, height=0.2, fontsize = 14, shape = "none" ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
flag8 [ label = "0" ];
|
||||
flag7 [ label = "0" ];
|
||||
flag6 [ label = "0" ];
|
||||
flag5 [ label = "1" ];
|
||||
flag4 [ label = "1" ];
|
||||
flag3 [ label = "1", style = "filled" ];
|
||||
flag2 [ label = "0", style = "invis" ];
|
||||
flag1 [ label = "1", style = "invis" ];
|
||||
flag_label [ label = "Flags", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
subgraph cluster_hashes {
|
||||
graph [ penwidth = 0 ];
|
||||
node [ shape = "none" ];
|
||||
|
||||
hash4 [ label = "H4" ];
|
||||
hash3 [ label = "H3" ];
|
||||
hash2 [ label = "H2" ];
|
||||
hash1 [ label = "H1", style = "invis" ];
|
||||
hash_label [ label = "Hashes", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
hash_label -> flag_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_legend {
|
||||
node [ label = "", fontsize = 18 ];
|
||||
graph [ penwidth = 0 ];
|
||||
edge [ style = "invis" ];
|
||||
ranksep = 3;
|
||||
|
||||
|
||||
{
|
||||
node [ shape = "none" ];
|
||||
matched_filter_label [ label = "TXID\nFilter\nMatch" ];
|
||||
hash_from_list_label [ label = "Hash\nFrom\nList" ];
|
||||
hash_computed_label [ label = "Hash\nCom-\nputed" ];
|
||||
waiting_label [ label = "Wait\nFor\nChild" ];
|
||||
}
|
||||
|
||||
matched_filter [ penwidth = 4, style = "diagonals", bgcolor = grey ];
|
||||
hash_from_list [ label = "H1", style = "diagonals" ];
|
||||
hash_computed [ label = "H()" ];
|
||||
waiting [ label = "↓" ];
|
||||
|
||||
pre_legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
pre_legend_label -> legend_label [ style = "invis" ];
|
||||
|
||||
|
||||
|
||||
waiting_label -> waiting;
|
||||
hash_from_list_label -> hash_from_list;
|
||||
hash_computed_label -> hash_computed;
|
||||
matched_filter_label -> matched_filter;
|
||||
|
||||
labelloc = b;
|
||||
label = "Legend"
|
||||
|
||||
}
|
||||
|
||||
legend_label -> hash_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_tree {
|
||||
edge [ dir = "none" ];
|
||||
node [ label = "", fontsize = 16 ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
{
|
||||
root_row [ shape = "none" ];
|
||||
row1 [ shape = "none", label = "Non-TXID\nNodes" ];
|
||||
row2 [ shape = "none", style = "invis", width = 1.2 ];
|
||||
txid_row [ label = "TXID\nNodes", shape = "none" ];
|
||||
|
||||
row2 -> row1 [ dir = "back" ];
|
||||
row1 -> root_row [ dir = ""];
|
||||
txid_row -> row2 [ style = "invis" ];
|
||||
}
|
||||
|
||||
G;
|
||||
F;
|
||||
E;
|
||||
D;
|
||||
C;
|
||||
B;
|
||||
A;
|
||||
|
||||
EFG2 [ style = "filled", label = "↓" ]
|
||||
ABCD [ style = "diagonals", label = "H1" ]
|
||||
ROOT [ label = "↓" ]
|
||||
|
||||
A -> AB;
|
||||
B -> AB;
|
||||
C -> CD;
|
||||
D -> CD;
|
||||
E -> EF;
|
||||
F -> EF;
|
||||
G -> G2;
|
||||
|
||||
AB -> A [ constraint = false, style = "invis" ];
|
||||
AB -> B [ constraint = false, style = "invis" ];
|
||||
CD -> C [ constraint = false, style = "invis" ];
|
||||
CD -> D [ constraint = false, style = "invis" ];
|
||||
EF -> E [ constraint = false, style = "invis" ];
|
||||
EF -> F [ constraint = false, style = "invis" ];
|
||||
G2 -> G [ constraint = false, style = "invis" ];
|
||||
|
||||
AB -> ABCD;
|
||||
CD -> ABCD;
|
||||
EF -> EFG2 [ dir = "back" ];
|
||||
G2 -> EFG2;
|
||||
|
||||
ABCD -> AB [ constraint = false, style = "invis" ];
|
||||
ABCD -> CD [ constraint = false, style = "invis" ];
|
||||
EFG2 -> EF [ constraint = false, style = "invis" ];
|
||||
EFG2 -> G2 [ constraint = false, style = "invis" ];
|
||||
|
||||
ABCD -> ROOT [ dir = "back" ];
|
||||
EFG2 -> ROOT [ dir = "back" ];
|
||||
|
||||
ROOT -> ABCD [ constraint = false, dir = "back" ];
|
||||
ROOT -> EFG2 [ constraint = false, style = "invis" ];
|
||||
|
||||
}
|
||||
|
||||
//label = "Parsing A MerkleBlock Message"
|
||||
}
|
After Width: | Height: | Size: 6.2 KiB |
|
@ -0,0 +1,294 @@
|
|||
<?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: merkleblock Pages: 1 -->
|
||||
<svg width="450pt" height="153pt"
|
||||
viewBox="0.00 0.00 450.00 152.71" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g id="graph1" class="graph" transform="scale(0.507328 0.507328) rotate(0) translate(4 297)">
|
||||
<title>merkleblock</title>
|
||||
<polygon fill="white" stroke="white" points="-4,5 -4,-297 884,-297 884,5 -4,5"/>
|
||||
<g id="graph2" class="cluster"><title>cluster_flags</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="0" points="16,-237 16,-281 354,-281 354,-237 16,-237"/>
|
||||
</g>
|
||||
<g id="graph3" class="cluster"><title>cluster_hashes</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="0" points="8,-177 8,-229 342,-229 342,-177 8,-177"/>
|
||||
</g>
|
||||
<g id="graph4" class="cluster"><title>cluster_legend</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="0" points="45,-8 45,-169 349,-169 349,-8 45,-8"/>
|
||||
<text text-anchor="middle" x="197" y="-150.6" font-family="Sans" font-size="16.00">Legend</text>
|
||||
</g>
|
||||
<g id="graph6" class="cluster"><title>cluster_tree</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="0" points="362,-22 362,-285 871,-285 871,-22 362,-22"/>
|
||||
</g>
|
||||
<!-- flag8 -->
|
||||
<g id="node2" class="node"><title>flag8</title>
|
||||
<text text-anchor="middle" x="333" y="-254.9" font-family="Sans" font-size="14.00">0</text>
|
||||
</g>
|
||||
<!-- flag7 -->
|
||||
<g id="node3" class="node"><title>flag7</title>
|
||||
<text text-anchor="middle" x="300" y="-254.9" font-family="Sans" font-size="14.00">0</text>
|
||||
</g>
|
||||
<!-- flag6 -->
|
||||
<g id="node4" class="node"><title>flag6</title>
|
||||
<text text-anchor="middle" x="267" y="-254.9" font-family="Sans" font-size="14.00">0</text>
|
||||
</g>
|
||||
<!-- flag5 -->
|
||||
<g id="node5" class="node"><title>flag5</title>
|
||||
<text text-anchor="middle" x="234" y="-254.9" font-family="Sans" font-size="14.00">1</text>
|
||||
</g>
|
||||
<!-- flag4 -->
|
||||
<g id="node6" class="node"><title>flag4</title>
|
||||
<text text-anchor="middle" x="201" y="-254.9" font-family="Sans" font-size="14.00">1</text>
|
||||
</g>
|
||||
<!-- flag3 -->
|
||||
<g id="node7" class="node"><title>flag3</title>
|
||||
<polygon fill="lightgrey" stroke="lightgrey" stroke-width="1.75" points="181,-271.5 155,-271.5 155,-246.5 181,-246.5 181,-271.5"/>
|
||||
<text text-anchor="middle" x="168" y="-254.9" font-family="Sans" font-size="14.00">1</text>
|
||||
</g>
|
||||
<!-- flag2 -->
|
||||
<!-- flag1 -->
|
||||
<!-- flag_label -->
|
||||
<g id="node10" class="node"><title>flag_label</title>
|
||||
<text text-anchor="middle" x="53" y="-254.1" font-family="Sans" font-size="16.00">Flags</text>
|
||||
</g>
|
||||
<!-- hash4 -->
|
||||
<g id="node12" class="node"><title>hash4</title>
|
||||
<text text-anchor="middle" x="307" y="-198.9" font-family="Sans" font-size="14.00">H4</text>
|
||||
</g>
|
||||
<!-- hash3 -->
|
||||
<g id="node13" class="node"><title>hash3</title>
|
||||
<text text-anchor="middle" x="246" y="-198.9" font-family="Sans" font-size="14.00">H3</text>
|
||||
</g>
|
||||
<!-- hash2 -->
|
||||
<g id="node14" class="node"><title>hash2</title>
|
||||
<text text-anchor="middle" x="185" y="-198.9" font-family="Sans" font-size="14.00">H2</text>
|
||||
</g>
|
||||
<!-- hash1 -->
|
||||
<!-- hash_label -->
|
||||
<g id="node16" class="node"><title>hash_label</title>
|
||||
<text text-anchor="middle" x="53" y="-198.1" font-family="Sans" font-size="16.00">Hashes</text>
|
||||
</g>
|
||||
<!-- hash_label->flag_label -->
|
||||
<!-- matched_filter_label -->
|
||||
<g id="node20" class="node"><title>matched_filter_label</title>
|
||||
<text text-anchor="middle" x="306" y="-69.8" font-family="Sans" font-size="18.00">TXID</text>
|
||||
<text text-anchor="middle" x="306" y="-47.8" font-family="Sans" font-size="18.00">Filter</text>
|
||||
<text text-anchor="middle" x="306" y="-25.8" font-family="Sans" font-size="18.00">Match</text>
|
||||
</g>
|
||||
<!-- matched_filter -->
|
||||
<g id="node24" class="node"><title>matched_filter</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="4" points="333,-134 279,-134 279,-98 333,-98 333,-134"/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="291,-134 279,-122 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="279,-110 291,-98 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="321,-98 333,-110 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="333,-122 321,-134 "/>
|
||||
</g>
|
||||
<!-- matched_filter_label->matched_filter -->
|
||||
<!-- hash_from_list_label -->
|
||||
<g id="node21" class="node"><title>hash_from_list_label</title>
|
||||
<text text-anchor="middle" x="234" y="-69.8" font-family="Sans" font-size="18.00">Hash</text>
|
||||
<text text-anchor="middle" x="234" y="-47.8" font-family="Sans" font-size="18.00">From</text>
|
||||
<text text-anchor="middle" x="234" y="-25.8" font-family="Sans" font-size="18.00">List</text>
|
||||
</g>
|
||||
<!-- hash_from_list -->
|
||||
<g id="node25" class="node"><title>hash_from_list</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="261,-134 207,-134 207,-98 261,-98 261,-134"/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="219,-134 207,-122 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="207,-110 219,-98 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="249,-98 261,-110 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="261,-122 249,-134 "/>
|
||||
<text text-anchor="middle" x="234" y="-110.8" font-family="Sans" font-size="18.00">H1</text>
|
||||
</g>
|
||||
<!-- hash_from_list_label->hash_from_list -->
|
||||
<!-- hash_computed_label -->
|
||||
<g id="node22" class="node"><title>hash_computed_label</title>
|
||||
<text text-anchor="middle" x="163" y="-69.8" font-family="Sans" font-size="18.00">Hash</text>
|
||||
<text text-anchor="middle" x="163" y="-47.8" font-family="Sans" font-size="18.00">Com-</text>
|
||||
<text text-anchor="middle" x="163" y="-25.8" font-family="Sans" font-size="18.00">puted</text>
|
||||
</g>
|
||||
<!-- hash_computed -->
|
||||
<g id="node26" class="node"><title>hash_computed</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="190,-134 136,-134 136,-98 190,-98 190,-134"/>
|
||||
<text text-anchor="middle" x="163" y="-110.8" font-family="Sans" font-size="18.00">H()</text>
|
||||
</g>
|
||||
<!-- hash_computed_label->hash_computed -->
|
||||
<!-- waiting_label -->
|
||||
<g id="node23" class="node"><title>waiting_label</title>
|
||||
<text text-anchor="middle" x="91" y="-69.8" font-family="Sans" font-size="18.00">Wait</text>
|
||||
<text text-anchor="middle" x="91" y="-47.8" font-family="Sans" font-size="18.00">For</text>
|
||||
<text text-anchor="middle" x="91" y="-25.8" font-family="Sans" font-size="18.00">Child</text>
|
||||
</g>
|
||||
<!-- waiting -->
|
||||
<g id="node27" class="node"><title>waiting</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="118,-134 64,-134 64,-98 118,-98 118,-134"/>
|
||||
<text text-anchor="middle" x="91" y="-110.8" font-family="Sans" font-size="18.00">↓</text>
|
||||
</g>
|
||||
<!-- waiting_label->waiting -->
|
||||
<!-- pre_legend_label -->
|
||||
<!-- legend_label -->
|
||||
<!-- pre_legend_label->legend_label -->
|
||||
<!-- legend_label->hash_label -->
|
||||
<!-- root_row -->
|
||||
<g id="node38" class="node"><title>root_row</title>
|
||||
</g>
|
||||
<!-- row1 -->
|
||||
<g id="node39" class="node"><title>row1</title>
|
||||
<text text-anchor="middle" x="818" y="-207.6" font-family="Sans" font-size="16.00">Non-TXID</text>
|
||||
<text text-anchor="middle" x="818" y="-188.6" font-family="Sans" font-size="16.00">Nodes</text>
|
||||
</g>
|
||||
<!-- row1->root_row -->
|
||||
<g id="edge24" class="edge"><title>row1->root_row</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M818,-226.101C818,-227.645 818,-229.209 818,-230.775"/>
|
||||
<polygon fill="black" stroke="black" points="814.5,-230.913 818,-240.913 821.5,-230.913 814.5,-230.913"/>
|
||||
</g>
|
||||
<!-- row2 -->
|
||||
<!-- row2->row1 -->
|
||||
<g id="edge22" class="edge"><title>row2->row1</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M818.674,-144.378C818.542,-155.812 818.393,-168.837 818.268,-179.702"/>
|
||||
<polygon fill="black" stroke="black" points="822.178,-144.066 818.793,-134.026 815.178,-143.986 822.178,-144.066"/>
|
||||
</g>
|
||||
<!-- txid_row -->
|
||||
<g id="node41" class="node"><title>txid_row</title>
|
||||
<text text-anchor="middle" x="830" y="-57.6" font-family="Sans" font-size="16.00">TXID</text>
|
||||
<text text-anchor="middle" x="830" y="-38.6" font-family="Sans" font-size="16.00">Nodes</text>
|
||||
</g>
|
||||
<!-- txid_row->row2 -->
|
||||
<!-- G -->
|
||||
<g id="node45" class="node"><title>G</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="790,-71 736,-71 736,-35 790,-35 790,-71"/>
|
||||
</g>
|
||||
<!-- G2 -->
|
||||
<g id="node65" class="node"><title>G2</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="759,-134 705,-134 705,-98 759,-98 759,-134"/>
|
||||
</g>
|
||||
<!-- G->G2 -->
|
||||
<g id="edge40" class="edge"><title>G->G2</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M751.972,-71.2222C747.646,-79.5078 742.829,-89.2936 738.986,-97.6005"/>
|
||||
</g>
|
||||
<!-- F -->
|
||||
<g id="node46" class="node"><title>F</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="729,-71 675,-71 675,-35 729,-35 729,-71"/>
|
||||
</g>
|
||||
<!-- EF -->
|
||||
<g id="node62" class="node"><title>EF</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="678,-134 624,-134 624,-98 678,-98 678,-134"/>
|
||||
</g>
|
||||
<!-- F->EF -->
|
||||
<g id="edge38" class="edge"><title>F->EF</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M685.187,-71.2222C678.23,-79.5078 670.307,-89.2936 663.828,-97.6005"/>
|
||||
</g>
|
||||
<!-- E -->
|
||||
<g id="node47" class="node"><title>E</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="668,-71 614,-71 614,-35 668,-35 668,-71"/>
|
||||
</g>
|
||||
<!-- E->EF -->
|
||||
<g id="edge36" class="edge"><title>E->EF</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M641.83,-71.2222C642.897,-79.5078 644.448,-89.2936 646.012,-97.6005"/>
|
||||
</g>
|
||||
<!-- D -->
|
||||
<g id="node48" class="node"><title>D</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="607,-71 553,-71 553,-35 607,-35 607,-71"/>
|
||||
</g>
|
||||
<!-- CD -->
|
||||
<g id="node59" class="node"><title>CD</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="577,-134 523,-134 523,-98 577,-98 577,-134"/>
|
||||
</g>
|
||||
<!-- D->CD -->
|
||||
<g id="edge34" class="edge"><title>D->CD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M569.261,-71.2222C565.066,-79.5078 560.405,-89.2936 556.694,-97.6005"/>
|
||||
</g>
|
||||
<!-- C -->
|
||||
<g id="node49" class="node"><title>C</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="546,-71 492,-71 492,-35 546,-35 546,-71"/>
|
||||
</g>
|
||||
<!-- C->CD -->
|
||||
<g id="edge32" class="edge"><title>C->CD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M525.904,-71.2222C529.733,-79.5078 534.546,-89.2936 538.879,-97.6005"/>
|
||||
</g>
|
||||
<!-- B -->
|
||||
<g id="node50" class="node"><title>B</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="485,-71 431,-71 431,-35 485,-35 485,-71"/>
|
||||
</g>
|
||||
<!-- AB -->
|
||||
<g id="node56" class="node"><title>AB</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="485,-134 431,-134 431,-98 485,-98 485,-134"/>
|
||||
</g>
|
||||
<!-- B->AB -->
|
||||
<g id="edge30" class="edge"><title>B->AB</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M455.938,-71.2222C455.689,-79.5078 455.687,-89.2936 455.933,-97.6005"/>
|
||||
</g>
|
||||
<!-- A -->
|
||||
<g id="node51" class="node"><title>A</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="424,-71 370,-71 370,-35 424,-35 424,-71"/>
|
||||
</g>
|
||||
<!-- A->AB -->
|
||||
<g id="edge28" class="edge"><title>A->AB</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M412.582,-71.2222C420.355,-79.5078 429.829,-89.2936 438.117,-97.6005"/>
|
||||
</g>
|
||||
<!-- EFG2 -->
|
||||
<g id="node52" class="node"><title>EFG2</title>
|
||||
<polygon fill="lightgrey" stroke="black" stroke-width="1.75" points="678,-221 624,-221 624,-185 678,-185 678,-221"/>
|
||||
<text text-anchor="middle" x="651" y="-198.1" font-family="Sans" font-size="16.00">↓</text>
|
||||
</g>
|
||||
<!-- ROOT -->
|
||||
<g id="node54" class="node"><title>ROOT</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="628,-277 574,-277 574,-241 628,-241 628,-277"/>
|
||||
<text text-anchor="middle" x="601" y="-254.1" font-family="Sans" font-size="16.00">↓</text>
|
||||
</g>
|
||||
<!-- EFG2->ROOT -->
|
||||
<g id="edge74" class="edge"><title>EFG2->ROOT</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M625.871,-228.632C622.236,-232.676 618.605,-236.786 615.281,-240.622"/>
|
||||
<polygon fill="black" stroke="black" points="628.649,-230.78 632.786,-221.027 623.469,-226.071 628.649,-230.78"/>
|
||||
</g>
|
||||
<!-- EFG2->EF -->
|
||||
<!-- EFG2->G2 -->
|
||||
<!-- ABCD -->
|
||||
<g id="node53" class="node"><title>ABCD</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="577,-221 523,-221 523,-185 577,-185 577,-221"/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="535,-221 523,-209 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="523,-197 535,-185 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="565,-185 577,-197 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="577,-209 565,-221 "/>
|
||||
<text text-anchor="middle" x="550" y="-198.1" font-family="Sans" font-size="16.00">H1</text>
|
||||
</g>
|
||||
<!-- ABCD->ROOT -->
|
||||
<g id="edge72" class="edge"><title>ABCD->ROOT</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M571.101,-228.632C574.759,-232.676 578.541,-236.786 582.136,-240.622"/>
|
||||
<polygon fill="black" stroke="black" points="573.575,-226.148 564.299,-221.027 568.357,-230.814 573.575,-226.148"/>
|
||||
</g>
|
||||
<!-- ABCD->AB -->
|
||||
<!-- ABCD->CD -->
|
||||
<!-- ROOT->EFG2 -->
|
||||
<!-- ROOT->ABCD -->
|
||||
<g id="edge76" class="edge"><title>ROOT->ABCD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M580.312,-232.997C576.653,-228.949 572.86,-224.846 569.241,-221.027"/>
|
||||
<polygon fill="black" stroke="black" points="577.837,-235.48 587.1,-240.622 583.065,-230.826 577.837,-235.48"/>
|
||||
</g>
|
||||
<!-- AB->B -->
|
||||
<!-- AB->A -->
|
||||
<!-- AB->ABCD -->
|
||||
<g id="edge56" class="edge"><title>AB->ABCD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M475.198,-134.026C490.473,-148.958 512.801,-170.072 529.099,-184.997"/>
|
||||
</g>
|
||||
<!-- CD->D -->
|
||||
<!-- CD->C -->
|
||||
<!-- CD->ABCD -->
|
||||
<g id="edge58" class="edge"><title>CD->ABCD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M548.136,-134.026C547.621,-148.958 547.621,-170.072 548.137,-184.997"/>
|
||||
</g>
|
||||
<!-- EF->F -->
|
||||
<!-- EF->E -->
|
||||
<!-- EF->EFG2 -->
|
||||
<g id="edge60" class="edge"><title>EF->EFG2</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M648.879,-144.184C648.644,-157.59 648.73,-173.22 649.137,-184.997"/>
|
||||
<polygon fill="black" stroke="black" points="652.382,-144.112 649.136,-134.026 645.384,-143.935 652.382,-144.112"/>
|
||||
</g>
|
||||
<!-- G2->G -->
|
||||
<!-- G2->EFG2 -->
|
||||
<g id="edge62" class="edge"><title>G2->EFG2</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M713.353,-134.026C698.936,-148.958 679.279,-170.072 665.898,-184.997"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 15 KiB |
|
@ -0,0 +1,140 @@
|
|||
digraph merkleblock {
|
||||
|
||||
//size="6.25,2.22";
|
||||
size="6.25";
|
||||
rankdir=BT
|
||||
nodesep=0.1
|
||||
splines="false"
|
||||
|
||||
edge [ penwidth = 1.75, fontname="Sans" ]
|
||||
node [ penwidth = 1.75, shape = "box", fontname="Sans", ]
|
||||
graph [ penwidth = 1.75, fontname="Sans", fontsize = 16 ]
|
||||
|
||||
subgraph cluster_flags {
|
||||
node [ label = "", width=0.2, height=0.2, fontsize = 14, shape = "none" ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
flag8 [ label = "0" ];
|
||||
flag7 [ label = "0" ];
|
||||
flag6 [ label = "0" ];
|
||||
flag5 [ label = "1" ];
|
||||
flag4 [ label = "1", style = "filled" ];
|
||||
flag3 [ label = "1", style = "invis" ];
|
||||
flag2 [ label = "0", style = "invis" ];
|
||||
flag1 [ label = "1", style = "invis" ];
|
||||
flag_label [ label = "Flags", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
subgraph cluster_hashes {
|
||||
graph [ penwidth = 0 ];
|
||||
node [ shape = "none" ];
|
||||
|
||||
hash4 [ label = "H4" ];
|
||||
hash3 [ label = "H3" ];
|
||||
hash2 [ label = "H2" ];
|
||||
hash1 [ label = "H1", style = "invis" ];
|
||||
hash_label [ label = "Hashes", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
hash_label -> flag_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_legend {
|
||||
node [ label = "", fontsize = 18 ];
|
||||
graph [ penwidth = 0 ];
|
||||
edge [ style = "invis" ];
|
||||
ranksep = 3;
|
||||
|
||||
|
||||
{
|
||||
node [ shape = "none" ];
|
||||
matched_filter_label [ label = "TXID\nFilter\nMatch" ];
|
||||
hash_from_list_label [ label = "Hash\nFrom\nList" ];
|
||||
hash_computed_label [ label = "Hash\nCom-\nputed" ];
|
||||
waiting_label [ label = "Wait\nFor\nChild" ];
|
||||
}
|
||||
|
||||
matched_filter [ penwidth = 4, style = "diagonals", bgcolor = grey ];
|
||||
hash_from_list [ label = "H1", style = "diagonals" ];
|
||||
hash_computed [ label = "H()" ];
|
||||
waiting [ label = "↓" ];
|
||||
|
||||
pre_legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
pre_legend_label -> legend_label [ style = "invis" ];
|
||||
|
||||
waiting_label -> waiting;
|
||||
hash_from_list_label -> hash_from_list;
|
||||
hash_computed_label -> hash_computed;
|
||||
matched_filter_label -> matched_filter;
|
||||
|
||||
labelloc = b;
|
||||
label = "Legend"
|
||||
}
|
||||
|
||||
legend_label -> hash_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_tree {
|
||||
edge [ dir = "none" ];
|
||||
node [ label = "", fontsize = 16 ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
{
|
||||
root_row [ shape = "none" ];
|
||||
row1 [ shape = "none", label = "Non-TXID\nNodes" ];
|
||||
row2 [ shape = "none", style = "invis", width = 1.2 ];
|
||||
txid_row [ label = "TXID\nNodes", shape = "none" ];
|
||||
|
||||
row2 -> row1 [ dir = "back" ];
|
||||
row1 -> root_row [ dir = ""];
|
||||
txid_row -> row2 [ style = "invis" ];
|
||||
}
|
||||
|
||||
G;
|
||||
F;
|
||||
E;
|
||||
D;
|
||||
C;
|
||||
B;
|
||||
A;
|
||||
|
||||
EF [ style = "filled", label = "↓" ];
|
||||
EFG2 [ label = "↓" ];
|
||||
ABCD [ style = "diagonals", label = "H1" ];
|
||||
ROOT [ label = "↓" ];
|
||||
|
||||
A -> AB;
|
||||
B -> AB;
|
||||
C -> CD;
|
||||
D -> CD;
|
||||
E -> EF [ dir = "back" ];
|
||||
F -> EF;
|
||||
G -> G2;
|
||||
|
||||
AB -> A [ constraint = false, style = "invis" ];
|
||||
AB -> B [ constraint = false, style = "invis" ];
|
||||
CD -> C [ constraint = false, style = "invis" ];
|
||||
CD -> D [ constraint = false, style = "invis" ];
|
||||
EF -> E [ constraint = false, style = "invis" ];
|
||||
EF -> F [ constraint = false, style = "invis" ];
|
||||
G2 -> G [ constraint = false, style = "invis" ];
|
||||
|
||||
AB -> ABCD;
|
||||
CD -> ABCD;
|
||||
EF -> EFG2 [ dir = "back" ];
|
||||
G2 -> EFG2;
|
||||
|
||||
ABCD -> AB [ constraint = false, style = "invis" ];
|
||||
ABCD -> CD [ constraint = false, style = "invis" ];
|
||||
EFG2 -> EF [ constraint = false, style = "invis" ];
|
||||
EFG2 -> G2 [ constraint = false, style = "invis" ];
|
||||
|
||||
ABCD -> ROOT [ dir = "back" ];
|
||||
EFG2 -> ROOT [ dir = "back" ];
|
||||
|
||||
ROOT -> ABCD [ constraint = false, dir = "back" ];
|
||||
ROOT -> EFG2 [ constraint = false, style = "invis" ];
|
||||
|
||||
}
|
||||
|
||||
//label = "Parsing A MerkleBlock Message"
|
||||
}
|
After Width: | Height: | Size: 6.2 KiB |
|
@ -0,0 +1,293 @@
|
|||
<?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: merkleblock Pages: 1 -->
|
||||
<svg width="450pt" height="153pt"
|
||||
viewBox="0.00 0.00 450.00 152.71" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g id="graph1" class="graph" transform="scale(0.507328 0.507328) rotate(0) translate(4 297)">
|
||||
<title>merkleblock</title>
|
||||
<polygon fill="white" stroke="white" points="-4,5 -4,-297 884,-297 884,5 -4,5"/>
|
||||
<g id="graph2" class="cluster"><title>cluster_flags</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="0" points="16,-237 16,-281 354,-281 354,-237 16,-237"/>
|
||||
</g>
|
||||
<g id="graph3" class="cluster"><title>cluster_hashes</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="0" points="8,-177 8,-229 342,-229 342,-177 8,-177"/>
|
||||
</g>
|
||||
<g id="graph4" class="cluster"><title>cluster_legend</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="0" points="45,-8 45,-169 349,-169 349,-8 45,-8"/>
|
||||
<text text-anchor="middle" x="197" y="-150.6" font-family="Sans" font-size="16.00">Legend</text>
|
||||
</g>
|
||||
<g id="graph6" class="cluster"><title>cluster_tree</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="0" points="362,-22 362,-285 871,-285 871,-22 362,-22"/>
|
||||
</g>
|
||||
<!-- flag8 -->
|
||||
<g id="node2" class="node"><title>flag8</title>
|
||||
<text text-anchor="middle" x="333" y="-254.9" font-family="Sans" font-size="14.00">0</text>
|
||||
</g>
|
||||
<!-- flag7 -->
|
||||
<g id="node3" class="node"><title>flag7</title>
|
||||
<text text-anchor="middle" x="300" y="-254.9" font-family="Sans" font-size="14.00">0</text>
|
||||
</g>
|
||||
<!-- flag6 -->
|
||||
<g id="node4" class="node"><title>flag6</title>
|
||||
<text text-anchor="middle" x="267" y="-254.9" font-family="Sans" font-size="14.00">0</text>
|
||||
</g>
|
||||
<!-- flag5 -->
|
||||
<g id="node5" class="node"><title>flag5</title>
|
||||
<text text-anchor="middle" x="234" y="-254.9" font-family="Sans" font-size="14.00">1</text>
|
||||
</g>
|
||||
<!-- flag4 -->
|
||||
<g id="node6" class="node"><title>flag4</title>
|
||||
<polygon fill="lightgrey" stroke="lightgrey" stroke-width="1.75" points="214,-271.5 188,-271.5 188,-246.5 214,-246.5 214,-271.5"/>
|
||||
<text text-anchor="middle" x="201" y="-254.9" font-family="Sans" font-size="14.00">1</text>
|
||||
</g>
|
||||
<!-- flag3 -->
|
||||
<!-- flag2 -->
|
||||
<!-- flag1 -->
|
||||
<!-- flag_label -->
|
||||
<g id="node10" class="node"><title>flag_label</title>
|
||||
<text text-anchor="middle" x="53" y="-254.1" font-family="Sans" font-size="16.00">Flags</text>
|
||||
</g>
|
||||
<!-- hash4 -->
|
||||
<g id="node12" class="node"><title>hash4</title>
|
||||
<text text-anchor="middle" x="307" y="-198.9" font-family="Sans" font-size="14.00">H4</text>
|
||||
</g>
|
||||
<!-- hash3 -->
|
||||
<g id="node13" class="node"><title>hash3</title>
|
||||
<text text-anchor="middle" x="246" y="-198.9" font-family="Sans" font-size="14.00">H3</text>
|
||||
</g>
|
||||
<!-- hash2 -->
|
||||
<g id="node14" class="node"><title>hash2</title>
|
||||
<text text-anchor="middle" x="185" y="-198.9" font-family="Sans" font-size="14.00">H2</text>
|
||||
</g>
|
||||
<!-- hash1 -->
|
||||
<!-- hash_label -->
|
||||
<g id="node16" class="node"><title>hash_label</title>
|
||||
<text text-anchor="middle" x="53" y="-198.1" font-family="Sans" font-size="16.00">Hashes</text>
|
||||
</g>
|
||||
<!-- hash_label->flag_label -->
|
||||
<!-- matched_filter_label -->
|
||||
<g id="node20" class="node"><title>matched_filter_label</title>
|
||||
<text text-anchor="middle" x="306" y="-69.8" font-family="Sans" font-size="18.00">TXID</text>
|
||||
<text text-anchor="middle" x="306" y="-47.8" font-family="Sans" font-size="18.00">Filter</text>
|
||||
<text text-anchor="middle" x="306" y="-25.8" font-family="Sans" font-size="18.00">Match</text>
|
||||
</g>
|
||||
<!-- matched_filter -->
|
||||
<g id="node24" class="node"><title>matched_filter</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="4" points="333,-134 279,-134 279,-98 333,-98 333,-134"/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="291,-134 279,-122 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="279,-110 291,-98 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="321,-98 333,-110 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="333,-122 321,-134 "/>
|
||||
</g>
|
||||
<!-- matched_filter_label->matched_filter -->
|
||||
<!-- hash_from_list_label -->
|
||||
<g id="node21" class="node"><title>hash_from_list_label</title>
|
||||
<text text-anchor="middle" x="234" y="-69.8" font-family="Sans" font-size="18.00">Hash</text>
|
||||
<text text-anchor="middle" x="234" y="-47.8" font-family="Sans" font-size="18.00">From</text>
|
||||
<text text-anchor="middle" x="234" y="-25.8" font-family="Sans" font-size="18.00">List</text>
|
||||
</g>
|
||||
<!-- hash_from_list -->
|
||||
<g id="node25" class="node"><title>hash_from_list</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="261,-134 207,-134 207,-98 261,-98 261,-134"/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="219,-134 207,-122 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="207,-110 219,-98 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="249,-98 261,-110 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="261,-122 249,-134 "/>
|
||||
<text text-anchor="middle" x="234" y="-110.8" font-family="Sans" font-size="18.00">H1</text>
|
||||
</g>
|
||||
<!-- hash_from_list_label->hash_from_list -->
|
||||
<!-- hash_computed_label -->
|
||||
<g id="node22" class="node"><title>hash_computed_label</title>
|
||||
<text text-anchor="middle" x="163" y="-69.8" font-family="Sans" font-size="18.00">Hash</text>
|
||||
<text text-anchor="middle" x="163" y="-47.8" font-family="Sans" font-size="18.00">Com-</text>
|
||||
<text text-anchor="middle" x="163" y="-25.8" font-family="Sans" font-size="18.00">puted</text>
|
||||
</g>
|
||||
<!-- hash_computed -->
|
||||
<g id="node26" class="node"><title>hash_computed</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="190,-134 136,-134 136,-98 190,-98 190,-134"/>
|
||||
<text text-anchor="middle" x="163" y="-110.8" font-family="Sans" font-size="18.00">H()</text>
|
||||
</g>
|
||||
<!-- hash_computed_label->hash_computed -->
|
||||
<!-- waiting_label -->
|
||||
<g id="node23" class="node"><title>waiting_label</title>
|
||||
<text text-anchor="middle" x="91" y="-69.8" font-family="Sans" font-size="18.00">Wait</text>
|
||||
<text text-anchor="middle" x="91" y="-47.8" font-family="Sans" font-size="18.00">For</text>
|
||||
<text text-anchor="middle" x="91" y="-25.8" font-family="Sans" font-size="18.00">Child</text>
|
||||
</g>
|
||||
<!-- waiting -->
|
||||
<g id="node27" class="node"><title>waiting</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="118,-134 64,-134 64,-98 118,-98 118,-134"/>
|
||||
<text text-anchor="middle" x="91" y="-110.8" font-family="Sans" font-size="18.00">↓</text>
|
||||
</g>
|
||||
<!-- waiting_label->waiting -->
|
||||
<!-- pre_legend_label -->
|
||||
<!-- legend_label -->
|
||||
<!-- pre_legend_label->legend_label -->
|
||||
<!-- legend_label->hash_label -->
|
||||
<!-- root_row -->
|
||||
<g id="node38" class="node"><title>root_row</title>
|
||||
</g>
|
||||
<!-- row1 -->
|
||||
<g id="node39" class="node"><title>row1</title>
|
||||
<text text-anchor="middle" x="818" y="-207.6" font-family="Sans" font-size="16.00">Non-TXID</text>
|
||||
<text text-anchor="middle" x="818" y="-188.6" font-family="Sans" font-size="16.00">Nodes</text>
|
||||
</g>
|
||||
<!-- row1->root_row -->
|
||||
<g id="edge24" class="edge"><title>row1->root_row</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M818,-226.101C818,-227.645 818,-229.209 818,-230.775"/>
|
||||
<polygon fill="black" stroke="black" points="814.5,-230.913 818,-240.913 821.5,-230.913 814.5,-230.913"/>
|
||||
</g>
|
||||
<!-- row2 -->
|
||||
<!-- row2->row1 -->
|
||||
<g id="edge22" class="edge"><title>row2->row1</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M818.674,-144.378C818.542,-155.812 818.393,-168.837 818.268,-179.702"/>
|
||||
<polygon fill="black" stroke="black" points="822.178,-144.066 818.793,-134.026 815.178,-143.986 822.178,-144.066"/>
|
||||
</g>
|
||||
<!-- txid_row -->
|
||||
<g id="node41" class="node"><title>txid_row</title>
|
||||
<text text-anchor="middle" x="830" y="-57.6" font-family="Sans" font-size="16.00">TXID</text>
|
||||
<text text-anchor="middle" x="830" y="-38.6" font-family="Sans" font-size="16.00">Nodes</text>
|
||||
</g>
|
||||
<!-- txid_row->row2 -->
|
||||
<!-- G -->
|
||||
<g id="node45" class="node"><title>G</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="790,-71 736,-71 736,-35 790,-35 790,-71"/>
|
||||
</g>
|
||||
<!-- G2 -->
|
||||
<g id="node65" class="node"><title>G2</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="759,-134 705,-134 705,-98 759,-98 759,-134"/>
|
||||
</g>
|
||||
<!-- G->G2 -->
|
||||
<g id="edge40" class="edge"><title>G->G2</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M751.972,-71.2222C747.646,-79.5078 742.829,-89.2936 738.986,-97.6005"/>
|
||||
</g>
|
||||
<!-- F -->
|
||||
<g id="node46" class="node"><title>F</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="729,-71 675,-71 675,-35 729,-35 729,-71"/>
|
||||
</g>
|
||||
<!-- EF -->
|
||||
<g id="node52" class="node"><title>EF</title>
|
||||
<polygon fill="lightgrey" stroke="black" stroke-width="1.75" points="678,-134 624,-134 624,-98 678,-98 678,-134"/>
|
||||
<text text-anchor="middle" x="651" y="-111.1" font-family="Sans" font-size="16.00">↓</text>
|
||||
</g>
|
||||
<!-- F->EF -->
|
||||
<g id="edge38" class="edge"><title>F->EF</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M685.187,-71.2222C678.23,-79.5078 670.307,-89.2936 663.828,-97.6005"/>
|
||||
</g>
|
||||
<!-- E -->
|
||||
<g id="node47" class="node"><title>E</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="668,-71 614,-71 614,-35 668,-35 668,-71"/>
|
||||
</g>
|
||||
<!-- E->EF -->
|
||||
<g id="edge36" class="edge"><title>E->EF</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M643.274,-81.4411C644.111,-86.9273 645.059,-92.5385 646.012,-97.6005"/>
|
||||
<polygon fill="black" stroke="black" points="646.695,-80.6343 641.83,-71.2222 639.764,-81.6135 646.695,-80.6343"/>
|
||||
</g>
|
||||
<!-- D -->
|
||||
<g id="node48" class="node"><title>D</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="607,-71 553,-71 553,-35 607,-35 607,-71"/>
|
||||
</g>
|
||||
<!-- CD -->
|
||||
<g id="node60" class="node"><title>CD</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="577,-134 523,-134 523,-98 577,-98 577,-134"/>
|
||||
</g>
|
||||
<!-- D->CD -->
|
||||
<g id="edge34" class="edge"><title>D->CD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M569.261,-71.2222C565.066,-79.5078 560.405,-89.2936 556.694,-97.6005"/>
|
||||
</g>
|
||||
<!-- C -->
|
||||
<g id="node49" class="node"><title>C</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="546,-71 492,-71 492,-35 546,-35 546,-71"/>
|
||||
</g>
|
||||
<!-- C->CD -->
|
||||
<g id="edge32" class="edge"><title>C->CD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M525.904,-71.2222C529.733,-79.5078 534.546,-89.2936 538.879,-97.6005"/>
|
||||
</g>
|
||||
<!-- B -->
|
||||
<g id="node50" class="node"><title>B</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="485,-71 431,-71 431,-35 485,-35 485,-71"/>
|
||||
</g>
|
||||
<!-- AB -->
|
||||
<g id="node57" class="node"><title>AB</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="485,-134 431,-134 431,-98 485,-98 485,-134"/>
|
||||
</g>
|
||||
<!-- B->AB -->
|
||||
<g id="edge30" class="edge"><title>B->AB</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M455.938,-71.2222C455.689,-79.5078 455.687,-89.2936 455.933,-97.6005"/>
|
||||
</g>
|
||||
<!-- A -->
|
||||
<g id="node51" class="node"><title>A</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="424,-71 370,-71 370,-35 424,-35 424,-71"/>
|
||||
</g>
|
||||
<!-- A->AB -->
|
||||
<g id="edge28" class="edge"><title>A->AB</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M412.582,-71.2222C420.355,-79.5078 429.829,-89.2936 438.117,-97.6005"/>
|
||||
</g>
|
||||
<!-- EF->F -->
|
||||
<!-- EF->E -->
|
||||
<!-- EFG2 -->
|
||||
<g id="node53" class="node"><title>EFG2</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="678,-221 624,-221 624,-185 678,-185 678,-221"/>
|
||||
<text text-anchor="middle" x="651" y="-198.1" font-family="Sans" font-size="16.00">↓</text>
|
||||
</g>
|
||||
<!-- EF->EFG2 -->
|
||||
<g id="edge60" class="edge"><title>EF->EFG2</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M648.879,-144.184C648.644,-157.59 648.73,-173.22 649.137,-184.997"/>
|
||||
<polygon fill="black" stroke="black" points="652.382,-144.112 649.136,-134.026 645.384,-143.935 652.382,-144.112"/>
|
||||
</g>
|
||||
<!-- EFG2->EF -->
|
||||
<!-- ROOT -->
|
||||
<g id="node55" class="node"><title>ROOT</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="628,-277 574,-277 574,-241 628,-241 628,-277"/>
|
||||
<text text-anchor="middle" x="601" y="-254.1" font-family="Sans" font-size="16.00">↓</text>
|
||||
</g>
|
||||
<!-- EFG2->ROOT -->
|
||||
<g id="edge74" class="edge"><title>EFG2->ROOT</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M625.871,-228.632C622.236,-232.676 618.605,-236.786 615.281,-240.622"/>
|
||||
<polygon fill="black" stroke="black" points="628.649,-230.78 632.786,-221.027 623.469,-226.071 628.649,-230.78"/>
|
||||
</g>
|
||||
<!-- EFG2->G2 -->
|
||||
<!-- ABCD -->
|
||||
<g id="node54" class="node"><title>ABCD</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="577,-221 523,-221 523,-185 577,-185 577,-221"/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="535,-221 523,-209 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="523,-197 535,-185 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="565,-185 577,-197 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="577,-209 565,-221 "/>
|
||||
<text text-anchor="middle" x="550" y="-198.1" font-family="Sans" font-size="16.00">H1</text>
|
||||
</g>
|
||||
<!-- ABCD->ROOT -->
|
||||
<g id="edge72" class="edge"><title>ABCD->ROOT</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M571.101,-228.632C574.759,-232.676 578.541,-236.786 582.136,-240.622"/>
|
||||
<polygon fill="black" stroke="black" points="573.575,-226.148 564.299,-221.027 568.357,-230.814 573.575,-226.148"/>
|
||||
</g>
|
||||
<!-- ABCD->AB -->
|
||||
<!-- ABCD->CD -->
|
||||
<!-- ROOT->EFG2 -->
|
||||
<!-- ROOT->ABCD -->
|
||||
<g id="edge76" class="edge"><title>ROOT->ABCD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M580.312,-232.997C576.653,-228.949 572.86,-224.846 569.241,-221.027"/>
|
||||
<polygon fill="black" stroke="black" points="577.837,-235.48 587.1,-240.622 583.065,-230.826 577.837,-235.48"/>
|
||||
</g>
|
||||
<!-- AB->B -->
|
||||
<!-- AB->A -->
|
||||
<!-- AB->ABCD -->
|
||||
<g id="edge56" class="edge"><title>AB->ABCD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M475.198,-134.026C490.473,-148.958 512.801,-170.072 529.099,-184.997"/>
|
||||
</g>
|
||||
<!-- CD->D -->
|
||||
<!-- CD->C -->
|
||||
<!-- CD->ABCD -->
|
||||
<g id="edge58" class="edge"><title>CD->ABCD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M548.136,-134.026C547.621,-148.958 547.621,-170.072 548.137,-184.997"/>
|
||||
</g>
|
||||
<!-- G2->G -->
|
||||
<!-- G2->EFG2 -->
|
||||
<g id="edge62" class="edge"><title>G2->EFG2</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M713.353,-134.026C698.936,-148.958 679.279,-170.072 665.898,-184.997"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 15 KiB |
|
@ -0,0 +1,140 @@
|
|||
digraph merkleblock {
|
||||
|
||||
//size="6.25,2.22";
|
||||
size="6.25";
|
||||
rankdir=BT
|
||||
nodesep=0.1
|
||||
splines="false"
|
||||
|
||||
edge [ penwidth = 1.75, fontname="Sans" ]
|
||||
node [ penwidth = 1.75, shape = "box", fontname="Sans", ]
|
||||
graph [ penwidth = 1.75, fontname="Sans", fontsize = 16 ]
|
||||
|
||||
subgraph cluster_flags {
|
||||
node [ label = "", width=0.2, height=0.2, fontsize = 14, shape = "none" ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
flag8 [ label = "0" ];
|
||||
flag7 [ label = "0" ];
|
||||
flag6 [ label = "0" ];
|
||||
flag5 [ label = "1", style = "filled" ];
|
||||
flag4 [ label = "1", style = "invis" ];
|
||||
flag3 [ label = "1", style = "invis" ];
|
||||
flag2 [ label = "0", style = "invis" ];
|
||||
flag1 [ label = "1", style = "invis" ];
|
||||
flag_label [ label = "Flags", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
subgraph cluster_hashes {
|
||||
graph [ penwidth = 0 ];
|
||||
node [ shape = "none" ];
|
||||
|
||||
hash4 [ label = "H4" ];
|
||||
hash3 [ label = "H3" ];
|
||||
hash2 [ label = "H2", style = "filled" ];
|
||||
hash1 [ label = "H1", style = "invis" ];
|
||||
hash_label [ label = "Hashes", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
hash_label -> flag_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_legend {
|
||||
node [ label = "", fontsize = 18 ];
|
||||
graph [ penwidth = 0 ];
|
||||
edge [ style = "invis" ];
|
||||
ranksep = 3;
|
||||
|
||||
|
||||
{
|
||||
node [ shape = "none" ];
|
||||
matched_filter_label [ label = "TXID\nFilter\nMatch" ];
|
||||
hash_from_list_label [ label = "Hash\nFrom\nList" ];
|
||||
hash_computed_label [ label = "Hash\nCom-\nputed" ];
|
||||
waiting_label [ label = "Wait\nFor\nChild" ];
|
||||
}
|
||||
|
||||
matched_filter [ penwidth = 4, style = "diagonals", bgcolor = grey ];
|
||||
hash_from_list [ label = "H1", style = "diagonals" ];
|
||||
hash_computed [ label = "H()" ];
|
||||
waiting [ label = "↓" ];
|
||||
|
||||
pre_legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
pre_legend_label -> legend_label [ style = "invis" ];
|
||||
|
||||
waiting_label -> waiting;
|
||||
hash_from_list_label -> hash_from_list;
|
||||
hash_computed_label -> hash_computed;
|
||||
matched_filter_label -> matched_filter;
|
||||
|
||||
labelloc = b;
|
||||
label = "Legend"
|
||||
}
|
||||
|
||||
legend_label -> hash_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_tree {
|
||||
edge [ dir = "none" ];
|
||||
node [ label = "", fontsize = 16 ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
{
|
||||
root_row [ shape = "none" ];
|
||||
row1 [ shape = "none", label = "Non-TXID\nNodes" ];
|
||||
row2 [ shape = "none", style = "invis", width = 1.2 ];
|
||||
txid_row [ label = "TXID\nNodes", shape = "none" ];
|
||||
|
||||
row2 -> row1 [ dir = "back" ];
|
||||
row1 -> root_row [ dir = ""];
|
||||
txid_row -> row2 [ style = "invis" ];
|
||||
}
|
||||
|
||||
G;
|
||||
F;
|
||||
E [ penwidth = 4, style = "filled,diagonals", label = "H2" ];
|
||||
D;
|
||||
C;
|
||||
B;
|
||||
A;
|
||||
|
||||
EF [ label = "↓" ];
|
||||
EFG2 [ label = "↓" ];
|
||||
ABCD [ style = "diagonals", label = "H1" ];
|
||||
ROOT [ label = "↓" ];
|
||||
|
||||
A -> AB;
|
||||
B -> AB;
|
||||
C -> CD;
|
||||
D -> CD;
|
||||
E -> EF [ dir = "back" ];
|
||||
F -> EF [ dir = "back" ];
|
||||
G -> G2;
|
||||
|
||||
AB -> A [ constraint = false, style = "invis" ];
|
||||
AB -> B [ constraint = false, style = "invis" ];
|
||||
CD -> C [ constraint = false, style = "invis" ];
|
||||
CD -> D [ constraint = false, style = "invis" ];
|
||||
EF -> E [ constraint = false, dir = "back" ];
|
||||
EF -> F [ constraint = false, style = "invis" ];
|
||||
G2 -> G [ constraint = false, style = "invis" ];
|
||||
|
||||
AB -> ABCD;
|
||||
CD -> ABCD;
|
||||
EF -> EFG2 [ dir = "back" ];
|
||||
G2 -> EFG2;
|
||||
|
||||
ABCD -> AB [ constraint = false, style = "invis" ];
|
||||
ABCD -> CD [ constraint = false, style = "invis" ];
|
||||
EFG2 -> EF [ constraint = false, style = "invis" ];
|
||||
EFG2 -> G2 [ constraint = false, style = "invis" ];
|
||||
|
||||
ABCD -> ROOT [ dir = "back" ];
|
||||
EFG2 -> ROOT [ dir = "back" ];
|
||||
|
||||
ROOT -> ABCD [ constraint = false, dir = "back" ];
|
||||
ROOT -> EFG2 [ constraint = false, style = "invis" ];
|
||||
|
||||
}
|
||||
|
||||
//label = "Parsing A MerkleBlock Message"
|
||||
}
|
After Width: | Height: | Size: 6.5 KiB |
|
@ -0,0 +1,301 @@
|
|||
<?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: merkleblock Pages: 1 -->
|
||||
<svg width="450pt" height="153pt"
|
||||
viewBox="0.00 0.00 450.00 152.71" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g id="graph1" class="graph" transform="scale(0.507328 0.507328) rotate(0) translate(4 297)">
|
||||
<title>merkleblock</title>
|
||||
<polygon fill="white" stroke="white" points="-4,5 -4,-297 884,-297 884,5 -4,5"/>
|
||||
<g id="graph2" class="cluster"><title>cluster_flags</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="0" points="16,-237 16,-281 354,-281 354,-237 16,-237"/>
|
||||
</g>
|
||||
<g id="graph3" class="cluster"><title>cluster_hashes</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="0" points="8,-177 8,-229 342,-229 342,-177 8,-177"/>
|
||||
</g>
|
||||
<g id="graph4" class="cluster"><title>cluster_legend</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="0" points="45,-8 45,-169 349,-169 349,-8 45,-8"/>
|
||||
<text text-anchor="middle" x="197" y="-150.6" font-family="Sans" font-size="16.00">Legend</text>
|
||||
</g>
|
||||
<g id="graph6" class="cluster"><title>cluster_tree</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="0" points="362,-22 362,-285 871,-285 871,-22 362,-22"/>
|
||||
</g>
|
||||
<!-- flag8 -->
|
||||
<g id="node2" class="node"><title>flag8</title>
|
||||
<text text-anchor="middle" x="333" y="-254.9" font-family="Sans" font-size="14.00">0</text>
|
||||
</g>
|
||||
<!-- flag7 -->
|
||||
<g id="node3" class="node"><title>flag7</title>
|
||||
<text text-anchor="middle" x="300" y="-254.9" font-family="Sans" font-size="14.00">0</text>
|
||||
</g>
|
||||
<!-- flag6 -->
|
||||
<g id="node4" class="node"><title>flag6</title>
|
||||
<text text-anchor="middle" x="267" y="-254.9" font-family="Sans" font-size="14.00">0</text>
|
||||
</g>
|
||||
<!-- flag5 -->
|
||||
<g id="node5" class="node"><title>flag5</title>
|
||||
<polygon fill="lightgrey" stroke="lightgrey" stroke-width="1.75" points="247,-271.5 221,-271.5 221,-246.5 247,-246.5 247,-271.5"/>
|
||||
<text text-anchor="middle" x="234" y="-254.9" font-family="Sans" font-size="14.00">1</text>
|
||||
</g>
|
||||
<!-- flag4 -->
|
||||
<!-- flag3 -->
|
||||
<!-- flag2 -->
|
||||
<!-- flag1 -->
|
||||
<!-- flag_label -->
|
||||
<g id="node10" class="node"><title>flag_label</title>
|
||||
<text text-anchor="middle" x="53" y="-254.1" font-family="Sans" font-size="16.00">Flags</text>
|
||||
</g>
|
||||
<!-- hash4 -->
|
||||
<g id="node12" class="node"><title>hash4</title>
|
||||
<text text-anchor="middle" x="307" y="-198.9" font-family="Sans" font-size="14.00">H4</text>
|
||||
</g>
|
||||
<!-- hash3 -->
|
||||
<g id="node13" class="node"><title>hash3</title>
|
||||
<text text-anchor="middle" x="246" y="-198.9" font-family="Sans" font-size="14.00">H3</text>
|
||||
</g>
|
||||
<!-- hash2 -->
|
||||
<g id="node14" class="node"><title>hash2</title>
|
||||
<polygon fill="lightgrey" stroke="lightgrey" stroke-width="1.75" points="212,-221 158,-221 158,-185 212,-185 212,-221"/>
|
||||
<text text-anchor="middle" x="185" y="-198.9" font-family="Sans" font-size="14.00">H2</text>
|
||||
</g>
|
||||
<!-- hash1 -->
|
||||
<!-- hash_label -->
|
||||
<g id="node16" class="node"><title>hash_label</title>
|
||||
<text text-anchor="middle" x="53" y="-198.1" font-family="Sans" font-size="16.00">Hashes</text>
|
||||
</g>
|
||||
<!-- hash_label->flag_label -->
|
||||
<!-- matched_filter_label -->
|
||||
<g id="node20" class="node"><title>matched_filter_label</title>
|
||||
<text text-anchor="middle" x="306" y="-69.8" font-family="Sans" font-size="18.00">TXID</text>
|
||||
<text text-anchor="middle" x="306" y="-47.8" font-family="Sans" font-size="18.00">Filter</text>
|
||||
<text text-anchor="middle" x="306" y="-25.8" font-family="Sans" font-size="18.00">Match</text>
|
||||
</g>
|
||||
<!-- matched_filter -->
|
||||
<g id="node24" class="node"><title>matched_filter</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="4" points="333,-134 279,-134 279,-98 333,-98 333,-134"/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="291,-134 279,-122 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="279,-110 291,-98 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="321,-98 333,-110 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="333,-122 321,-134 "/>
|
||||
</g>
|
||||
<!-- matched_filter_label->matched_filter -->
|
||||
<!-- hash_from_list_label -->
|
||||
<g id="node21" class="node"><title>hash_from_list_label</title>
|
||||
<text text-anchor="middle" x="234" y="-69.8" font-family="Sans" font-size="18.00">Hash</text>
|
||||
<text text-anchor="middle" x="234" y="-47.8" font-family="Sans" font-size="18.00">From</text>
|
||||
<text text-anchor="middle" x="234" y="-25.8" font-family="Sans" font-size="18.00">List</text>
|
||||
</g>
|
||||
<!-- hash_from_list -->
|
||||
<g id="node25" class="node"><title>hash_from_list</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="261,-134 207,-134 207,-98 261,-98 261,-134"/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="219,-134 207,-122 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="207,-110 219,-98 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="249,-98 261,-110 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="261,-122 249,-134 "/>
|
||||
<text text-anchor="middle" x="234" y="-110.8" font-family="Sans" font-size="18.00">H1</text>
|
||||
</g>
|
||||
<!-- hash_from_list_label->hash_from_list -->
|
||||
<!-- hash_computed_label -->
|
||||
<g id="node22" class="node"><title>hash_computed_label</title>
|
||||
<text text-anchor="middle" x="163" y="-69.8" font-family="Sans" font-size="18.00">Hash</text>
|
||||
<text text-anchor="middle" x="163" y="-47.8" font-family="Sans" font-size="18.00">Com-</text>
|
||||
<text text-anchor="middle" x="163" y="-25.8" font-family="Sans" font-size="18.00">puted</text>
|
||||
</g>
|
||||
<!-- hash_computed -->
|
||||
<g id="node26" class="node"><title>hash_computed</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="190,-134 136,-134 136,-98 190,-98 190,-134"/>
|
||||
<text text-anchor="middle" x="163" y="-110.8" font-family="Sans" font-size="18.00">H()</text>
|
||||
</g>
|
||||
<!-- hash_computed_label->hash_computed -->
|
||||
<!-- waiting_label -->
|
||||
<g id="node23" class="node"><title>waiting_label</title>
|
||||
<text text-anchor="middle" x="91" y="-69.8" font-family="Sans" font-size="18.00">Wait</text>
|
||||
<text text-anchor="middle" x="91" y="-47.8" font-family="Sans" font-size="18.00">For</text>
|
||||
<text text-anchor="middle" x="91" y="-25.8" font-family="Sans" font-size="18.00">Child</text>
|
||||
</g>
|
||||
<!-- waiting -->
|
||||
<g id="node27" class="node"><title>waiting</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="118,-134 64,-134 64,-98 118,-98 118,-134"/>
|
||||
<text text-anchor="middle" x="91" y="-110.8" font-family="Sans" font-size="18.00">↓</text>
|
||||
</g>
|
||||
<!-- waiting_label->waiting -->
|
||||
<!-- pre_legend_label -->
|
||||
<!-- legend_label -->
|
||||
<!-- pre_legend_label->legend_label -->
|
||||
<!-- legend_label->hash_label -->
|
||||
<!-- root_row -->
|
||||
<g id="node38" class="node"><title>root_row</title>
|
||||
</g>
|
||||
<!-- row1 -->
|
||||
<g id="node39" class="node"><title>row1</title>
|
||||
<text text-anchor="middle" x="818" y="-207.6" font-family="Sans" font-size="16.00">Non-TXID</text>
|
||||
<text text-anchor="middle" x="818" y="-188.6" font-family="Sans" font-size="16.00">Nodes</text>
|
||||
</g>
|
||||
<!-- row1->root_row -->
|
||||
<g id="edge24" class="edge"><title>row1->root_row</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M818,-226.101C818,-227.645 818,-229.209 818,-230.775"/>
|
||||
<polygon fill="black" stroke="black" points="814.5,-230.913 818,-240.913 821.5,-230.913 814.5,-230.913"/>
|
||||
</g>
|
||||
<!-- row2 -->
|
||||
<!-- row2->row1 -->
|
||||
<g id="edge22" class="edge"><title>row2->row1</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M818.674,-144.378C818.542,-155.812 818.393,-168.837 818.268,-179.702"/>
|
||||
<polygon fill="black" stroke="black" points="822.178,-144.066 818.793,-134.026 815.178,-143.986 822.178,-144.066"/>
|
||||
</g>
|
||||
<!-- txid_row -->
|
||||
<g id="node41" class="node"><title>txid_row</title>
|
||||
<text text-anchor="middle" x="830" y="-57.6" font-family="Sans" font-size="16.00">TXID</text>
|
||||
<text text-anchor="middle" x="830" y="-38.6" font-family="Sans" font-size="16.00">Nodes</text>
|
||||
</g>
|
||||
<!-- txid_row->row2 -->
|
||||
<!-- G -->
|
||||
<g id="node45" class="node"><title>G</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="790,-71 736,-71 736,-35 790,-35 790,-71"/>
|
||||
</g>
|
||||
<!-- G2 -->
|
||||
<g id="node65" class="node"><title>G2</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="759,-134 705,-134 705,-98 759,-98 759,-134"/>
|
||||
</g>
|
||||
<!-- G->G2 -->
|
||||
<g id="edge40" class="edge"><title>G->G2</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M751.972,-71.2222C747.646,-79.5078 742.829,-89.2936 738.986,-97.6005"/>
|
||||
</g>
|
||||
<!-- F -->
|
||||
<g id="node46" class="node"><title>F</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="729,-71 675,-71 675,-35 729,-35 729,-71"/>
|
||||
</g>
|
||||
<!-- EF -->
|
||||
<g id="node52" class="node"><title>EF</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="678,-134 624,-134 624,-98 678,-98 678,-134"/>
|
||||
<text text-anchor="middle" x="651" y="-111.1" font-family="Sans" font-size="16.00">↓</text>
|
||||
</g>
|
||||
<!-- F->EF -->
|
||||
<g id="edge38" class="edge"><title>F->EF</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M678.799,-78.9203C673.653,-85.1878 668.383,-91.7597 663.828,-97.6005"/>
|
||||
<polygon fill="black" stroke="black" points="681.494,-81.1528 685.187,-71.2222 676.107,-76.6826 681.494,-81.1528"/>
|
||||
</g>
|
||||
<!-- E -->
|
||||
<g id="node47" class="node"><title>E</title>
|
||||
<polygon fill="lightgrey" stroke="black" stroke-width="4" points="668,-71 614,-71 614,-35 668,-35 668,-71"/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="626,-71 614,-59 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="614,-47 626,-35 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="656,-35 668,-47 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="668,-59 656,-71 "/>
|
||||
<text text-anchor="middle" x="641" y="-48.1" font-family="Sans" font-size="16.00">H2</text>
|
||||
</g>
|
||||
<!-- E->EF -->
|
||||
<g id="edge36" class="edge"><title>E->EF</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M643.274,-81.4411C644.111,-86.9273 645.059,-92.5385 646.012,-97.6005"/>
|
||||
<polygon fill="black" stroke="black" points="646.695,-80.6343 641.83,-71.2222 639.764,-81.6135 646.695,-80.6343"/>
|
||||
</g>
|
||||
<!-- D -->
|
||||
<g id="node48" class="node"><title>D</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="607,-71 553,-71 553,-35 607,-35 607,-71"/>
|
||||
</g>
|
||||
<!-- CD -->
|
||||
<g id="node60" class="node"><title>CD</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="577,-134 523,-134 523,-98 577,-98 577,-134"/>
|
||||
</g>
|
||||
<!-- D->CD -->
|
||||
<g id="edge34" class="edge"><title>D->CD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M569.261,-71.2222C565.066,-79.5078 560.405,-89.2936 556.694,-97.6005"/>
|
||||
</g>
|
||||
<!-- C -->
|
||||
<g id="node49" class="node"><title>C</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="546,-71 492,-71 492,-35 546,-35 546,-71"/>
|
||||
</g>
|
||||
<!-- C->CD -->
|
||||
<g id="edge32" class="edge"><title>C->CD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M525.904,-71.2222C529.733,-79.5078 534.546,-89.2936 538.879,-97.6005"/>
|
||||
</g>
|
||||
<!-- B -->
|
||||
<g id="node50" class="node"><title>B</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="485,-71 431,-71 431,-35 485,-35 485,-71"/>
|
||||
</g>
|
||||
<!-- AB -->
|
||||
<g id="node57" class="node"><title>AB</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="485,-134 431,-134 431,-98 485,-98 485,-134"/>
|
||||
</g>
|
||||
<!-- B->AB -->
|
||||
<g id="edge30" class="edge"><title>B->AB</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M455.938,-71.2222C455.689,-79.5078 455.687,-89.2936 455.933,-97.6005"/>
|
||||
</g>
|
||||
<!-- A -->
|
||||
<g id="node51" class="node"><title>A</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="424,-71 370,-71 370,-35 424,-35 424,-71"/>
|
||||
</g>
|
||||
<!-- A->AB -->
|
||||
<g id="edge28" class="edge"><title>A->AB</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M412.582,-71.2222C420.355,-79.5078 429.829,-89.2936 438.117,-97.6005"/>
|
||||
</g>
|
||||
<!-- EF->F -->
|
||||
<!-- EF->E -->
|
||||
<g id="edge50" class="edge"><title>EF->E</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M649.444,-87.3665C648.615,-81.8774 647.645,-76.2713 646.642,-71.2222"/>
|
||||
<polygon fill="black" stroke="black" points="646.02,-88.1634 650.836,-97.6005 652.956,-87.22 646.02,-88.1634"/>
|
||||
</g>
|
||||
<!-- EFG2 -->
|
||||
<g id="node53" class="node"><title>EFG2</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="678,-221 624,-221 624,-185 678,-185 678,-221"/>
|
||||
<text text-anchor="middle" x="651" y="-198.1" font-family="Sans" font-size="16.00">↓</text>
|
||||
</g>
|
||||
<!-- EF->EFG2 -->
|
||||
<g id="edge60" class="edge"><title>EF->EFG2</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M648.879,-144.184C648.644,-157.59 648.73,-173.22 649.137,-184.997"/>
|
||||
<polygon fill="black" stroke="black" points="652.382,-144.112 649.136,-134.026 645.384,-143.935 652.382,-144.112"/>
|
||||
</g>
|
||||
<!-- EFG2->EF -->
|
||||
<!-- ROOT -->
|
||||
<g id="node55" class="node"><title>ROOT</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="628,-277 574,-277 574,-241 628,-241 628,-277"/>
|
||||
<text text-anchor="middle" x="601" y="-254.1" font-family="Sans" font-size="16.00">↓</text>
|
||||
</g>
|
||||
<!-- EFG2->ROOT -->
|
||||
<g id="edge74" class="edge"><title>EFG2->ROOT</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M625.871,-228.632C622.236,-232.676 618.605,-236.786 615.281,-240.622"/>
|
||||
<polygon fill="black" stroke="black" points="628.649,-230.78 632.786,-221.027 623.469,-226.071 628.649,-230.78"/>
|
||||
</g>
|
||||
<!-- EFG2->G2 -->
|
||||
<!-- ABCD -->
|
||||
<g id="node54" class="node"><title>ABCD</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="577,-221 523,-221 523,-185 577,-185 577,-221"/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="535,-221 523,-209 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="523,-197 535,-185 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="565,-185 577,-197 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="577,-209 565,-221 "/>
|
||||
<text text-anchor="middle" x="550" y="-198.1" font-family="Sans" font-size="16.00">H1</text>
|
||||
</g>
|
||||
<!-- ABCD->ROOT -->
|
||||
<g id="edge72" class="edge"><title>ABCD->ROOT</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M571.101,-228.632C574.759,-232.676 578.541,-236.786 582.136,-240.622"/>
|
||||
<polygon fill="black" stroke="black" points="573.575,-226.148 564.299,-221.027 568.357,-230.814 573.575,-226.148"/>
|
||||
</g>
|
||||
<!-- ABCD->AB -->
|
||||
<!-- ABCD->CD -->
|
||||
<!-- ROOT->EFG2 -->
|
||||
<!-- ROOT->ABCD -->
|
||||
<g id="edge76" class="edge"><title>ROOT->ABCD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M580.312,-232.997C576.653,-228.949 572.86,-224.846 569.241,-221.027"/>
|
||||
<polygon fill="black" stroke="black" points="577.837,-235.48 587.1,-240.622 583.065,-230.826 577.837,-235.48"/>
|
||||
</g>
|
||||
<!-- AB->B -->
|
||||
<!-- AB->A -->
|
||||
<!-- AB->ABCD -->
|
||||
<g id="edge56" class="edge"><title>AB->ABCD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M475.198,-134.026C490.473,-148.958 512.801,-170.072 529.099,-184.997"/>
|
||||
</g>
|
||||
<!-- CD->D -->
|
||||
<!-- CD->C -->
|
||||
<!-- CD->ABCD -->
|
||||
<g id="edge58" class="edge"><title>CD->ABCD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M548.136,-134.026C547.621,-148.958 547.621,-170.072 548.137,-184.997"/>
|
||||
</g>
|
||||
<!-- G2->G -->
|
||||
<!-- G2->EFG2 -->
|
||||
<g id="edge62" class="edge"><title>G2->EFG2</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M713.353,-134.026C698.936,-148.958 679.279,-170.072 665.898,-184.997"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 16 KiB |
|
@ -0,0 +1,140 @@
|
|||
digraph merkleblock {
|
||||
|
||||
//size="6.25,2.22";
|
||||
size="6.25";
|
||||
rankdir=BT
|
||||
nodesep=0.1
|
||||
splines="false"
|
||||
|
||||
edge [ penwidth = 1.75, fontname="Sans" ]
|
||||
node [ penwidth = 1.75, shape = "box", fontname="Sans", ]
|
||||
graph [ penwidth = 1.75, fontname="Sans", fontsize = 16 ]
|
||||
|
||||
subgraph cluster_flags {
|
||||
node [ label = "", width=0.2, height=0.2, fontsize = 14, shape = "none" ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
flag8 [ label = "0" ];
|
||||
flag7 [ label = "0" ];
|
||||
flag6 [ label = "0", style = "filled" ];
|
||||
flag5 [ label = "1", style = "invis" ];
|
||||
flag4 [ label = "1", style = "invis" ];
|
||||
flag3 [ label = "1", style = "invis" ];
|
||||
flag2 [ label = "0", style = "invis" ];
|
||||
flag1 [ label = "1", style = "invis" ];
|
||||
flag_label [ label = "Flags", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
subgraph cluster_hashes {
|
||||
graph [ penwidth = 0 ];
|
||||
node [ shape = "none" ];
|
||||
|
||||
hash4 [ label = "H4" ];
|
||||
hash3 [ label = "H3", style = "filled" ];
|
||||
hash2 [ label = "H2", style = "invis" ];
|
||||
hash1 [ label = "H1", style = "invis" ];
|
||||
hash_label [ label = "Hashes", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
hash_label -> flag_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_legend {
|
||||
node [ label = "", fontsize = 18 ];
|
||||
graph [ penwidth = 0 ];
|
||||
edge [ style = "invis" ];
|
||||
ranksep = 3;
|
||||
|
||||
|
||||
{
|
||||
node [ shape = "none" ];
|
||||
matched_filter_label [ label = "TXID\nFilter\nMatch" ];
|
||||
hash_from_list_label [ label = "Hash\nFrom\nList" ];
|
||||
hash_computed_label [ label = "Hash\nCom-\nputed" ];
|
||||
waiting_label [ label = "Wait\nFor\nChild" ];
|
||||
}
|
||||
|
||||
matched_filter [ penwidth = 4, style = "diagonals", bgcolor = grey ];
|
||||
hash_from_list [ label = "H1", style = "diagonals" ];
|
||||
hash_computed [ label = "H()" ];
|
||||
waiting [ label = "↓" ];
|
||||
|
||||
pre_legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
pre_legend_label -> legend_label [ style = "invis" ];
|
||||
|
||||
waiting_label -> waiting;
|
||||
hash_from_list_label -> hash_from_list;
|
||||
hash_computed_label -> hash_computed;
|
||||
matched_filter_label -> matched_filter;
|
||||
|
||||
labelloc = b;
|
||||
label = "Legend"
|
||||
}
|
||||
|
||||
legend_label -> hash_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_tree {
|
||||
edge [ dir = "none" ];
|
||||
node [ label = "", fontsize = 16 ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
{
|
||||
root_row [ shape = "none" ];
|
||||
row1 [ shape = "none", label = "Non-TXID\nNodes" ];
|
||||
row2 [ shape = "none", style = "invis", width = 1.2 ];
|
||||
txid_row [ label = "TXID\nNodes", shape = "none" ];
|
||||
|
||||
row2 -> row1 [ dir = "back" ];
|
||||
row1 -> root_row [ dir = ""];
|
||||
txid_row -> row2 [ style = "invis" ];
|
||||
}
|
||||
|
||||
G;
|
||||
F [ style = "filled,diagonals" label = "H3" ];
|
||||
E [ penwidth = 4, style = "diagonals", label = "H2" ];
|
||||
D;
|
||||
C;
|
||||
B;
|
||||
A;
|
||||
|
||||
EF [ label = "↓" ];
|
||||
EFG2 [ label = "↓" ];
|
||||
ABCD [ style = "diagonals", label = "H1" ];
|
||||
ROOT [ label = "↓" ];
|
||||
|
||||
A -> AB;
|
||||
B -> AB;
|
||||
C -> CD;
|
||||
D -> CD;
|
||||
E -> EF [ dir = "back" ];
|
||||
F -> EF [ dir = "back" ];
|
||||
G -> G2;
|
||||
|
||||
AB -> A [ constraint = false, style = "invis" ];
|
||||
AB -> B [ constraint = false, style = "invis" ];
|
||||
CD -> C [ constraint = false, style = "invis" ];
|
||||
CD -> D [ constraint = false, style = "invis" ];
|
||||
EF -> E [ constraint = false, dir = "back" ];
|
||||
EF -> F [ constraint = false, dir = "back" ];
|
||||
G2 -> G [ constraint = false, style = "invis" ];
|
||||
|
||||
AB -> ABCD;
|
||||
CD -> ABCD;
|
||||
EF -> EFG2 [ dir = "back" ];
|
||||
G2 -> EFG2;
|
||||
|
||||
ABCD -> AB [ constraint = false, style = "invis" ];
|
||||
ABCD -> CD [ constraint = false, style = "invis" ];
|
||||
EFG2 -> EF [ constraint = false, style = "invis" ];
|
||||
EFG2 -> G2 [ constraint = false, style = "invis" ];
|
||||
|
||||
ABCD -> ROOT [ dir = "back" ];
|
||||
EFG2 -> ROOT [ dir = "back" ];
|
||||
|
||||
ROOT -> ABCD [ constraint = false, dir = "back" ];
|
||||
ROOT -> EFG2 [ constraint = false, style = "invis" ];
|
||||
|
||||
}
|
||||
|
||||
//label = "Parsing A MerkleBlock Message"
|
||||
}
|
After Width: | Height: | Size: 6.8 KiB |
|
@ -0,0 +1,304 @@
|
|||
<?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: merkleblock Pages: 1 -->
|
||||
<svg width="450pt" height="153pt"
|
||||
viewBox="0.00 0.00 450.00 152.71" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g id="graph1" class="graph" transform="scale(0.507328 0.507328) rotate(0) translate(4 297)">
|
||||
<title>merkleblock</title>
|
||||
<polygon fill="white" stroke="white" points="-4,5 -4,-297 884,-297 884,5 -4,5"/>
|
||||
<g id="graph2" class="cluster"><title>cluster_flags</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="0" points="16,-237 16,-281 354,-281 354,-237 16,-237"/>
|
||||
</g>
|
||||
<g id="graph3" class="cluster"><title>cluster_hashes</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="0" points="8,-177 8,-229 342,-229 342,-177 8,-177"/>
|
||||
</g>
|
||||
<g id="graph4" class="cluster"><title>cluster_legend</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="0" points="45,-8 45,-169 349,-169 349,-8 45,-8"/>
|
||||
<text text-anchor="middle" x="197" y="-150.6" font-family="Sans" font-size="16.00">Legend</text>
|
||||
</g>
|
||||
<g id="graph6" class="cluster"><title>cluster_tree</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="0" points="362,-22 362,-285 871,-285 871,-22 362,-22"/>
|
||||
</g>
|
||||
<!-- flag8 -->
|
||||
<g id="node2" class="node"><title>flag8</title>
|
||||
<text text-anchor="middle" x="333" y="-254.9" font-family="Sans" font-size="14.00">0</text>
|
||||
</g>
|
||||
<!-- flag7 -->
|
||||
<g id="node3" class="node"><title>flag7</title>
|
||||
<text text-anchor="middle" x="300" y="-254.9" font-family="Sans" font-size="14.00">0</text>
|
||||
</g>
|
||||
<!-- flag6 -->
|
||||
<g id="node4" class="node"><title>flag6</title>
|
||||
<polygon fill="lightgrey" stroke="lightgrey" stroke-width="1.75" points="280,-271.5 254,-271.5 254,-246.5 280,-246.5 280,-271.5"/>
|
||||
<text text-anchor="middle" x="267" y="-254.9" font-family="Sans" font-size="14.00">0</text>
|
||||
</g>
|
||||
<!-- flag5 -->
|
||||
<!-- flag4 -->
|
||||
<!-- flag3 -->
|
||||
<!-- flag2 -->
|
||||
<!-- flag1 -->
|
||||
<!-- flag_label -->
|
||||
<g id="node10" class="node"><title>flag_label</title>
|
||||
<text text-anchor="middle" x="53" y="-254.1" font-family="Sans" font-size="16.00">Flags</text>
|
||||
</g>
|
||||
<!-- hash4 -->
|
||||
<g id="node12" class="node"><title>hash4</title>
|
||||
<text text-anchor="middle" x="307" y="-198.9" font-family="Sans" font-size="14.00">H4</text>
|
||||
</g>
|
||||
<!-- hash3 -->
|
||||
<g id="node13" class="node"><title>hash3</title>
|
||||
<polygon fill="lightgrey" stroke="lightgrey" stroke-width="1.75" points="273,-221 219,-221 219,-185 273,-185 273,-221"/>
|
||||
<text text-anchor="middle" x="246" y="-198.9" font-family="Sans" font-size="14.00">H3</text>
|
||||
</g>
|
||||
<!-- hash2 -->
|
||||
<!-- hash1 -->
|
||||
<!-- hash_label -->
|
||||
<g id="node16" class="node"><title>hash_label</title>
|
||||
<text text-anchor="middle" x="53" y="-198.1" font-family="Sans" font-size="16.00">Hashes</text>
|
||||
</g>
|
||||
<!-- hash_label->flag_label -->
|
||||
<!-- matched_filter_label -->
|
||||
<g id="node20" class="node"><title>matched_filter_label</title>
|
||||
<text text-anchor="middle" x="306" y="-69.8" font-family="Sans" font-size="18.00">TXID</text>
|
||||
<text text-anchor="middle" x="306" y="-47.8" font-family="Sans" font-size="18.00">Filter</text>
|
||||
<text text-anchor="middle" x="306" y="-25.8" font-family="Sans" font-size="18.00">Match</text>
|
||||
</g>
|
||||
<!-- matched_filter -->
|
||||
<g id="node24" class="node"><title>matched_filter</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="4" points="333,-134 279,-134 279,-98 333,-98 333,-134"/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="291,-134 279,-122 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="279,-110 291,-98 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="321,-98 333,-110 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="333,-122 321,-134 "/>
|
||||
</g>
|
||||
<!-- matched_filter_label->matched_filter -->
|
||||
<!-- hash_from_list_label -->
|
||||
<g id="node21" class="node"><title>hash_from_list_label</title>
|
||||
<text text-anchor="middle" x="234" y="-69.8" font-family="Sans" font-size="18.00">Hash</text>
|
||||
<text text-anchor="middle" x="234" y="-47.8" font-family="Sans" font-size="18.00">From</text>
|
||||
<text text-anchor="middle" x="234" y="-25.8" font-family="Sans" font-size="18.00">List</text>
|
||||
</g>
|
||||
<!-- hash_from_list -->
|
||||
<g id="node25" class="node"><title>hash_from_list</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="261,-134 207,-134 207,-98 261,-98 261,-134"/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="219,-134 207,-122 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="207,-110 219,-98 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="249,-98 261,-110 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="261,-122 249,-134 "/>
|
||||
<text text-anchor="middle" x="234" y="-110.8" font-family="Sans" font-size="18.00">H1</text>
|
||||
</g>
|
||||
<!-- hash_from_list_label->hash_from_list -->
|
||||
<!-- hash_computed_label -->
|
||||
<g id="node22" class="node"><title>hash_computed_label</title>
|
||||
<text text-anchor="middle" x="163" y="-69.8" font-family="Sans" font-size="18.00">Hash</text>
|
||||
<text text-anchor="middle" x="163" y="-47.8" font-family="Sans" font-size="18.00">Com-</text>
|
||||
<text text-anchor="middle" x="163" y="-25.8" font-family="Sans" font-size="18.00">puted</text>
|
||||
</g>
|
||||
<!-- hash_computed -->
|
||||
<g id="node26" class="node"><title>hash_computed</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="190,-134 136,-134 136,-98 190,-98 190,-134"/>
|
||||
<text text-anchor="middle" x="163" y="-110.8" font-family="Sans" font-size="18.00">H()</text>
|
||||
</g>
|
||||
<!-- hash_computed_label->hash_computed -->
|
||||
<!-- waiting_label -->
|
||||
<g id="node23" class="node"><title>waiting_label</title>
|
||||
<text text-anchor="middle" x="91" y="-69.8" font-family="Sans" font-size="18.00">Wait</text>
|
||||
<text text-anchor="middle" x="91" y="-47.8" font-family="Sans" font-size="18.00">For</text>
|
||||
<text text-anchor="middle" x="91" y="-25.8" font-family="Sans" font-size="18.00">Child</text>
|
||||
</g>
|
||||
<!-- waiting -->
|
||||
<g id="node27" class="node"><title>waiting</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="118,-134 64,-134 64,-98 118,-98 118,-134"/>
|
||||
<text text-anchor="middle" x="91" y="-110.8" font-family="Sans" font-size="18.00">↓</text>
|
||||
</g>
|
||||
<!-- waiting_label->waiting -->
|
||||
<!-- pre_legend_label -->
|
||||
<!-- legend_label -->
|
||||
<!-- pre_legend_label->legend_label -->
|
||||
<!-- legend_label->hash_label -->
|
||||
<!-- root_row -->
|
||||
<g id="node38" class="node"><title>root_row</title>
|
||||
</g>
|
||||
<!-- row1 -->
|
||||
<g id="node39" class="node"><title>row1</title>
|
||||
<text text-anchor="middle" x="818" y="-207.6" font-family="Sans" font-size="16.00">Non-TXID</text>
|
||||
<text text-anchor="middle" x="818" y="-188.6" font-family="Sans" font-size="16.00">Nodes</text>
|
||||
</g>
|
||||
<!-- row1->root_row -->
|
||||
<g id="edge24" class="edge"><title>row1->root_row</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M818,-226.101C818,-227.645 818,-229.209 818,-230.775"/>
|
||||
<polygon fill="black" stroke="black" points="814.5,-230.913 818,-240.913 821.5,-230.913 814.5,-230.913"/>
|
||||
</g>
|
||||
<!-- row2 -->
|
||||
<!-- row2->row1 -->
|
||||
<g id="edge22" class="edge"><title>row2->row1</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M818.674,-144.378C818.542,-155.812 818.393,-168.837 818.268,-179.702"/>
|
||||
<polygon fill="black" stroke="black" points="822.178,-144.066 818.793,-134.026 815.178,-143.986 822.178,-144.066"/>
|
||||
</g>
|
||||
<!-- txid_row -->
|
||||
<g id="node41" class="node"><title>txid_row</title>
|
||||
<text text-anchor="middle" x="830" y="-57.6" font-family="Sans" font-size="16.00">TXID</text>
|
||||
<text text-anchor="middle" x="830" y="-38.6" font-family="Sans" font-size="16.00">Nodes</text>
|
||||
</g>
|
||||
<!-- txid_row->row2 -->
|
||||
<!-- G -->
|
||||
<g id="node45" class="node"><title>G</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="790,-71 736,-71 736,-35 790,-35 790,-71"/>
|
||||
</g>
|
||||
<!-- G2 -->
|
||||
<g id="node65" class="node"><title>G2</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="759,-134 705,-134 705,-98 759,-98 759,-134"/>
|
||||
</g>
|
||||
<!-- G->G2 -->
|
||||
<g id="edge40" class="edge"><title>G->G2</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M751.972,-71.2222C747.646,-79.5078 742.829,-89.2936 738.986,-97.6005"/>
|
||||
</g>
|
||||
<!-- F -->
|
||||
<g id="node46" class="node"><title>F</title>
|
||||
<polygon fill="lightgrey" stroke="black" stroke-width="1.75" points="729,-71 675,-71 675,-35 729,-35 729,-71"/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="687,-71 675,-59 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="675,-47 687,-35 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="717,-35 729,-47 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="729,-59 717,-71 "/>
|
||||
<text text-anchor="middle" x="702" y="-48.1" font-family="Sans" font-size="16.00">H3</text>
|
||||
</g>
|
||||
<!-- EF -->
|
||||
<g id="node52" class="node"><title>EF</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="678,-134 624,-134 624,-98 678,-98 678,-134"/>
|
||||
<text text-anchor="middle" x="651" y="-111.1" font-family="Sans" font-size="16.00">↓</text>
|
||||
</g>
|
||||
<!-- F->EF -->
|
||||
<g id="edge38" class="edge"><title>F->EF</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M678.799,-78.9203C673.653,-85.1878 668.383,-91.7597 663.828,-97.6005"/>
|
||||
<polygon fill="black" stroke="black" points="681.494,-81.1528 685.187,-71.2222 676.107,-76.6826 681.494,-81.1528"/>
|
||||
</g>
|
||||
<!-- E -->
|
||||
<g id="node47" class="node"><title>E</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="4" points="668,-71 614,-71 614,-35 668,-35 668,-71"/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="626,-71 614,-59 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="614,-47 626,-35 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="656,-35 668,-47 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="668,-59 656,-71 "/>
|
||||
<text text-anchor="middle" x="641" y="-48.1" font-family="Sans" font-size="16.00">H2</text>
|
||||
</g>
|
||||
<!-- E->EF -->
|
||||
<g id="edge36" class="edge"><title>E->EF</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M643.274,-81.4411C644.111,-86.9273 645.059,-92.5385 646.012,-97.6005"/>
|
||||
<polygon fill="black" stroke="black" points="646.695,-80.6343 641.83,-71.2222 639.764,-81.6135 646.695,-80.6343"/>
|
||||
</g>
|
||||
<!-- D -->
|
||||
<g id="node48" class="node"><title>D</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="607,-71 553,-71 553,-35 607,-35 607,-71"/>
|
||||
</g>
|
||||
<!-- CD -->
|
||||
<g id="node60" class="node"><title>CD</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="577,-134 523,-134 523,-98 577,-98 577,-134"/>
|
||||
</g>
|
||||
<!-- D->CD -->
|
||||
<g id="edge34" class="edge"><title>D->CD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M569.261,-71.2222C565.066,-79.5078 560.405,-89.2936 556.694,-97.6005"/>
|
||||
</g>
|
||||
<!-- C -->
|
||||
<g id="node49" class="node"><title>C</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="546,-71 492,-71 492,-35 546,-35 546,-71"/>
|
||||
</g>
|
||||
<!-- C->CD -->
|
||||
<g id="edge32" class="edge"><title>C->CD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M525.904,-71.2222C529.733,-79.5078 534.546,-89.2936 538.879,-97.6005"/>
|
||||
</g>
|
||||
<!-- B -->
|
||||
<g id="node50" class="node"><title>B</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="485,-71 431,-71 431,-35 485,-35 485,-71"/>
|
||||
</g>
|
||||
<!-- AB -->
|
||||
<g id="node57" class="node"><title>AB</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="485,-134 431,-134 431,-98 485,-98 485,-134"/>
|
||||
</g>
|
||||
<!-- B->AB -->
|
||||
<g id="edge30" class="edge"><title>B->AB</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M455.938,-71.2222C455.689,-79.5078 455.687,-89.2936 455.933,-97.6005"/>
|
||||
</g>
|
||||
<!-- A -->
|
||||
<g id="node51" class="node"><title>A</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="424,-71 370,-71 370,-35 424,-35 424,-71"/>
|
||||
</g>
|
||||
<!-- A->AB -->
|
||||
<g id="edge28" class="edge"><title>A->AB</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M412.582,-71.2222C420.355,-79.5078 429.829,-89.2936 438.117,-97.6005"/>
|
||||
</g>
|
||||
<!-- EF->F -->
|
||||
<g id="edge52" class="edge"><title>EF->F</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M675.098,-89.8891C680.269,-83.6155 685.515,-77.048 689.998,-71.2222"/>
|
||||
<polygon fill="black" stroke="black" points="672.38,-87.6835 668.651,-97.6005 677.75,-92.1733 672.38,-87.6835"/>
|
||||
</g>
|
||||
<!-- EF->E -->
|
||||
<g id="edge50" class="edge"><title>EF->E</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M649.444,-87.3665C648.615,-81.8774 647.645,-76.2713 646.642,-71.2222"/>
|
||||
<polygon fill="black" stroke="black" points="646.02,-88.1634 650.836,-97.6005 652.956,-87.22 646.02,-88.1634"/>
|
||||
</g>
|
||||
<!-- EFG2 -->
|
||||
<g id="node53" class="node"><title>EFG2</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="678,-221 624,-221 624,-185 678,-185 678,-221"/>
|
||||
<text text-anchor="middle" x="651" y="-198.1" font-family="Sans" font-size="16.00">↓</text>
|
||||
</g>
|
||||
<!-- EF->EFG2 -->
|
||||
<g id="edge60" class="edge"><title>EF->EFG2</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M648.879,-144.184C648.644,-157.59 648.73,-173.22 649.137,-184.997"/>
|
||||
<polygon fill="black" stroke="black" points="652.382,-144.112 649.136,-134.026 645.384,-143.935 652.382,-144.112"/>
|
||||
</g>
|
||||
<!-- EFG2->EF -->
|
||||
<!-- ROOT -->
|
||||
<g id="node55" class="node"><title>ROOT</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="628,-277 574,-277 574,-241 628,-241 628,-277"/>
|
||||
<text text-anchor="middle" x="601" y="-254.1" font-family="Sans" font-size="16.00">↓</text>
|
||||
</g>
|
||||
<!-- EFG2->ROOT -->
|
||||
<g id="edge74" class="edge"><title>EFG2->ROOT</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M625.871,-228.632C622.236,-232.676 618.605,-236.786 615.281,-240.622"/>
|
||||
<polygon fill="black" stroke="black" points="628.649,-230.78 632.786,-221.027 623.469,-226.071 628.649,-230.78"/>
|
||||
</g>
|
||||
<!-- EFG2->G2 -->
|
||||
<!-- ABCD -->
|
||||
<g id="node54" class="node"><title>ABCD</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="577,-221 523,-221 523,-185 577,-185 577,-221"/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="535,-221 523,-209 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="523,-197 535,-185 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="565,-185 577,-197 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="577,-209 565,-221 "/>
|
||||
<text text-anchor="middle" x="550" y="-198.1" font-family="Sans" font-size="16.00">H1</text>
|
||||
</g>
|
||||
<!-- ABCD->ROOT -->
|
||||
<g id="edge72" class="edge"><title>ABCD->ROOT</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M571.101,-228.632C574.759,-232.676 578.541,-236.786 582.136,-240.622"/>
|
||||
<polygon fill="black" stroke="black" points="573.575,-226.148 564.299,-221.027 568.357,-230.814 573.575,-226.148"/>
|
||||
</g>
|
||||
<!-- ABCD->AB -->
|
||||
<!-- ABCD->CD -->
|
||||
<!-- ROOT->EFG2 -->
|
||||
<!-- ROOT->ABCD -->
|
||||
<g id="edge76" class="edge"><title>ROOT->ABCD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M580.312,-232.997C576.653,-228.949 572.86,-224.846 569.241,-221.027"/>
|
||||
<polygon fill="black" stroke="black" points="577.837,-235.48 587.1,-240.622 583.065,-230.826 577.837,-235.48"/>
|
||||
</g>
|
||||
<!-- AB->B -->
|
||||
<!-- AB->A -->
|
||||
<!-- AB->ABCD -->
|
||||
<g id="edge56" class="edge"><title>AB->ABCD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M475.198,-134.026C490.473,-148.958 512.801,-170.072 529.099,-184.997"/>
|
||||
</g>
|
||||
<!-- CD->D -->
|
||||
<!-- CD->C -->
|
||||
<!-- CD->ABCD -->
|
||||
<g id="edge58" class="edge"><title>CD->ABCD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M548.136,-134.026C547.621,-148.958 547.621,-170.072 548.137,-184.997"/>
|
||||
</g>
|
||||
<!-- G2->G -->
|
||||
<!-- G2->EFG2 -->
|
||||
<g id="edge62" class="edge"><title>G2->EFG2</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M713.353,-134.026C698.936,-148.958 679.279,-170.072 665.898,-184.997"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 16 KiB |
|
@ -0,0 +1,140 @@
|
|||
digraph merkleblock {
|
||||
|
||||
//size="6.25,2.22";
|
||||
size="6.25";
|
||||
rankdir=BT
|
||||
nodesep=0.1
|
||||
splines="false"
|
||||
|
||||
edge [ penwidth = 1.75, fontname="Sans" ]
|
||||
node [ penwidth = 1.75, shape = "box", fontname="Sans", ]
|
||||
graph [ penwidth = 1.75, fontname="Sans", fontsize = 16 ]
|
||||
|
||||
subgraph cluster_flags {
|
||||
node [ label = "", width=0.2, height=0.2, fontsize = 14, shape = "none" ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
flag8 [ label = "0" ];
|
||||
flag7 [ label = "0" ];
|
||||
flag6 [ label = "0", style = "invis" ];
|
||||
flag5 [ label = "1", style = "invis" ];
|
||||
flag4 [ label = "1", style = "invis" ];
|
||||
flag3 [ label = "1", style = "invis" ];
|
||||
flag2 [ label = "0", style = "invis" ];
|
||||
flag1 [ label = "1", style = "invis" ];
|
||||
flag_label [ label = "Flags", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
subgraph cluster_hashes {
|
||||
graph [ penwidth = 0 ];
|
||||
node [ shape = "none" ];
|
||||
|
||||
hash4 [ label = "H4" ];
|
||||
hash3 [ label = "H3", style = "invis" ];
|
||||
hash2 [ label = "H2", style = "invis" ];
|
||||
hash1 [ label = "H1", style = "invis" ];
|
||||
hash_label [ label = "Hashes", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
hash_label -> flag_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_legend {
|
||||
node [ label = "", fontsize = 18 ];
|
||||
graph [ penwidth = 0 ];
|
||||
edge [ style = "invis" ];
|
||||
ranksep = 3;
|
||||
|
||||
|
||||
{
|
||||
node [ shape = "none" ];
|
||||
matched_filter_label [ label = "TXID\nFilter\nMatch" ];
|
||||
hash_from_list_label [ label = "Hash\nFrom\nList" ];
|
||||
hash_computed_label [ label = "Hash\nCom-\nputed" ];
|
||||
waiting_label [ label = "Wait\nFor\nChild" ];
|
||||
}
|
||||
|
||||
matched_filter [ penwidth = 4, style = "diagonals", bgcolor = grey ];
|
||||
hash_from_list [ label = "H1", style = "diagonals" ];
|
||||
hash_computed [ label = "H()" ];
|
||||
waiting [ label = "↓" ];
|
||||
|
||||
pre_legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
pre_legend_label -> legend_label [ style = "invis" ];
|
||||
|
||||
waiting_label -> waiting;
|
||||
hash_from_list_label -> hash_from_list;
|
||||
hash_computed_label -> hash_computed;
|
||||
matched_filter_label -> matched_filter;
|
||||
|
||||
labelloc = b;
|
||||
label = "Legend"
|
||||
}
|
||||
|
||||
legend_label -> hash_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_tree {
|
||||
edge [ dir = "none" ];
|
||||
node [ label = "", fontsize = 16 ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
{
|
||||
root_row [ shape = "none" ];
|
||||
row1 [ shape = "none", label = "Non-TXID\nNodes" ];
|
||||
row2 [ shape = "none", style = "invis", width = 1.2 ];
|
||||
txid_row [ label = "TXID\nNodes", shape = "none" ];
|
||||
|
||||
row2 -> row1 [ dir = "back" ];
|
||||
row1 -> root_row [ dir = ""];
|
||||
txid_row -> row2 [ style = "invis" ];
|
||||
}
|
||||
|
||||
G;
|
||||
F [ style = "diagonals", label = "H3" ];
|
||||
E [ penwidth = 4, style = "diagonals", label = "H2" ];
|
||||
D;
|
||||
C;
|
||||
B;
|
||||
A;
|
||||
|
||||
EF [ label = "H()", style = "filled" ];
|
||||
EFG2 [ label = "↓" ];
|
||||
ABCD [ style = "diagonals", label = "H1" ];
|
||||
ROOT [ label = "↓" ];
|
||||
|
||||
A -> AB;
|
||||
B -> AB;
|
||||
C -> CD;
|
||||
D -> CD;
|
||||
E -> EF [ dir = "back" ];
|
||||
F -> EF [ dir = "back" ];
|
||||
G -> G2;
|
||||
|
||||
AB -> A [ constraint = false, style = "invis" ];
|
||||
AB -> B [ constraint = false, style = "invis" ];
|
||||
CD -> C [ constraint = false, style = "invis" ];
|
||||
CD -> D [ constraint = false, style = "invis" ];
|
||||
EF -> E [ constraint = false, dir = "back" ];
|
||||
EF -> F [ constraint = false, dir = "back" ];
|
||||
G2 -> G [ constraint = false, style = "invis" ];
|
||||
|
||||
AB -> ABCD;
|
||||
CD -> ABCD;
|
||||
EF -> EFG2 [ dir = "back" ];
|
||||
G2 -> EFG2 [ dir = "back" ];
|
||||
|
||||
ABCD -> AB [ constraint = false, style = "invis" ];
|
||||
ABCD -> CD [ constraint = false, style = "invis" ];
|
||||
EFG2 -> EF [ constraint = false, dir = "back" ];
|
||||
EFG2 -> G2 [ constraint = false, style = "invis" ];
|
||||
|
||||
ABCD -> ROOT [ dir = "back" ];
|
||||
EFG2 -> ROOT [ dir = "back" ];
|
||||
|
||||
ROOT -> ABCD [ constraint = false, dir = "back" ];
|
||||
ROOT -> EFG2 [ constraint = false, style = "invis" ];
|
||||
|
||||
}
|
||||
|
||||
//label = "Parsing A MerkleBlock Message"
|
||||
}
|
After Width: | Height: | Size: 6.8 KiB |
|
@ -0,0 +1,301 @@
|
|||
<?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: merkleblock Pages: 1 -->
|
||||
<svg width="450pt" height="153pt"
|
||||
viewBox="0.00 0.00 450.00 152.71" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g id="graph1" class="graph" transform="scale(0.507328 0.507328) rotate(0) translate(4 297)">
|
||||
<title>merkleblock</title>
|
||||
<polygon fill="white" stroke="white" points="-4,5 -4,-297 884,-297 884,5 -4,5"/>
|
||||
<g id="graph2" class="cluster"><title>cluster_flags</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="0" points="16,-237 16,-281 354,-281 354,-237 16,-237"/>
|
||||
</g>
|
||||
<g id="graph3" class="cluster"><title>cluster_hashes</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="0" points="8,-177 8,-229 342,-229 342,-177 8,-177"/>
|
||||
</g>
|
||||
<g id="graph4" class="cluster"><title>cluster_legend</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="0" points="45,-8 45,-169 349,-169 349,-8 45,-8"/>
|
||||
<text text-anchor="middle" x="197" y="-150.6" font-family="Sans" font-size="16.00">Legend</text>
|
||||
</g>
|
||||
<g id="graph6" class="cluster"><title>cluster_tree</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="0" points="362,-22 362,-285 871,-285 871,-22 362,-22"/>
|
||||
</g>
|
||||
<!-- flag8 -->
|
||||
<g id="node2" class="node"><title>flag8</title>
|
||||
<text text-anchor="middle" x="333" y="-254.9" font-family="Sans" font-size="14.00">0</text>
|
||||
</g>
|
||||
<!-- flag7 -->
|
||||
<g id="node3" class="node"><title>flag7</title>
|
||||
<text text-anchor="middle" x="300" y="-254.9" font-family="Sans" font-size="14.00">0</text>
|
||||
</g>
|
||||
<!-- flag6 -->
|
||||
<!-- flag5 -->
|
||||
<!-- flag4 -->
|
||||
<!-- flag3 -->
|
||||
<!-- flag2 -->
|
||||
<!-- flag1 -->
|
||||
<!-- flag_label -->
|
||||
<g id="node10" class="node"><title>flag_label</title>
|
||||
<text text-anchor="middle" x="53" y="-254.1" font-family="Sans" font-size="16.00">Flags</text>
|
||||
</g>
|
||||
<!-- hash4 -->
|
||||
<g id="node12" class="node"><title>hash4</title>
|
||||
<text text-anchor="middle" x="307" y="-198.9" font-family="Sans" font-size="14.00">H4</text>
|
||||
</g>
|
||||
<!-- hash3 -->
|
||||
<!-- hash2 -->
|
||||
<!-- hash1 -->
|
||||
<!-- hash_label -->
|
||||
<g id="node16" class="node"><title>hash_label</title>
|
||||
<text text-anchor="middle" x="53" y="-198.1" font-family="Sans" font-size="16.00">Hashes</text>
|
||||
</g>
|
||||
<!-- hash_label->flag_label -->
|
||||
<!-- matched_filter_label -->
|
||||
<g id="node20" class="node"><title>matched_filter_label</title>
|
||||
<text text-anchor="middle" x="306" y="-69.8" font-family="Sans" font-size="18.00">TXID</text>
|
||||
<text text-anchor="middle" x="306" y="-47.8" font-family="Sans" font-size="18.00">Filter</text>
|
||||
<text text-anchor="middle" x="306" y="-25.8" font-family="Sans" font-size="18.00">Match</text>
|
||||
</g>
|
||||
<!-- matched_filter -->
|
||||
<g id="node24" class="node"><title>matched_filter</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="4" points="333,-134 279,-134 279,-98 333,-98 333,-134"/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="291,-134 279,-122 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="279,-110 291,-98 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="321,-98 333,-110 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="333,-122 321,-134 "/>
|
||||
</g>
|
||||
<!-- matched_filter_label->matched_filter -->
|
||||
<!-- hash_from_list_label -->
|
||||
<g id="node21" class="node"><title>hash_from_list_label</title>
|
||||
<text text-anchor="middle" x="234" y="-69.8" font-family="Sans" font-size="18.00">Hash</text>
|
||||
<text text-anchor="middle" x="234" y="-47.8" font-family="Sans" font-size="18.00">From</text>
|
||||
<text text-anchor="middle" x="234" y="-25.8" font-family="Sans" font-size="18.00">List</text>
|
||||
</g>
|
||||
<!-- hash_from_list -->
|
||||
<g id="node25" class="node"><title>hash_from_list</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="261,-134 207,-134 207,-98 261,-98 261,-134"/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="219,-134 207,-122 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="207,-110 219,-98 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="249,-98 261,-110 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="261,-122 249,-134 "/>
|
||||
<text text-anchor="middle" x="234" y="-110.8" font-family="Sans" font-size="18.00">H1</text>
|
||||
</g>
|
||||
<!-- hash_from_list_label->hash_from_list -->
|
||||
<!-- hash_computed_label -->
|
||||
<g id="node22" class="node"><title>hash_computed_label</title>
|
||||
<text text-anchor="middle" x="163" y="-69.8" font-family="Sans" font-size="18.00">Hash</text>
|
||||
<text text-anchor="middle" x="163" y="-47.8" font-family="Sans" font-size="18.00">Com-</text>
|
||||
<text text-anchor="middle" x="163" y="-25.8" font-family="Sans" font-size="18.00">puted</text>
|
||||
</g>
|
||||
<!-- hash_computed -->
|
||||
<g id="node26" class="node"><title>hash_computed</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="190,-134 136,-134 136,-98 190,-98 190,-134"/>
|
||||
<text text-anchor="middle" x="163" y="-110.8" font-family="Sans" font-size="18.00">H()</text>
|
||||
</g>
|
||||
<!-- hash_computed_label->hash_computed -->
|
||||
<!-- waiting_label -->
|
||||
<g id="node23" class="node"><title>waiting_label</title>
|
||||
<text text-anchor="middle" x="91" y="-69.8" font-family="Sans" font-size="18.00">Wait</text>
|
||||
<text text-anchor="middle" x="91" y="-47.8" font-family="Sans" font-size="18.00">For</text>
|
||||
<text text-anchor="middle" x="91" y="-25.8" font-family="Sans" font-size="18.00">Child</text>
|
||||
</g>
|
||||
<!-- waiting -->
|
||||
<g id="node27" class="node"><title>waiting</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="118,-134 64,-134 64,-98 118,-98 118,-134"/>
|
||||
<text text-anchor="middle" x="91" y="-110.8" font-family="Sans" font-size="18.00">↓</text>
|
||||
</g>
|
||||
<!-- waiting_label->waiting -->
|
||||
<!-- pre_legend_label -->
|
||||
<!-- legend_label -->
|
||||
<!-- pre_legend_label->legend_label -->
|
||||
<!-- legend_label->hash_label -->
|
||||
<!-- root_row -->
|
||||
<g id="node38" class="node"><title>root_row</title>
|
||||
</g>
|
||||
<!-- row1 -->
|
||||
<g id="node39" class="node"><title>row1</title>
|
||||
<text text-anchor="middle" x="818" y="-207.6" font-family="Sans" font-size="16.00">Non-TXID</text>
|
||||
<text text-anchor="middle" x="818" y="-188.6" font-family="Sans" font-size="16.00">Nodes</text>
|
||||
</g>
|
||||
<!-- row1->root_row -->
|
||||
<g id="edge24" class="edge"><title>row1->root_row</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M818,-226.101C818,-227.645 818,-229.209 818,-230.775"/>
|
||||
<polygon fill="black" stroke="black" points="814.5,-230.913 818,-240.913 821.5,-230.913 814.5,-230.913"/>
|
||||
</g>
|
||||
<!-- row2 -->
|
||||
<!-- row2->row1 -->
|
||||
<g id="edge22" class="edge"><title>row2->row1</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M818.674,-144.378C818.542,-155.812 818.393,-168.837 818.268,-179.702"/>
|
||||
<polygon fill="black" stroke="black" points="822.178,-144.066 818.793,-134.026 815.178,-143.986 822.178,-144.066"/>
|
||||
</g>
|
||||
<!-- txid_row -->
|
||||
<g id="node41" class="node"><title>txid_row</title>
|
||||
<text text-anchor="middle" x="830" y="-57.6" font-family="Sans" font-size="16.00">TXID</text>
|
||||
<text text-anchor="middle" x="830" y="-38.6" font-family="Sans" font-size="16.00">Nodes</text>
|
||||
</g>
|
||||
<!-- txid_row->row2 -->
|
||||
<!-- G -->
|
||||
<g id="node45" class="node"><title>G</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="790,-71 736,-71 736,-35 790,-35 790,-71"/>
|
||||
</g>
|
||||
<!-- G2 -->
|
||||
<g id="node65" class="node"><title>G2</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="759,-134 705,-134 705,-98 759,-98 759,-134"/>
|
||||
</g>
|
||||
<!-- G->G2 -->
|
||||
<g id="edge40" class="edge"><title>G->G2</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M751.972,-71.2222C747.646,-79.5078 742.829,-89.2936 738.986,-97.6005"/>
|
||||
</g>
|
||||
<!-- F -->
|
||||
<g id="node46" class="node"><title>F</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="729,-71 675,-71 675,-35 729,-35 729,-71"/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="687,-71 675,-59 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="675,-47 687,-35 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="717,-35 729,-47 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="729,-59 717,-71 "/>
|
||||
<text text-anchor="middle" x="702" y="-48.1" font-family="Sans" font-size="16.00">H3</text>
|
||||
</g>
|
||||
<!-- EF -->
|
||||
<g id="node52" class="node"><title>EF</title>
|
||||
<polygon fill="lightgrey" stroke="black" stroke-width="1.75" points="678,-134 624,-134 624,-98 678,-98 678,-134"/>
|
||||
<text text-anchor="middle" x="651" y="-111.1" font-family="Sans" font-size="16.00">H()</text>
|
||||
</g>
|
||||
<!-- F->EF -->
|
||||
<g id="edge38" class="edge"><title>F->EF</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M678.799,-78.9203C673.653,-85.1878 668.383,-91.7597 663.828,-97.6005"/>
|
||||
<polygon fill="black" stroke="black" points="681.494,-81.1528 685.187,-71.2222 676.107,-76.6826 681.494,-81.1528"/>
|
||||
</g>
|
||||
<!-- E -->
|
||||
<g id="node47" class="node"><title>E</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="4" points="668,-71 614,-71 614,-35 668,-35 668,-71"/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="626,-71 614,-59 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="614,-47 626,-35 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="656,-35 668,-47 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="668,-59 656,-71 "/>
|
||||
<text text-anchor="middle" x="641" y="-48.1" font-family="Sans" font-size="16.00">H2</text>
|
||||
</g>
|
||||
<!-- E->EF -->
|
||||
<g id="edge36" class="edge"><title>E->EF</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M643.274,-81.4411C644.111,-86.9273 645.059,-92.5385 646.012,-97.6005"/>
|
||||
<polygon fill="black" stroke="black" points="646.695,-80.6343 641.83,-71.2222 639.764,-81.6135 646.695,-80.6343"/>
|
||||
</g>
|
||||
<!-- D -->
|
||||
<g id="node48" class="node"><title>D</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="607,-71 553,-71 553,-35 607,-35 607,-71"/>
|
||||
</g>
|
||||
<!-- CD -->
|
||||
<g id="node60" class="node"><title>CD</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="577,-134 523,-134 523,-98 577,-98 577,-134"/>
|
||||
</g>
|
||||
<!-- D->CD -->
|
||||
<g id="edge34" class="edge"><title>D->CD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M569.261,-71.2222C565.066,-79.5078 560.405,-89.2936 556.694,-97.6005"/>
|
||||
</g>
|
||||
<!-- C -->
|
||||
<g id="node49" class="node"><title>C</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="546,-71 492,-71 492,-35 546,-35 546,-71"/>
|
||||
</g>
|
||||
<!-- C->CD -->
|
||||
<g id="edge32" class="edge"><title>C->CD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M525.904,-71.2222C529.733,-79.5078 534.546,-89.2936 538.879,-97.6005"/>
|
||||
</g>
|
||||
<!-- B -->
|
||||
<g id="node50" class="node"><title>B</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="485,-71 431,-71 431,-35 485,-35 485,-71"/>
|
||||
</g>
|
||||
<!-- AB -->
|
||||
<g id="node57" class="node"><title>AB</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="485,-134 431,-134 431,-98 485,-98 485,-134"/>
|
||||
</g>
|
||||
<!-- B->AB -->
|
||||
<g id="edge30" class="edge"><title>B->AB</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M455.938,-71.2222C455.689,-79.5078 455.687,-89.2936 455.933,-97.6005"/>
|
||||
</g>
|
||||
<!-- A -->
|
||||
<g id="node51" class="node"><title>A</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="424,-71 370,-71 370,-35 424,-35 424,-71"/>
|
||||
</g>
|
||||
<!-- A->AB -->
|
||||
<g id="edge28" class="edge"><title>A->AB</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M412.582,-71.2222C420.355,-79.5078 429.829,-89.2936 438.117,-97.6005"/>
|
||||
</g>
|
||||
<!-- EF->F -->
|
||||
<g id="edge52" class="edge"><title>EF->F</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M675.098,-89.8891C680.269,-83.6155 685.515,-77.048 689.998,-71.2222"/>
|
||||
<polygon fill="black" stroke="black" points="672.38,-87.6835 668.651,-97.6005 677.75,-92.1733 672.38,-87.6835"/>
|
||||
</g>
|
||||
<!-- EF->E -->
|
||||
<g id="edge50" class="edge"><title>EF->E</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M649.444,-87.3665C648.615,-81.8774 647.645,-76.2713 646.642,-71.2222"/>
|
||||
<polygon fill="black" stroke="black" points="646.02,-88.1634 650.836,-97.6005 652.956,-87.22 646.02,-88.1634"/>
|
||||
</g>
|
||||
<!-- EFG2 -->
|
||||
<g id="node53" class="node"><title>EFG2</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="678,-221 624,-221 624,-185 678,-185 678,-221"/>
|
||||
<text text-anchor="middle" x="651" y="-198.1" font-family="Sans" font-size="16.00">↓</text>
|
||||
</g>
|
||||
<!-- EF->EFG2 -->
|
||||
<g id="edge60" class="edge"><title>EF->EFG2</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M648.879,-144.184C648.644,-157.59 648.73,-173.22 649.137,-184.997"/>
|
||||
<polygon fill="black" stroke="black" points="652.382,-144.112 649.136,-134.026 645.384,-143.935 652.382,-144.112"/>
|
||||
</g>
|
||||
<!-- EFG2->EF -->
|
||||
<g id="edge68" class="edge"><title>EFG2->EF</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M653.828,-174.842C654.141,-161.439 654.027,-145.808 653.486,-134.026"/>
|
||||
<polygon fill="black" stroke="black" points="650.324,-174.884 653.485,-184.997 657.32,-175.121 650.324,-174.884"/>
|
||||
</g>
|
||||
<!-- ROOT -->
|
||||
<g id="node55" class="node"><title>ROOT</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="628,-277 574,-277 574,-241 628,-241 628,-277"/>
|
||||
<text text-anchor="middle" x="601" y="-254.1" font-family="Sans" font-size="16.00">↓</text>
|
||||
</g>
|
||||
<!-- EFG2->ROOT -->
|
||||
<g id="edge74" class="edge"><title>EFG2->ROOT</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M625.871,-228.632C622.236,-232.676 618.605,-236.786 615.281,-240.622"/>
|
||||
<polygon fill="black" stroke="black" points="628.649,-230.78 632.786,-221.027 623.469,-226.071 628.649,-230.78"/>
|
||||
</g>
|
||||
<!-- EFG2->G2 -->
|
||||
<!-- ABCD -->
|
||||
<g id="node54" class="node"><title>ABCD</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="577,-221 523,-221 523,-185 577,-185 577,-221"/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="535,-221 523,-209 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="523,-197 535,-185 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="565,-185 577,-197 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="577,-209 565,-221 "/>
|
||||
<text text-anchor="middle" x="550" y="-198.1" font-family="Sans" font-size="16.00">H1</text>
|
||||
</g>
|
||||
<!-- ABCD->ROOT -->
|
||||
<g id="edge72" class="edge"><title>ABCD->ROOT</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M571.101,-228.632C574.759,-232.676 578.541,-236.786 582.136,-240.622"/>
|
||||
<polygon fill="black" stroke="black" points="573.575,-226.148 564.299,-221.027 568.357,-230.814 573.575,-226.148"/>
|
||||
</g>
|
||||
<!-- ABCD->AB -->
|
||||
<!-- ABCD->CD -->
|
||||
<!-- ROOT->EFG2 -->
|
||||
<!-- ROOT->ABCD -->
|
||||
<g id="edge76" class="edge"><title>ROOT->ABCD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M580.312,-232.997C576.653,-228.949 572.86,-224.846 569.241,-221.027"/>
|
||||
<polygon fill="black" stroke="black" points="577.837,-235.48 587.1,-240.622 583.065,-230.826 577.837,-235.48"/>
|
||||
</g>
|
||||
<!-- AB->B -->
|
||||
<!-- AB->A -->
|
||||
<!-- AB->ABCD -->
|
||||
<g id="edge56" class="edge"><title>AB->ABCD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M475.198,-134.026C490.473,-148.958 512.801,-170.072 529.099,-184.997"/>
|
||||
</g>
|
||||
<!-- CD->D -->
|
||||
<!-- CD->C -->
|
||||
<!-- CD->ABCD -->
|
||||
<g id="edge58" class="edge"><title>CD->ABCD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M548.136,-134.026C547.621,-148.958 547.621,-170.072 548.137,-184.997"/>
|
||||
</g>
|
||||
<!-- G2->G -->
|
||||
<!-- G2->EFG2 -->
|
||||
<g id="edge62" class="edge"><title>G2->EFG2</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M706.255,-141.431C692.947,-155.405 677.188,-172.404 665.898,-184.997"/>
|
||||
<polygon fill="black" stroke="black" points="708.959,-143.668 713.353,-134.026 703.906,-138.824 708.959,-143.668"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 16 KiB |
|
@ -0,0 +1,141 @@
|
|||
digraph merkleblock {
|
||||
|
||||
//size="6.25,2.22";
|
||||
size="6.25";
|
||||
rankdir=BT
|
||||
nodesep=0.1
|
||||
splines="false"
|
||||
|
||||
edge [ penwidth = 1.75, fontname="Sans" ]
|
||||
node [ penwidth = 1.75, shape = "box", fontname="Sans", ]
|
||||
graph [ penwidth = 1.75, fontname="Sans", fontsize = 16 ]
|
||||
|
||||
subgraph cluster_flags {
|
||||
node [ label = "", width=0.2, height=0.2, fontsize = 14, shape = "none" ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
flag8 [ label = "0" ];
|
||||
flag7 [ label = "0", style = "filled" ];
|
||||
flag6 [ label = "0", style = "invis" ];
|
||||
flag5 [ label = "1", style = "invis" ];
|
||||
flag4 [ label = "1", style = "invis" ];
|
||||
flag3 [ label = "1", style = "invis" ];
|
||||
flag2 [ label = "0", style = "invis" ];
|
||||
flag1 [ label = "1", style = "invis" ];
|
||||
flag_label [ label = "Flags", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
subgraph cluster_hashes {
|
||||
graph [ penwidth = 0 ];
|
||||
node [ shape = "none" ];
|
||||
|
||||
hash4 [ label = "H4", style = "filled" ];
|
||||
hash3 [ label = "H3", style = "invis" ];
|
||||
hash2 [ label = "H2", style = "invis" ];
|
||||
hash1 [ label = "H1", style = "invis" ];
|
||||
hash_label [ label = "Hashes", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
hash_label -> flag_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_legend {
|
||||
node [ label = "", fontsize = 18 ];
|
||||
graph [ penwidth = 0 ];
|
||||
edge [ style = "invis" ];
|
||||
ranksep = 3;
|
||||
|
||||
|
||||
{
|
||||
node [ shape = "none" ];
|
||||
matched_filter_label [ label = "TXID\nFilter\nMatch" ];
|
||||
hash_from_list_label [ label = "Hash\nFrom\nList" ];
|
||||
hash_computed_label [ label = "Hash\nCom-\nputed" ];
|
||||
waiting_label [ label = "Wait\nFor\nChild" ];
|
||||
}
|
||||
|
||||
matched_filter [ penwidth = 4, style = "diagonals", bgcolor = grey ];
|
||||
hash_from_list [ label = "H1", style = "diagonals" ];
|
||||
hash_computed [ label = "H()" ];
|
||||
waiting [ label = "↓" ];
|
||||
|
||||
pre_legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
pre_legend_label -> legend_label [ style = "invis" ];
|
||||
|
||||
waiting_label -> waiting;
|
||||
hash_from_list_label -> hash_from_list;
|
||||
hash_computed_label -> hash_computed;
|
||||
matched_filter_label -> matched_filter;
|
||||
|
||||
labelloc = b;
|
||||
label = "Legend"
|
||||
}
|
||||
|
||||
legend_label -> hash_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_tree {
|
||||
edge [ dir = "none" ];
|
||||
node [ label = "", fontsize = 16 ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
{
|
||||
root_row [ shape = "none" ];
|
||||
row1 [ shape = "none", label = "Non-TXID\nNodes" ];
|
||||
row2 [ shape = "none", style = "invis", width = 1.2 ];
|
||||
txid_row [ label = "TXID\nNodes", shape = "none" ];
|
||||
|
||||
row2 -> row1 [ dir = "back" ];
|
||||
row1 -> root_row [ dir = ""];
|
||||
txid_row -> row2 [ style = "invis" ];
|
||||
}
|
||||
|
||||
G;
|
||||
F [ style = "diagonals", label = "H3" ];
|
||||
E [ penwidth = 4, style = "diagonals", label = "H2" ];
|
||||
D;
|
||||
C;
|
||||
B;
|
||||
A;
|
||||
|
||||
G2 [ label = "H4", style = "filled,diagonals" ];
|
||||
EF [ label = "H()", ];
|
||||
EFG2 [ label = "↓" ];
|
||||
ABCD [ style = "diagonals", label = "H1" ];
|
||||
ROOT [ label = "↓" ];
|
||||
|
||||
A -> AB;
|
||||
B -> AB;
|
||||
C -> CD;
|
||||
D -> CD;
|
||||
E -> EF [ dir = "back" ];
|
||||
F -> EF [ dir = "back" ];
|
||||
G -> G2;
|
||||
|
||||
AB -> A [ constraint = false, style = "invis" ];
|
||||
AB -> B [ constraint = false, style = "invis" ];
|
||||
CD -> C [ constraint = false, style = "invis" ];
|
||||
CD -> D [ constraint = false, style = "invis" ];
|
||||
EF -> E [ constraint = false, dir = "back" ];
|
||||
EF -> F [ constraint = false, dir = "back" ];
|
||||
G2 -> G [ constraint = false, style = "invis" ];
|
||||
|
||||
AB -> ABCD;
|
||||
CD -> ABCD;
|
||||
EF -> EFG2 [ dir = "back" ];
|
||||
G2 -> EFG2 [ dir = "back" ];
|
||||
|
||||
ABCD -> AB [ constraint = false, style = "invis" ];
|
||||
ABCD -> CD [ constraint = false, style = "invis" ];
|
||||
EFG2 -> EF [ constraint = false, dir = "back" ];
|
||||
EFG2 -> G2 [ constraint = false, dir = "back" ];
|
||||
|
||||
ABCD -> ROOT [ dir = "back" ];
|
||||
EFG2 -> ROOT [ dir = "back" ];
|
||||
|
||||
ROOT -> ABCD [ constraint = false, dir = "back" ];
|
||||
ROOT -> EFG2 [ constraint = false, style = "invis" ];
|
||||
|
||||
}
|
||||
|
||||
//label = "Parsing A MerkleBlock Message"
|
||||
}
|
After Width: | Height: | Size: 7.2 KiB |
|
@ -0,0 +1,312 @@
|
|||
<?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: merkleblock Pages: 1 -->
|
||||
<svg width="450pt" height="153pt"
|
||||
viewBox="0.00 0.00 450.00 152.71" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g id="graph1" class="graph" transform="scale(0.507328 0.507328) rotate(0) translate(4 297)">
|
||||
<title>merkleblock</title>
|
||||
<polygon fill="white" stroke="white" points="-4,5 -4,-297 884,-297 884,5 -4,5"/>
|
||||
<g id="graph2" class="cluster"><title>cluster_flags</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="0" points="16,-237 16,-281 354,-281 354,-237 16,-237"/>
|
||||
</g>
|
||||
<g id="graph3" class="cluster"><title>cluster_hashes</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="0" points="8,-177 8,-229 342,-229 342,-177 8,-177"/>
|
||||
</g>
|
||||
<g id="graph4" class="cluster"><title>cluster_legend</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="0" points="45,-8 45,-169 349,-169 349,-8 45,-8"/>
|
||||
<text text-anchor="middle" x="197" y="-150.6" font-family="Sans" font-size="16.00">Legend</text>
|
||||
</g>
|
||||
<g id="graph6" class="cluster"><title>cluster_tree</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="0" points="362,-22 362,-285 871,-285 871,-22 362,-22"/>
|
||||
</g>
|
||||
<!-- flag8 -->
|
||||
<g id="node2" class="node"><title>flag8</title>
|
||||
<text text-anchor="middle" x="333" y="-254.9" font-family="Sans" font-size="14.00">0</text>
|
||||
</g>
|
||||
<!-- flag7 -->
|
||||
<g id="node3" class="node"><title>flag7</title>
|
||||
<polygon fill="lightgrey" stroke="lightgrey" stroke-width="1.75" points="313,-271.5 287,-271.5 287,-246.5 313,-246.5 313,-271.5"/>
|
||||
<text text-anchor="middle" x="300" y="-254.9" font-family="Sans" font-size="14.00">0</text>
|
||||
</g>
|
||||
<!-- flag6 -->
|
||||
<!-- flag5 -->
|
||||
<!-- flag4 -->
|
||||
<!-- flag3 -->
|
||||
<!-- flag2 -->
|
||||
<!-- flag1 -->
|
||||
<!-- flag_label -->
|
||||
<g id="node10" class="node"><title>flag_label</title>
|
||||
<text text-anchor="middle" x="53" y="-254.1" font-family="Sans" font-size="16.00">Flags</text>
|
||||
</g>
|
||||
<!-- hash4 -->
|
||||
<g id="node12" class="node"><title>hash4</title>
|
||||
<polygon fill="lightgrey" stroke="lightgrey" stroke-width="1.75" points="334,-221 280,-221 280,-185 334,-185 334,-221"/>
|
||||
<text text-anchor="middle" x="307" y="-198.9" font-family="Sans" font-size="14.00">H4</text>
|
||||
</g>
|
||||
<!-- hash3 -->
|
||||
<!-- hash2 -->
|
||||
<!-- hash1 -->
|
||||
<!-- hash_label -->
|
||||
<g id="node16" class="node"><title>hash_label</title>
|
||||
<text text-anchor="middle" x="53" y="-198.1" font-family="Sans" font-size="16.00">Hashes</text>
|
||||
</g>
|
||||
<!-- hash_label->flag_label -->
|
||||
<!-- matched_filter_label -->
|
||||
<g id="node20" class="node"><title>matched_filter_label</title>
|
||||
<text text-anchor="middle" x="306" y="-69.8" font-family="Sans" font-size="18.00">TXID</text>
|
||||
<text text-anchor="middle" x="306" y="-47.8" font-family="Sans" font-size="18.00">Filter</text>
|
||||
<text text-anchor="middle" x="306" y="-25.8" font-family="Sans" font-size="18.00">Match</text>
|
||||
</g>
|
||||
<!-- matched_filter -->
|
||||
<g id="node24" class="node"><title>matched_filter</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="4" points="333,-134 279,-134 279,-98 333,-98 333,-134"/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="291,-134 279,-122 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="279,-110 291,-98 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="321,-98 333,-110 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="333,-122 321,-134 "/>
|
||||
</g>
|
||||
<!-- matched_filter_label->matched_filter -->
|
||||
<!-- hash_from_list_label -->
|
||||
<g id="node21" class="node"><title>hash_from_list_label</title>
|
||||
<text text-anchor="middle" x="234" y="-69.8" font-family="Sans" font-size="18.00">Hash</text>
|
||||
<text text-anchor="middle" x="234" y="-47.8" font-family="Sans" font-size="18.00">From</text>
|
||||
<text text-anchor="middle" x="234" y="-25.8" font-family="Sans" font-size="18.00">List</text>
|
||||
</g>
|
||||
<!-- hash_from_list -->
|
||||
<g id="node25" class="node"><title>hash_from_list</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="261,-134 207,-134 207,-98 261,-98 261,-134"/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="219,-134 207,-122 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="207,-110 219,-98 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="249,-98 261,-110 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="261,-122 249,-134 "/>
|
||||
<text text-anchor="middle" x="234" y="-110.8" font-family="Sans" font-size="18.00">H1</text>
|
||||
</g>
|
||||
<!-- hash_from_list_label->hash_from_list -->
|
||||
<!-- hash_computed_label -->
|
||||
<g id="node22" class="node"><title>hash_computed_label</title>
|
||||
<text text-anchor="middle" x="163" y="-69.8" font-family="Sans" font-size="18.00">Hash</text>
|
||||
<text text-anchor="middle" x="163" y="-47.8" font-family="Sans" font-size="18.00">Com-</text>
|
||||
<text text-anchor="middle" x="163" y="-25.8" font-family="Sans" font-size="18.00">puted</text>
|
||||
</g>
|
||||
<!-- hash_computed -->
|
||||
<g id="node26" class="node"><title>hash_computed</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="190,-134 136,-134 136,-98 190,-98 190,-134"/>
|
||||
<text text-anchor="middle" x="163" y="-110.8" font-family="Sans" font-size="18.00">H()</text>
|
||||
</g>
|
||||
<!-- hash_computed_label->hash_computed -->
|
||||
<!-- waiting_label -->
|
||||
<g id="node23" class="node"><title>waiting_label</title>
|
||||
<text text-anchor="middle" x="91" y="-69.8" font-family="Sans" font-size="18.00">Wait</text>
|
||||
<text text-anchor="middle" x="91" y="-47.8" font-family="Sans" font-size="18.00">For</text>
|
||||
<text text-anchor="middle" x="91" y="-25.8" font-family="Sans" font-size="18.00">Child</text>
|
||||
</g>
|
||||
<!-- waiting -->
|
||||
<g id="node27" class="node"><title>waiting</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="118,-134 64,-134 64,-98 118,-98 118,-134"/>
|
||||
<text text-anchor="middle" x="91" y="-110.8" font-family="Sans" font-size="18.00">↓</text>
|
||||
</g>
|
||||
<!-- waiting_label->waiting -->
|
||||
<!-- pre_legend_label -->
|
||||
<!-- legend_label -->
|
||||
<!-- pre_legend_label->legend_label -->
|
||||
<!-- legend_label->hash_label -->
|
||||
<!-- root_row -->
|
||||
<g id="node38" class="node"><title>root_row</title>
|
||||
</g>
|
||||
<!-- row1 -->
|
||||
<g id="node39" class="node"><title>row1</title>
|
||||
<text text-anchor="middle" x="818" y="-207.6" font-family="Sans" font-size="16.00">Non-TXID</text>
|
||||
<text text-anchor="middle" x="818" y="-188.6" font-family="Sans" font-size="16.00">Nodes</text>
|
||||
</g>
|
||||
<!-- row1->root_row -->
|
||||
<g id="edge24" class="edge"><title>row1->root_row</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M818,-226.101C818,-227.645 818,-229.209 818,-230.775"/>
|
||||
<polygon fill="black" stroke="black" points="814.5,-230.913 818,-240.913 821.5,-230.913 814.5,-230.913"/>
|
||||
</g>
|
||||
<!-- row2 -->
|
||||
<!-- row2->row1 -->
|
||||
<g id="edge22" class="edge"><title>row2->row1</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M818.674,-144.378C818.542,-155.812 818.393,-168.837 818.268,-179.702"/>
|
||||
<polygon fill="black" stroke="black" points="822.178,-144.066 818.793,-134.026 815.178,-143.986 822.178,-144.066"/>
|
||||
</g>
|
||||
<!-- txid_row -->
|
||||
<g id="node41" class="node"><title>txid_row</title>
|
||||
<text text-anchor="middle" x="830" y="-57.6" font-family="Sans" font-size="16.00">TXID</text>
|
||||
<text text-anchor="middle" x="830" y="-38.6" font-family="Sans" font-size="16.00">Nodes</text>
|
||||
</g>
|
||||
<!-- txid_row->row2 -->
|
||||
<!-- G -->
|
||||
<g id="node45" class="node"><title>G</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="790,-71 736,-71 736,-35 790,-35 790,-71"/>
|
||||
</g>
|
||||
<!-- G2 -->
|
||||
<g id="node52" class="node"><title>G2</title>
|
||||
<polygon fill="lightgrey" stroke="black" stroke-width="1.75" points="759,-134 705,-134 705,-98 759,-98 759,-134"/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="717,-134 705,-122 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="705,-110 717,-98 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="747,-98 759,-110 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="759,-122 747,-134 "/>
|
||||
<text text-anchor="middle" x="732" y="-111.1" font-family="Sans" font-size="16.00">H4</text>
|
||||
</g>
|
||||
<!-- G->G2 -->
|
||||
<g id="edge40" class="edge"><title>G->G2</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M751.972,-71.2222C747.646,-79.5078 742.829,-89.2936 738.986,-97.6005"/>
|
||||
</g>
|
||||
<!-- F -->
|
||||
<g id="node46" class="node"><title>F</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="729,-71 675,-71 675,-35 729,-35 729,-71"/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="687,-71 675,-59 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="675,-47 687,-35 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="717,-35 729,-47 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="729,-59 717,-71 "/>
|
||||
<text text-anchor="middle" x="702" y="-48.1" font-family="Sans" font-size="16.00">H3</text>
|
||||
</g>
|
||||
<!-- EF -->
|
||||
<g id="node53" class="node"><title>EF</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="678,-134 624,-134 624,-98 678,-98 678,-134"/>
|
||||
<text text-anchor="middle" x="651" y="-111.1" font-family="Sans" font-size="16.00">H()</text>
|
||||
</g>
|
||||
<!-- F->EF -->
|
||||
<g id="edge38" class="edge"><title>F->EF</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M678.799,-78.9203C673.653,-85.1878 668.383,-91.7597 663.828,-97.6005"/>
|
||||
<polygon fill="black" stroke="black" points="681.494,-81.1528 685.187,-71.2222 676.107,-76.6826 681.494,-81.1528"/>
|
||||
</g>
|
||||
<!-- E -->
|
||||
<g id="node47" class="node"><title>E</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="4" points="668,-71 614,-71 614,-35 668,-35 668,-71"/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="626,-71 614,-59 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="614,-47 626,-35 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="656,-35 668,-47 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="668,-59 656,-71 "/>
|
||||
<text text-anchor="middle" x="641" y="-48.1" font-family="Sans" font-size="16.00">H2</text>
|
||||
</g>
|
||||
<!-- E->EF -->
|
||||
<g id="edge36" class="edge"><title>E->EF</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M643.274,-81.4411C644.111,-86.9273 645.059,-92.5385 646.012,-97.6005"/>
|
||||
<polygon fill="black" stroke="black" points="646.695,-80.6343 641.83,-71.2222 639.764,-81.6135 646.695,-80.6343"/>
|
||||
</g>
|
||||
<!-- D -->
|
||||
<g id="node48" class="node"><title>D</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="607,-71 553,-71 553,-35 607,-35 607,-71"/>
|
||||
</g>
|
||||
<!-- CD -->
|
||||
<g id="node61" class="node"><title>CD</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="577,-134 523,-134 523,-98 577,-98 577,-134"/>
|
||||
</g>
|
||||
<!-- D->CD -->
|
||||
<g id="edge34" class="edge"><title>D->CD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M569.261,-71.2222C565.066,-79.5078 560.405,-89.2936 556.694,-97.6005"/>
|
||||
</g>
|
||||
<!-- C -->
|
||||
<g id="node49" class="node"><title>C</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="546,-71 492,-71 492,-35 546,-35 546,-71"/>
|
||||
</g>
|
||||
<!-- C->CD -->
|
||||
<g id="edge32" class="edge"><title>C->CD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M525.904,-71.2222C529.733,-79.5078 534.546,-89.2936 538.879,-97.6005"/>
|
||||
</g>
|
||||
<!-- B -->
|
||||
<g id="node50" class="node"><title>B</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="485,-71 431,-71 431,-35 485,-35 485,-71"/>
|
||||
</g>
|
||||
<!-- AB -->
|
||||
<g id="node58" class="node"><title>AB</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="485,-134 431,-134 431,-98 485,-98 485,-134"/>
|
||||
</g>
|
||||
<!-- B->AB -->
|
||||
<g id="edge30" class="edge"><title>B->AB</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M455.938,-71.2222C455.689,-79.5078 455.687,-89.2936 455.933,-97.6005"/>
|
||||
</g>
|
||||
<!-- A -->
|
||||
<g id="node51" class="node"><title>A</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="424,-71 370,-71 370,-35 424,-35 424,-71"/>
|
||||
</g>
|
||||
<!-- A->AB -->
|
||||
<g id="edge28" class="edge"><title>A->AB</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M412.582,-71.2222C420.355,-79.5078 429.829,-89.2936 438.117,-97.6005"/>
|
||||
</g>
|
||||
<!-- G2->G -->
|
||||
<!-- EFG2 -->
|
||||
<g id="node54" class="node"><title>EFG2</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="678,-221 624,-221 624,-185 678,-185 678,-221"/>
|
||||
<text text-anchor="middle" x="651" y="-198.1" font-family="Sans" font-size="16.00">↓</text>
|
||||
</g>
|
||||
<!-- G2->EFG2 -->
|
||||
<g id="edge62" class="edge"><title>G2->EFG2</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M706.255,-141.431C692.947,-155.405 677.188,-172.404 665.898,-184.997"/>
|
||||
<polygon fill="black" stroke="black" points="708.959,-143.668 713.353,-134.026 703.906,-138.824 708.959,-143.668"/>
|
||||
</g>
|
||||
<!-- EF->F -->
|
||||
<g id="edge52" class="edge"><title>EF->F</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M675.098,-89.8891C680.269,-83.6155 685.515,-77.048 689.998,-71.2222"/>
|
||||
<polygon fill="black" stroke="black" points="672.38,-87.6835 668.651,-97.6005 677.75,-92.1733 672.38,-87.6835"/>
|
||||
</g>
|
||||
<!-- EF->E -->
|
||||
<g id="edge50" class="edge"><title>EF->E</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M649.444,-87.3665C648.615,-81.8774 647.645,-76.2713 646.642,-71.2222"/>
|
||||
<polygon fill="black" stroke="black" points="646.02,-88.1634 650.836,-97.6005 652.956,-87.22 646.02,-88.1634"/>
|
||||
</g>
|
||||
<!-- EF->EFG2 -->
|
||||
<g id="edge60" class="edge"><title>EF->EFG2</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M648.879,-144.184C648.644,-157.59 648.73,-173.22 649.137,-184.997"/>
|
||||
<polygon fill="black" stroke="black" points="652.382,-144.112 649.136,-134.026 645.384,-143.935 652.382,-144.112"/>
|
||||
</g>
|
||||
<!-- EFG2->G2 -->
|
||||
<g id="edge70" class="edge"><title>EFG2->G2</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M677.41,-177.594C690.815,-163.625 706.552,-146.625 717.702,-134.026"/>
|
||||
<polygon fill="black" stroke="black" points="674.685,-175.377 670.246,-184.997 679.716,-180.245 674.685,-175.377"/>
|
||||
</g>
|
||||
<!-- EFG2->EF -->
|
||||
<g id="edge68" class="edge"><title>EFG2->EF</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M653.828,-174.842C654.141,-161.439 654.027,-145.808 653.486,-134.026"/>
|
||||
<polygon fill="black" stroke="black" points="650.324,-174.884 653.485,-184.997 657.32,-175.121 650.324,-174.884"/>
|
||||
</g>
|
||||
<!-- ROOT -->
|
||||
<g id="node56" class="node"><title>ROOT</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="628,-277 574,-277 574,-241 628,-241 628,-277"/>
|
||||
<text text-anchor="middle" x="601" y="-254.1" font-family="Sans" font-size="16.00">↓</text>
|
||||
</g>
|
||||
<!-- EFG2->ROOT -->
|
||||
<g id="edge74" class="edge"><title>EFG2->ROOT</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M625.871,-228.632C622.236,-232.676 618.605,-236.786 615.281,-240.622"/>
|
||||
<polygon fill="black" stroke="black" points="628.649,-230.78 632.786,-221.027 623.469,-226.071 628.649,-230.78"/>
|
||||
</g>
|
||||
<!-- ABCD -->
|
||||
<g id="node55" class="node"><title>ABCD</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="577,-221 523,-221 523,-185 577,-185 577,-221"/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="535,-221 523,-209 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="523,-197 535,-185 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="565,-185 577,-197 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="577,-209 565,-221 "/>
|
||||
<text text-anchor="middle" x="550" y="-198.1" font-family="Sans" font-size="16.00">H1</text>
|
||||
</g>
|
||||
<!-- ABCD->ROOT -->
|
||||
<g id="edge72" class="edge"><title>ABCD->ROOT</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M571.101,-228.632C574.759,-232.676 578.541,-236.786 582.136,-240.622"/>
|
||||
<polygon fill="black" stroke="black" points="573.575,-226.148 564.299,-221.027 568.357,-230.814 573.575,-226.148"/>
|
||||
</g>
|
||||
<!-- ABCD->AB -->
|
||||
<!-- ABCD->CD -->
|
||||
<!-- ROOT->EFG2 -->
|
||||
<!-- ROOT->ABCD -->
|
||||
<g id="edge76" class="edge"><title>ROOT->ABCD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M580.312,-232.997C576.653,-228.949 572.86,-224.846 569.241,-221.027"/>
|
||||
<polygon fill="black" stroke="black" points="577.837,-235.48 587.1,-240.622 583.065,-230.826 577.837,-235.48"/>
|
||||
</g>
|
||||
<!-- AB->B -->
|
||||
<!-- AB->A -->
|
||||
<!-- AB->ABCD -->
|
||||
<g id="edge56" class="edge"><title>AB->ABCD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M475.198,-134.026C490.473,-148.958 512.801,-170.072 529.099,-184.997"/>
|
||||
</g>
|
||||
<!-- CD->D -->
|
||||
<!-- CD->C -->
|
||||
<!-- CD->ABCD -->
|
||||
<g id="edge58" class="edge"><title>CD->ABCD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M548.136,-134.026C547.621,-148.958 547.621,-170.072 548.137,-184.997"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 17 KiB |
|
@ -0,0 +1,141 @@
|
|||
digraph merkleblock {
|
||||
|
||||
//size="6.25,2.22";
|
||||
size="6.25";
|
||||
rankdir=BT
|
||||
nodesep=0.1
|
||||
splines="false"
|
||||
|
||||
edge [ penwidth = 1.75, fontname="Sans" ]
|
||||
node [ penwidth = 1.75, shape = "box", fontname="Sans", ]
|
||||
graph [ penwidth = 1.75, fontname="Sans", fontsize = 16 ]
|
||||
|
||||
subgraph cluster_flags {
|
||||
node [ label = "", width=0.2, height=0.2, fontsize = 14, shape = "none" ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
flag8 [ label = "0" ];
|
||||
flag7 [ label = "0", style = "invis" ];
|
||||
flag6 [ label = "0", style = "invis" ];
|
||||
flag5 [ label = "1", style = "invis" ];
|
||||
flag4 [ label = "1", style = "invis" ];
|
||||
flag3 [ label = "1", style = "invis" ];
|
||||
flag2 [ label = "0", style = "invis" ];
|
||||
flag1 [ label = "1", style = "invis" ];
|
||||
flag_label [ label = "Flags", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
subgraph cluster_hashes {
|
||||
graph [ penwidth = 0 ];
|
||||
node [ shape = "none" ];
|
||||
|
||||
hash4 [ label = "H4", style = "invis" ];
|
||||
hash3 [ label = "H3", style = "invis" ];
|
||||
hash2 [ label = "H2", style = "invis" ];
|
||||
hash1 [ label = "H1", style = "invis" ];
|
||||
hash_label [ label = "Hashes", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
hash_label -> flag_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_legend {
|
||||
node [ label = "", fontsize = 18 ];
|
||||
graph [ penwidth = 0 ];
|
||||
edge [ style = "invis" ];
|
||||
ranksep = 3;
|
||||
|
||||
|
||||
{
|
||||
node [ shape = "none" ];
|
||||
matched_filter_label [ label = "TXID\nFilter\nMatch" ];
|
||||
hash_from_list_label [ label = "Hash\nFrom\nList" ];
|
||||
hash_computed_label [ label = "Hash\nCom-\nputed" ];
|
||||
waiting_label [ label = "Wait\nFor\nChild" ];
|
||||
}
|
||||
|
||||
matched_filter [ penwidth = 4, style = "diagonals", bgcolor = grey ];
|
||||
hash_from_list [ label = "H1", style = "diagonals" ];
|
||||
hash_computed [ label = "H()" ];
|
||||
waiting [ label = "↓" ];
|
||||
|
||||
pre_legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
pre_legend_label -> legend_label [ style = "invis" ];
|
||||
|
||||
waiting_label -> waiting;
|
||||
hash_from_list_label -> hash_from_list;
|
||||
hash_computed_label -> hash_computed;
|
||||
matched_filter_label -> matched_filter;
|
||||
|
||||
labelloc = b;
|
||||
label = "Legend"
|
||||
}
|
||||
|
||||
legend_label -> hash_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_tree {
|
||||
edge [ dir = "none" ];
|
||||
node [ label = "", fontsize = 16 ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
{
|
||||
root_row [ shape = "none" ];
|
||||
row1 [ shape = "none", label = "Non-TXID\nNodes" ];
|
||||
row2 [ shape = "none", style = "invis", width = 1.2 ];
|
||||
txid_row [ label = "TXID\nNodes", shape = "none" ];
|
||||
|
||||
row2 -> row1 [ dir = "back" ];
|
||||
row1 -> root_row [ dir = ""];
|
||||
txid_row -> row2 [ style = "invis" ];
|
||||
}
|
||||
|
||||
G;
|
||||
F [ style = "diagonals", label = "H3" ];
|
||||
E [ penwidth = 4, style = "diagonals", label = "H2" ];
|
||||
D;
|
||||
C;
|
||||
B;
|
||||
A;
|
||||
|
||||
G2 [ label = "H4", style = "diagonals" ];
|
||||
EF [ label = "H()" ];
|
||||
EFG2 [ label = "H()", style = "filled" ];
|
||||
ABCD [ style = "diagonals", label = "H1" ];
|
||||
ROOT [ label = "↓" ];
|
||||
|
||||
A -> AB;
|
||||
B -> AB;
|
||||
C -> CD;
|
||||
D -> CD;
|
||||
E -> EF [ dir = "back" ];
|
||||
F -> EF [ dir = "back" ];
|
||||
G -> G2;
|
||||
|
||||
AB -> A [ constraint = false, style = "invis" ];
|
||||
AB -> B [ constraint = false, style = "invis" ];
|
||||
CD -> C [ constraint = false, style = "invis" ];
|
||||
CD -> D [ constraint = false, style = "invis" ];
|
||||
EF -> E [ constraint = false, dir = "back" ];
|
||||
EF -> F [ constraint = false, dir = "back" ];
|
||||
G2 -> G [ constraint = false, style = "invis" ];
|
||||
|
||||
AB -> ABCD;
|
||||
CD -> ABCD;
|
||||
EF -> EFG2 [ dir = "back" ];
|
||||
G2 -> EFG2 [ dir = "back" ];
|
||||
|
||||
ABCD -> AB [ constraint = false, style = "invis" ];
|
||||
ABCD -> CD [ constraint = false, style = "invis" ];
|
||||
EFG2 -> EF [ constraint = false, dir = "back" ];
|
||||
EFG2 -> G2 [ constraint = false, dir = "back" ];
|
||||
|
||||
ABCD -> ROOT [ dir = "back" ];
|
||||
EFG2 -> ROOT [ dir = "back" ];
|
||||
|
||||
ROOT -> ABCD [ constraint = false, dir = "back" ];
|
||||
ROOT -> EFG2 [ constraint = false, dir = "back" ];
|
||||
|
||||
}
|
||||
|
||||
//label = "Parsing A MerkleBlock Message"
|
||||
}
|
|
@ -0,0 +1,141 @@
|
|||
digraph merkleblock {
|
||||
|
||||
//size="6.25,2.22";
|
||||
size="6.25";
|
||||
rankdir=BT
|
||||
nodesep=0.1
|
||||
splines="false"
|
||||
|
||||
edge [ penwidth = 1.75, fontname="Sans" ]
|
||||
node [ penwidth = 1.75, shape = "box", fontname="Sans", ]
|
||||
graph [ penwidth = 1.75, fontname="Sans", fontsize = 16 ]
|
||||
|
||||
subgraph cluster_flags {
|
||||
node [ label = "", width=0.2, height=0.2, fontsize = 14, shape = "none" ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
flag8 [ label = "0" ];
|
||||
flag7 [ label = "0", style = "invis" ];
|
||||
flag6 [ label = "0", style = "invis" ];
|
||||
flag5 [ label = "1", style = "invis" ];
|
||||
flag4 [ label = "1", style = "invis" ];
|
||||
flag3 [ label = "1", style = "invis" ];
|
||||
flag2 [ label = "0", style = "invis" ];
|
||||
flag1 [ label = "1", style = "invis" ];
|
||||
flag_label [ label = "Flags", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
subgraph cluster_hashes {
|
||||
graph [ penwidth = 0 ];
|
||||
node [ shape = "none" ];
|
||||
|
||||
hash4 [ label = "H4", style = "invis" ];
|
||||
hash3 [ label = "H3", style = "invis" ];
|
||||
hash2 [ label = "H2", style = "invis" ];
|
||||
hash1 [ label = "H1", style = "invis" ];
|
||||
hash_label [ label = "Hashes", shape = "none", fontsize = 16 ];
|
||||
}
|
||||
|
||||
hash_label -> flag_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_legend {
|
||||
node [ label = "", fontsize = 18 ];
|
||||
graph [ penwidth = 0 ];
|
||||
edge [ style = "invis" ];
|
||||
ranksep = 3;
|
||||
|
||||
|
||||
{
|
||||
node [ shape = "none" ];
|
||||
matched_filter_label [ label = "TXID\nFilter\nMatch" ];
|
||||
hash_from_list_label [ label = "Hash\nFrom\nList" ];
|
||||
hash_computed_label [ label = "Hash\nCom-\nputed" ];
|
||||
waiting_label [ label = "Wait\nFor\nChild" ];
|
||||
}
|
||||
|
||||
matched_filter [ penwidth = 4, style = "diagonals", bgcolor = grey ];
|
||||
hash_from_list [ label = "H1", style = "diagonals" ];
|
||||
hash_computed [ label = "H()" ];
|
||||
waiting [ label = "↓" ];
|
||||
|
||||
pre_legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
legend_label [ label = "", style = "invis", width=0, height=0 ];
|
||||
pre_legend_label -> legend_label [ style = "invis" ];
|
||||
|
||||
waiting_label -> waiting;
|
||||
hash_from_list_label -> hash_from_list;
|
||||
hash_computed_label -> hash_computed;
|
||||
matched_filter_label -> matched_filter;
|
||||
|
||||
labelloc = b;
|
||||
label = "Legend"
|
||||
}
|
||||
|
||||
legend_label -> hash_label [ style = "invis" ];
|
||||
|
||||
subgraph cluster_tree {
|
||||
edge [ dir = "none" ];
|
||||
node [ label = "", fontsize = 16 ];
|
||||
graph [ penwidth = 0 ];
|
||||
|
||||
{
|
||||
root_row [ shape = "none" ];
|
||||
row1 [ shape = "none", label = "Non-TXID\nNodes" ];
|
||||
row2 [ shape = "none", style = "invis", width = 1.2 ];
|
||||
txid_row [ label = "TXID\nNodes", shape = "none" ];
|
||||
|
||||
row2 -> row1 [ dir = "back" ];
|
||||
row1 -> root_row [ dir = ""];
|
||||
txid_row -> row2 [ style = "invis" ];
|
||||
}
|
||||
|
||||
G;
|
||||
F [ style = "diagonals", label = "H3" ];
|
||||
E [ penwidth = 4, style = "diagonals", label = "H2" ];
|
||||
D;
|
||||
C;
|
||||
B;
|
||||
A;
|
||||
|
||||
G2 [ label = "H4", style = "diagonals" ];
|
||||
EF [ label = "H()", ];
|
||||
EFG2 [ label = "H()" ];
|
||||
ABCD [ style = "diagonals", label = "H1" ];
|
||||
ROOT [ label = "H()", style = "filled" ];
|
||||
|
||||
A -> AB;
|
||||
B -> AB;
|
||||
C -> CD;
|
||||
D -> CD;
|
||||
E -> EF [ dir = "back" ];
|
||||
F -> EF [ dir = "back" ];
|
||||
G -> G2;
|
||||
|
||||
AB -> A [ constraint = false, style = "invis" ];
|
||||
AB -> B [ constraint = false, style = "invis" ];
|
||||
CD -> C [ constraint = false, style = "invis" ];
|
||||
CD -> D [ constraint = false, style = "invis" ];
|
||||
EF -> E [ constraint = false, dir = "back" ];
|
||||
EF -> F [ constraint = false, dir = "back" ];
|
||||
G2 -> G [ constraint = false, style = "invis" ];
|
||||
|
||||
AB -> ABCD;
|
||||
CD -> ABCD;
|
||||
EF -> EFG2 [ dir = "back" ];
|
||||
G2 -> EFG2 [ dir = "back" ];
|
||||
|
||||
ABCD -> AB [ constraint = false, style = "invis" ];
|
||||
ABCD -> CD [ constraint = false, style = "invis" ];
|
||||
EFG2 -> EF [ constraint = false, dir = "back" ];
|
||||
EFG2 -> G2 [ constraint = false, dir = "back" ];
|
||||
|
||||
ABCD -> ROOT [ dir = "back" ];
|
||||
EFG2 -> ROOT [ dir = "back" ];
|
||||
|
||||
ROOT -> ABCD [ constraint = false, dir = "back" ];
|
||||
ROOT -> EFG2 [ constraint = false, dir = "back" ];
|
||||
|
||||
}
|
||||
|
||||
//label = "Parsing A MerkleBlock Message"
|
||||
}
|
After Width: | Height: | Size: 7.1 KiB |
|
@ -0,0 +1,308 @@
|
|||
<?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: merkleblock Pages: 1 -->
|
||||
<svg width="450pt" height="153pt"
|
||||
viewBox="0.00 0.00 450.00 152.71" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g id="graph1" class="graph" transform="scale(0.507328 0.507328) rotate(0) translate(4 297)">
|
||||
<title>merkleblock</title>
|
||||
<polygon fill="white" stroke="white" points="-4,5 -4,-297 884,-297 884,5 -4,5"/>
|
||||
<g id="graph2" class="cluster"><title>cluster_flags</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="0" points="16,-237 16,-281 354,-281 354,-237 16,-237"/>
|
||||
</g>
|
||||
<g id="graph3" class="cluster"><title>cluster_hashes</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="0" points="8,-177 8,-229 342,-229 342,-177 8,-177"/>
|
||||
</g>
|
||||
<g id="graph4" class="cluster"><title>cluster_legend</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="0" points="45,-8 45,-169 349,-169 349,-8 45,-8"/>
|
||||
<text text-anchor="middle" x="197" y="-150.6" font-family="Sans" font-size="16.00">Legend</text>
|
||||
</g>
|
||||
<g id="graph6" class="cluster"><title>cluster_tree</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="0" points="362,-22 362,-285 871,-285 871,-22 362,-22"/>
|
||||
</g>
|
||||
<!-- flag8 -->
|
||||
<g id="node2" class="node"><title>flag8</title>
|
||||
<text text-anchor="middle" x="333" y="-254.9" font-family="Sans" font-size="14.00">0</text>
|
||||
</g>
|
||||
<!-- flag7 -->
|
||||
<!-- flag6 -->
|
||||
<!-- flag5 -->
|
||||
<!-- flag4 -->
|
||||
<!-- flag3 -->
|
||||
<!-- flag2 -->
|
||||
<!-- flag1 -->
|
||||
<!-- flag_label -->
|
||||
<g id="node10" class="node"><title>flag_label</title>
|
||||
<text text-anchor="middle" x="53" y="-254.1" font-family="Sans" font-size="16.00">Flags</text>
|
||||
</g>
|
||||
<!-- hash4 -->
|
||||
<!-- hash3 -->
|
||||
<!-- hash2 -->
|
||||
<!-- hash1 -->
|
||||
<!-- hash_label -->
|
||||
<g id="node16" class="node"><title>hash_label</title>
|
||||
<text text-anchor="middle" x="53" y="-198.1" font-family="Sans" font-size="16.00">Hashes</text>
|
||||
</g>
|
||||
<!-- hash_label->flag_label -->
|
||||
<!-- matched_filter_label -->
|
||||
<g id="node20" class="node"><title>matched_filter_label</title>
|
||||
<text text-anchor="middle" x="306" y="-69.8" font-family="Sans" font-size="18.00">TXID</text>
|
||||
<text text-anchor="middle" x="306" y="-47.8" font-family="Sans" font-size="18.00">Filter</text>
|
||||
<text text-anchor="middle" x="306" y="-25.8" font-family="Sans" font-size="18.00">Match</text>
|
||||
</g>
|
||||
<!-- matched_filter -->
|
||||
<g id="node24" class="node"><title>matched_filter</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="4" points="333,-134 279,-134 279,-98 333,-98 333,-134"/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="291,-134 279,-122 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="279,-110 291,-98 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="321,-98 333,-110 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="333,-122 321,-134 "/>
|
||||
</g>
|
||||
<!-- matched_filter_label->matched_filter -->
|
||||
<!-- hash_from_list_label -->
|
||||
<g id="node21" class="node"><title>hash_from_list_label</title>
|
||||
<text text-anchor="middle" x="234" y="-69.8" font-family="Sans" font-size="18.00">Hash</text>
|
||||
<text text-anchor="middle" x="234" y="-47.8" font-family="Sans" font-size="18.00">From</text>
|
||||
<text text-anchor="middle" x="234" y="-25.8" font-family="Sans" font-size="18.00">List</text>
|
||||
</g>
|
||||
<!-- hash_from_list -->
|
||||
<g id="node25" class="node"><title>hash_from_list</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="261,-134 207,-134 207,-98 261,-98 261,-134"/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="219,-134 207,-122 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="207,-110 219,-98 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="249,-98 261,-110 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="261,-122 249,-134 "/>
|
||||
<text text-anchor="middle" x="234" y="-110.8" font-family="Sans" font-size="18.00">H1</text>
|
||||
</g>
|
||||
<!-- hash_from_list_label->hash_from_list -->
|
||||
<!-- hash_computed_label -->
|
||||
<g id="node22" class="node"><title>hash_computed_label</title>
|
||||
<text text-anchor="middle" x="163" y="-69.8" font-family="Sans" font-size="18.00">Hash</text>
|
||||
<text text-anchor="middle" x="163" y="-47.8" font-family="Sans" font-size="18.00">Com-</text>
|
||||
<text text-anchor="middle" x="163" y="-25.8" font-family="Sans" font-size="18.00">puted</text>
|
||||
</g>
|
||||
<!-- hash_computed -->
|
||||
<g id="node26" class="node"><title>hash_computed</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="190,-134 136,-134 136,-98 190,-98 190,-134"/>
|
||||
<text text-anchor="middle" x="163" y="-110.8" font-family="Sans" font-size="18.00">H()</text>
|
||||
</g>
|
||||
<!-- hash_computed_label->hash_computed -->
|
||||
<!-- waiting_label -->
|
||||
<g id="node23" class="node"><title>waiting_label</title>
|
||||
<text text-anchor="middle" x="91" y="-69.8" font-family="Sans" font-size="18.00">Wait</text>
|
||||
<text text-anchor="middle" x="91" y="-47.8" font-family="Sans" font-size="18.00">For</text>
|
||||
<text text-anchor="middle" x="91" y="-25.8" font-family="Sans" font-size="18.00">Child</text>
|
||||
</g>
|
||||
<!-- waiting -->
|
||||
<g id="node27" class="node"><title>waiting</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="118,-134 64,-134 64,-98 118,-98 118,-134"/>
|
||||
<text text-anchor="middle" x="91" y="-110.8" font-family="Sans" font-size="18.00">↓</text>
|
||||
</g>
|
||||
<!-- waiting_label->waiting -->
|
||||
<!-- pre_legend_label -->
|
||||
<!-- legend_label -->
|
||||
<!-- pre_legend_label->legend_label -->
|
||||
<!-- legend_label->hash_label -->
|
||||
<!-- root_row -->
|
||||
<g id="node38" class="node"><title>root_row</title>
|
||||
</g>
|
||||
<!-- row1 -->
|
||||
<g id="node39" class="node"><title>row1</title>
|
||||
<text text-anchor="middle" x="818" y="-207.6" font-family="Sans" font-size="16.00">Non-TXID</text>
|
||||
<text text-anchor="middle" x="818" y="-188.6" font-family="Sans" font-size="16.00">Nodes</text>
|
||||
</g>
|
||||
<!-- row1->root_row -->
|
||||
<g id="edge24" class="edge"><title>row1->root_row</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M818,-226.101C818,-227.645 818,-229.209 818,-230.775"/>
|
||||
<polygon fill="black" stroke="black" points="814.5,-230.913 818,-240.913 821.5,-230.913 814.5,-230.913"/>
|
||||
</g>
|
||||
<!-- row2 -->
|
||||
<!-- row2->row1 -->
|
||||
<g id="edge22" class="edge"><title>row2->row1</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M818.674,-144.378C818.542,-155.812 818.393,-168.837 818.268,-179.702"/>
|
||||
<polygon fill="black" stroke="black" points="822.178,-144.066 818.793,-134.026 815.178,-143.986 822.178,-144.066"/>
|
||||
</g>
|
||||
<!-- txid_row -->
|
||||
<g id="node41" class="node"><title>txid_row</title>
|
||||
<text text-anchor="middle" x="830" y="-57.6" font-family="Sans" font-size="16.00">TXID</text>
|
||||
<text text-anchor="middle" x="830" y="-38.6" font-family="Sans" font-size="16.00">Nodes</text>
|
||||
</g>
|
||||
<!-- txid_row->row2 -->
|
||||
<!-- G -->
|
||||
<g id="node45" class="node"><title>G</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="790,-71 736,-71 736,-35 790,-35 790,-71"/>
|
||||
</g>
|
||||
<!-- G2 -->
|
||||
<g id="node52" class="node"><title>G2</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="759,-134 705,-134 705,-98 759,-98 759,-134"/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="717,-134 705,-122 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="705,-110 717,-98 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="747,-98 759,-110 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="759,-122 747,-134 "/>
|
||||
<text text-anchor="middle" x="732" y="-111.1" font-family="Sans" font-size="16.00">H4</text>
|
||||
</g>
|
||||
<!-- G->G2 -->
|
||||
<g id="edge40" class="edge"><title>G->G2</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M751.972,-71.2222C747.646,-79.5078 742.829,-89.2936 738.986,-97.6005"/>
|
||||
</g>
|
||||
<!-- F -->
|
||||
<g id="node46" class="node"><title>F</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="729,-71 675,-71 675,-35 729,-35 729,-71"/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="687,-71 675,-59 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="675,-47 687,-35 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="717,-35 729,-47 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="729,-59 717,-71 "/>
|
||||
<text text-anchor="middle" x="702" y="-48.1" font-family="Sans" font-size="16.00">H3</text>
|
||||
</g>
|
||||
<!-- EF -->
|
||||
<g id="node53" class="node"><title>EF</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="678,-134 624,-134 624,-98 678,-98 678,-134"/>
|
||||
<text text-anchor="middle" x="651" y="-111.1" font-family="Sans" font-size="16.00">H()</text>
|
||||
</g>
|
||||
<!-- F->EF -->
|
||||
<g id="edge38" class="edge"><title>F->EF</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M678.799,-78.9203C673.653,-85.1878 668.383,-91.7597 663.828,-97.6005"/>
|
||||
<polygon fill="black" stroke="black" points="681.494,-81.1528 685.187,-71.2222 676.107,-76.6826 681.494,-81.1528"/>
|
||||
</g>
|
||||
<!-- E -->
|
||||
<g id="node47" class="node"><title>E</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="4" points="668,-71 614,-71 614,-35 668,-35 668,-71"/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="626,-71 614,-59 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="614,-47 626,-35 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="656,-35 668,-47 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="4" points="668,-59 656,-71 "/>
|
||||
<text text-anchor="middle" x="641" y="-48.1" font-family="Sans" font-size="16.00">H2</text>
|
||||
</g>
|
||||
<!-- E->EF -->
|
||||
<g id="edge36" class="edge"><title>E->EF</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M643.274,-81.4411C644.111,-86.9273 645.059,-92.5385 646.012,-97.6005"/>
|
||||
<polygon fill="black" stroke="black" points="646.695,-80.6343 641.83,-71.2222 639.764,-81.6135 646.695,-80.6343"/>
|
||||
</g>
|
||||
<!-- D -->
|
||||
<g id="node48" class="node"><title>D</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="607,-71 553,-71 553,-35 607,-35 607,-71"/>
|
||||
</g>
|
||||
<!-- CD -->
|
||||
<g id="node61" class="node"><title>CD</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="577,-134 523,-134 523,-98 577,-98 577,-134"/>
|
||||
</g>
|
||||
<!-- D->CD -->
|
||||
<g id="edge34" class="edge"><title>D->CD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M569.261,-71.2222C565.066,-79.5078 560.405,-89.2936 556.694,-97.6005"/>
|
||||
</g>
|
||||
<!-- C -->
|
||||
<g id="node49" class="node"><title>C</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="546,-71 492,-71 492,-35 546,-35 546,-71"/>
|
||||
</g>
|
||||
<!-- C->CD -->
|
||||
<g id="edge32" class="edge"><title>C->CD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M525.904,-71.2222C529.733,-79.5078 534.546,-89.2936 538.879,-97.6005"/>
|
||||
</g>
|
||||
<!-- B -->
|
||||
<g id="node50" class="node"><title>B</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="485,-71 431,-71 431,-35 485,-35 485,-71"/>
|
||||
</g>
|
||||
<!-- AB -->
|
||||
<g id="node58" class="node"><title>AB</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="485,-134 431,-134 431,-98 485,-98 485,-134"/>
|
||||
</g>
|
||||
<!-- B->AB -->
|
||||
<g id="edge30" class="edge"><title>B->AB</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M455.938,-71.2222C455.689,-79.5078 455.687,-89.2936 455.933,-97.6005"/>
|
||||
</g>
|
||||
<!-- A -->
|
||||
<g id="node51" class="node"><title>A</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="424,-71 370,-71 370,-35 424,-35 424,-71"/>
|
||||
</g>
|
||||
<!-- A->AB -->
|
||||
<g id="edge28" class="edge"><title>A->AB</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M412.582,-71.2222C420.355,-79.5078 429.829,-89.2936 438.117,-97.6005"/>
|
||||
</g>
|
||||
<!-- G2->G -->
|
||||
<!-- EFG2 -->
|
||||
<g id="node54" class="node"><title>EFG2</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="678,-221 624,-221 624,-185 678,-185 678,-221"/>
|
||||
<text text-anchor="middle" x="651" y="-198.1" font-family="Sans" font-size="16.00">H()</text>
|
||||
</g>
|
||||
<!-- G2->EFG2 -->
|
||||
<g id="edge62" class="edge"><title>G2->EFG2</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M706.255,-141.431C692.947,-155.405 677.188,-172.404 665.898,-184.997"/>
|
||||
<polygon fill="black" stroke="black" points="708.959,-143.668 713.353,-134.026 703.906,-138.824 708.959,-143.668"/>
|
||||
</g>
|
||||
<!-- EF->F -->
|
||||
<g id="edge52" class="edge"><title>EF->F</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M675.098,-89.8891C680.269,-83.6155 685.515,-77.048 689.998,-71.2222"/>
|
||||
<polygon fill="black" stroke="black" points="672.38,-87.6835 668.651,-97.6005 677.75,-92.1733 672.38,-87.6835"/>
|
||||
</g>
|
||||
<!-- EF->E -->
|
||||
<g id="edge50" class="edge"><title>EF->E</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M649.444,-87.3665C648.615,-81.8774 647.645,-76.2713 646.642,-71.2222"/>
|
||||
<polygon fill="black" stroke="black" points="646.02,-88.1634 650.836,-97.6005 652.956,-87.22 646.02,-88.1634"/>
|
||||
</g>
|
||||
<!-- EF->EFG2 -->
|
||||
<g id="edge60" class="edge"><title>EF->EFG2</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M648.879,-144.184C648.644,-157.59 648.73,-173.22 649.137,-184.997"/>
|
||||
<polygon fill="black" stroke="black" points="652.382,-144.112 649.136,-134.026 645.384,-143.935 652.382,-144.112"/>
|
||||
</g>
|
||||
<!-- EFG2->G2 -->
|
||||
<g id="edge70" class="edge"><title>EFG2->G2</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M677.41,-177.594C690.815,-163.625 706.552,-146.625 717.702,-134.026"/>
|
||||
<polygon fill="black" stroke="black" points="674.685,-175.377 670.246,-184.997 679.716,-180.245 674.685,-175.377"/>
|
||||
</g>
|
||||
<!-- EFG2->EF -->
|
||||
<g id="edge68" class="edge"><title>EFG2->EF</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M653.828,-174.842C654.141,-161.439 654.027,-145.808 653.486,-134.026"/>
|
||||
<polygon fill="black" stroke="black" points="650.324,-174.884 653.485,-184.997 657.32,-175.121 650.324,-174.884"/>
|
||||
</g>
|
||||
<!-- ROOT -->
|
||||
<g id="node56" class="node"><title>ROOT</title>
|
||||
<polygon fill="lightgrey" stroke="black" stroke-width="1.75" points="628,-277 574,-277 574,-241 628,-241 628,-277"/>
|
||||
<text text-anchor="middle" x="601" y="-254.1" font-family="Sans" font-size="16.00">H()</text>
|
||||
</g>
|
||||
<!-- EFG2->ROOT -->
|
||||
<g id="edge74" class="edge"><title>EFG2->ROOT</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M625.871,-228.632C622.236,-232.676 618.605,-236.786 615.281,-240.622"/>
|
||||
<polygon fill="black" stroke="black" points="628.649,-230.78 632.786,-221.027 623.469,-226.071 628.649,-230.78"/>
|
||||
</g>
|
||||
<!-- ABCD -->
|
||||
<g id="node55" class="node"><title>ABCD</title>
|
||||
<polygon fill="none" stroke="black" stroke-width="1.75" points="577,-221 523,-221 523,-185 577,-185 577,-221"/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="535,-221 523,-209 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="523,-197 535,-185 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="565,-185 577,-197 "/>
|
||||
<polyline fill="none" stroke="black" stroke-width="1.75" points="577,-209 565,-221 "/>
|
||||
<text text-anchor="middle" x="550" y="-198.1" font-family="Sans" font-size="16.00">H1</text>
|
||||
</g>
|
||||
<!-- ABCD->ROOT -->
|
||||
<g id="edge72" class="edge"><title>ABCD->ROOT</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M571.101,-228.632C574.759,-232.676 578.541,-236.786 582.136,-240.622"/>
|
||||
<polygon fill="black" stroke="black" points="573.575,-226.148 564.299,-221.027 568.357,-230.814 573.575,-226.148"/>
|
||||
</g>
|
||||
<!-- ABCD->AB -->
|
||||
<!-- ABCD->CD -->
|
||||
<!-- ROOT->EFG2 -->
|
||||
<g id="edge78" class="edge"><title>ROOT->EFG2</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M627.21,-232.997C630.852,-228.949 634.459,-224.846 637.728,-221.027"/>
|
||||
<polygon fill="black" stroke="black" points="624.405,-230.878 620.245,-240.622 629.574,-235.599 624.405,-230.878"/>
|
||||
</g>
|
||||
<!-- ROOT->ABCD -->
|
||||
<g id="edge76" class="edge"><title>ROOT->ABCD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M580.312,-232.997C576.653,-228.949 572.86,-224.846 569.241,-221.027"/>
|
||||
<polygon fill="black" stroke="black" points="577.837,-235.48 587.1,-240.622 583.065,-230.826 577.837,-235.48"/>
|
||||
</g>
|
||||
<!-- AB->B -->
|
||||
<!-- AB->A -->
|
||||
<!-- AB->ABCD -->
|
||||
<g id="edge56" class="edge"><title>AB->ABCD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M475.198,-134.026C490.473,-148.958 512.801,-170.072 529.099,-184.997"/>
|
||||
</g>
|
||||
<!-- CD->D -->
|
||||
<!-- CD->C -->
|
||||
<!-- CD->ABCD -->
|
||||
<g id="edge58" class="edge"><title>CD->ABCD</title>
|
||||
<path fill="none" stroke="black" stroke-width="1.75" d="M548.136,-134.026C547.621,-148.958 547.621,-170.072 548.137,-184.997"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 17 KiB |