Dev Docs: Describe Serialized Block Header And Block Format

* Replace current description of the block header with a better
description.

    * Describe the various version numbers.

    * Describe how the merkle root is constructed.

    * Describe how nBits is parsed and how to correctly create it to
      avoid negative values.

* Describe the serialized block format used to calculate max block size.
This commit is contained in:
David A. Harding 2014-11-06 21:45:12 -05:00
parent 1863fad011
commit a8f8f750c8
No known key found for this signature in database
GPG key ID: 4B29C30FF29EC4B7
13 changed files with 872 additions and 82 deletions

View file

@ -0,0 +1,42 @@
digraph {
size=6.25;
rankdir=TB
//splines = ortho;
ranksep = 0.2;
nodesep = 0.3;
edge [ penwidth = 1.75, fontname="Sans" ]
node [ penwidth = 1.75, shape = "box", fontname="Sans", ]
graph [ penwidth = 1.75, fontname="Sans" ]
{
node [ shape = "none" ];
txids [ label = "Row 1: Transaction hashes (TXIDs)\n(A is coinbase; C can spend output from B)" ];
row2 [ label = "Row 2: Hashes of paired TXIDs" ];
rootrow [ label = "Merkle root" ];
txids -> row2 -> rootrow [ style = "invis" ];
}
txid_a [ label = "A" ];
txid_b [ label = "B" ];
txid_invis [ label = "C", style = "invis" ];
txid_c [ label = "C" ];
row2_ab [ label = "H(A|B)" ];
row2_cc [ label = "H(C|C)" ];
root [ label = "H(H(A|B)|H(C|C))" ];
txid_a -> row2_ab [ weight = 1 ];
txid_b -> row2_ab [ weight = 1 ];
txid_c -> row2_cc;
txid_invis -> row2_cc [ style = "invis" ];
row2_ab -> root;
row2_cc -> root;
label = "\n Example Merkle Tree Construction [Hash function H() = SHA256(SHA256())]"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 6 KiB

View file

@ -0,0 +1,86 @@
<?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="138pt"
viewBox="0.00 0.00 450.00 138.18" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph1" class="graph" transform="scale(0.723473 0.723473) rotate(0) translate(4 187)">
<title>_anonymous_0</title>
<polygon fill="white" stroke="white" points="-4,5 -4,-187 619,-187 619,5 -4,5"/>
<text text-anchor="middle" x="307" y="-8.4" font-family="Sans" font-size="14.00"> Example Merkle Tree Construction &#160;[Hash function H() = SHA256(SHA256())]</text>
<!-- txids -->
<g id="node2" class="node"><title>txids</title>
<text text-anchor="middle" x="154" y="-166.4" font-family="Sans" font-size="14.00">Row 1: Transaction hashes (TXIDs)</text>
<text text-anchor="middle" x="154" y="-149.4" font-family="Sans" font-size="14.00">(A is coinbase; C can spend output from B)</text>
</g>
<!-- row2 -->
<g id="node3" class="node"><title>row2</title>
<text text-anchor="middle" x="154" y="-104.9" font-family="Sans" font-size="14.00">Row 2: Hashes of paired TXIDs</text>
</g>
<!-- txids&#45;&gt;row2 -->
<!-- rootrow -->
<g id="node4" class="node"><title>rootrow</title>
<text text-anchor="middle" x="154" y="-54.9" font-family="Sans" font-size="14.00">Merkle root</text>
</g>
<!-- row2&#45;&gt;rootrow -->
<!-- txid_a -->
<g id="node6" class="node"><title>txid_a</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="384,-180 330,-180 330,-144 384,-144 384,-180"/>
<text text-anchor="middle" x="357" y="-157.9" font-family="Sans" font-size="14.00">A</text>
</g>
<!-- row2_ab -->
<g id="node10" class="node"><title>row2_ab</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="462,-127 400,-127 400,-91 462,-91 462,-127"/>
<text text-anchor="middle" x="431" y="-104.9" font-family="Sans" font-size="14.00">H(A|B)</text>
</g>
<!-- txid_a&#45;&gt;row2_ab -->
<g id="edge6" class="edge"><title>txid_a&#45;&gt;row2_ab</title>
<path fill="none" stroke="black" stroke-width="1.75" d="M382.467,-143.76C387.288,-140.308 392.399,-136.647 397.425,-133.047"/>
<polygon fill="black" stroke="black" points="399.645,-135.762 405.737,-127.094 395.569,-130.071 399.645,-135.762"/>
</g>
<!-- txid_b -->
<g id="node7" class="node"><title>txid_b</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="460,-180 406,-180 406,-144 460,-144 460,-180"/>
<text text-anchor="middle" x="433" y="-157.9" font-family="Sans" font-size="14.00">B</text>
</g>
<!-- txid_b&#45;&gt;row2_ab -->
<g id="edge8" class="edge"><title>txid_b&#45;&gt;row2_ab</title>
<path fill="none" stroke="black" stroke-width="1.75" d="M432.312,-143.76C432.232,-141.655 432.15,-139.472 432.067,-137.273"/>
<polygon fill="black" stroke="black" points="435.557,-136.955 431.683,-127.094 428.562,-137.219 435.557,-136.955"/>
</g>
<!-- txid_invis -->
<!-- row2_cc -->
<g id="node11" class="node"><title>row2_cc</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="546,-127 484,-127 484,-91 546,-91 546,-127"/>
<text text-anchor="middle" x="515" y="-104.9" font-family="Sans" font-size="14.00">H(C|C)</text>
</g>
<!-- txid_invis&#45;&gt;row2_cc -->
<!-- txid_c -->
<g id="node9" class="node"><title>txid_c</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="614,-180 560,-180 560,-144 614,-144 614,-180"/>
<text text-anchor="middle" x="587" y="-157.9" font-family="Sans" font-size="14.00">C</text>
</g>
<!-- txid_c&#45;&gt;row2_cc -->
<g id="edge10" class="edge"><title>txid_c&#45;&gt;row2_cc</title>
<path fill="none" stroke="black" stroke-width="1.75" d="M562.222,-143.76C557.531,-140.308 552.558,-136.647 547.668,-133.047"/>
<polygon fill="black" stroke="black" points="549.708,-130.203 539.58,-127.094 545.559,-135.841 549.708,-130.203"/>
</g>
<!-- root -->
<g id="node12" class="node"><title>root</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="539,-77 407,-77 407,-41 539,-41 539,-77"/>
<text text-anchor="middle" x="473" y="-54.9" font-family="Sans" font-size="14.00">H(H(A|B)|H(C|C))</text>
</g>
<!-- row2_ab&#45;&gt;root -->
<g id="edge14" class="edge"><title>row2_ab&#45;&gt;root</title>
<path fill="none" stroke="black" stroke-width="1.75" d="M446.163,-90.9489C447.808,-88.9908 449.504,-86.9709 451.208,-84.9428"/>
<polygon fill="black" stroke="black" points="453.966,-87.1008 457.718,-77.1926 448.606,-82.5985 453.966,-87.1008"/>
</g>
<!-- row2_cc&#45;&gt;root -->
<g id="edge16" class="edge"><title>row2_cc&#45;&gt;root</title>
<path fill="none" stroke="black" stroke-width="1.75" d="M499.837,-90.9489C498.192,-88.9908 496.496,-86.9709 494.792,-84.9428"/>
<polygon fill="black" stroke="black" points="497.394,-82.5985 488.282,-77.1926 492.034,-87.1008 497.394,-82.5985"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.8 KiB

View file

@ -0,0 +1,29 @@
digraph {
size=6.25;
rankdir=TB
//splines = ortho;
ranksep = 0.0;
nodesep = 0.0;
edge [ penwidth = 1.75, fontname="Sans" ]
node [ penwidth = 1.75, shape = "none", fontname="Sans", width = 0, height = 0]
graph [ penwidth = 0, fontname="Sans" ]
nbits [ label = "0x181bc330 → \n \nnBits In\nBig-Endian\nOrder" ];
significand [ label = "0x1bc330\n \nSignificand\n(Mantissa)\n " ];
times [ label = "*\n \n \n \n " ];
base [ label = "256\n \nBase\n \n " ];
exp [ label = "^\n \n \n \n " ];
exponent [ label = "(0x18\n \nExponent\n \n " ];
minus [ label = "-\n \n \n \n " ];
negative [ label = "3)\n \nBytes\nIn\nSignificand" ];
base -> result [ style = "invis" ];
result [ label = "Result: 0x1bc330000000000000000000000000000000000000000000 " ];
label = "Converting nBits Into A Target Threshold"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

View file

@ -0,0 +1,83 @@
<?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="136pt"
viewBox="0.00 0.00 450.00 135.93" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph1" class="graph" transform="scale(0.844278 0.844278) rotate(0) translate(4 157)">
<title>_anonymous_0</title>
<polygon fill="white" stroke="white" points="-4,5 -4,-157 530,-157 530,5 -4,5"/>
<text text-anchor="middle" x="262.5" y="-8.4" font-family="Sans" font-size="14.00">Converting nBits Into A Target Threshold</text>
<!-- nbits -->
<g id="node1" class="node"><title>nbits</title>
<text text-anchor="middle" x="62" y="-135.9" font-family="Sans" font-size="14.00">0x181bc330 → </text>
<text text-anchor="middle" x="62" y="-118.9" font-family="Sans" font-size="14.00"> </text>
<text text-anchor="middle" x="62" y="-101.9" font-family="Sans" font-size="14.00">nBits In</text>
<text text-anchor="middle" x="62" y="-84.9" font-family="Sans" font-size="14.00">Big&#45;Endian</text>
<text text-anchor="middle" x="62" y="-67.9" font-family="Sans" font-size="14.00">Order</text>
</g>
<!-- significand -->
<g id="node2" class="node"><title>significand</title>
<text text-anchor="middle" x="170" y="-135.9" font-family="Sans" font-size="14.00">0x1bc330</text>
<text text-anchor="middle" x="170" y="-118.9" font-family="Sans" font-size="14.00"> </text>
<text text-anchor="middle" x="170" y="-101.9" font-family="Sans" font-size="14.00">Significand</text>
<text text-anchor="middle" x="170" y="-84.9" font-family="Sans" font-size="14.00">(Mantissa)</text>
<text text-anchor="middle" x="170" y="-67.9" font-family="Sans" font-size="14.00"> </text>
</g>
<!-- times -->
<g id="node3" class="node"><title>times</title>
<text text-anchor="middle" x="228" y="-135.9" font-family="Sans" font-size="14.00">*</text>
<text text-anchor="middle" x="228" y="-118.9" font-family="Sans" font-size="14.00"> </text>
<text text-anchor="middle" x="228" y="-101.9" font-family="Sans" font-size="14.00"> </text>
<text text-anchor="middle" x="228" y="-84.9" font-family="Sans" font-size="14.00"> </text>
<text text-anchor="middle" x="228" y="-67.9" font-family="Sans" font-size="14.00"> </text>
</g>
<!-- base -->
<g id="node4" class="node"><title>base</title>
<text text-anchor="middle" x="266" y="-135.9" font-family="Sans" font-size="14.00">256</text>
<text text-anchor="middle" x="266" y="-118.9" font-family="Sans" font-size="14.00"> </text>
<text text-anchor="middle" x="266" y="-101.9" font-family="Sans" font-size="14.00">Base</text>
<text text-anchor="middle" x="266" y="-84.9" font-family="Sans" font-size="14.00"> </text>
<text text-anchor="middle" x="266" y="-67.9" font-family="Sans" font-size="14.00"> </text>
</g>
<!-- result -->
<g id="node10" class="node"><title>result</title>
<text text-anchor="middle" x="266" y="-33.9" font-family="Sans" font-size="14.00">Result: 0x1bc330000000000000000000000000000000000000000000 </text>
</g>
<!-- base&#45;&gt;result -->
<!-- exp -->
<g id="node5" class="node"><title>exp</title>
<text text-anchor="middle" x="306" y="-135.9" font-family="Sans" font-size="14.00">^</text>
<text text-anchor="middle" x="306" y="-118.9" font-family="Sans" font-size="14.00"> </text>
<text text-anchor="middle" x="306" y="-101.9" font-family="Sans" font-size="14.00"> </text>
<text text-anchor="middle" x="306" y="-84.9" font-family="Sans" font-size="14.00"> </text>
<text text-anchor="middle" x="306" y="-67.9" font-family="Sans" font-size="14.00"> </text>
</g>
<!-- exponent -->
<g id="node6" class="node"><title>exponent</title>
<text text-anchor="middle" x="362" y="-135.9" font-family="Sans" font-size="14.00">(0x18</text>
<text text-anchor="middle" x="362" y="-118.9" font-family="Sans" font-size="14.00"> </text>
<text text-anchor="middle" x="362" y="-101.9" font-family="Sans" font-size="14.00">Exponent</text>
<text text-anchor="middle" x="362" y="-84.9" font-family="Sans" font-size="14.00"> </text>
<text text-anchor="middle" x="362" y="-67.9" font-family="Sans" font-size="14.00"> </text>
</g>
<!-- minus -->
<g id="node7" class="node"><title>minus</title>
<text text-anchor="middle" x="415" y="-135.9" font-family="Sans" font-size="14.00">&#45;</text>
<text text-anchor="middle" x="415" y="-118.9" font-family="Sans" font-size="14.00"> </text>
<text text-anchor="middle" x="415" y="-101.9" font-family="Sans" font-size="14.00"> </text>
<text text-anchor="middle" x="415" y="-84.9" font-family="Sans" font-size="14.00"> </text>
<text text-anchor="middle" x="415" y="-67.9" font-family="Sans" font-size="14.00"> </text>
</g>
<!-- negative -->
<g id="node8" class="node"><title>negative</title>
<text text-anchor="middle" x="472" y="-135.9" font-family="Sans" font-size="14.00">3)</text>
<text text-anchor="middle" x="472" y="-118.9" font-family="Sans" font-size="14.00"> </text>
<text text-anchor="middle" x="472" y="-101.9" font-family="Sans" font-size="14.00">Bytes</text>
<text text-anchor="middle" x="472" y="-84.9" font-family="Sans" font-size="14.00">In</text>
<text text-anchor="middle" x="472" y="-67.9" font-family="Sans" font-size="14.00">Significand</text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.2 KiB

View file

@ -0,0 +1,122 @@
digraph {
size=6.25;
rankdir=TB
//splines = ortho;
ranksep = 0.0;
nodesep = 0.0;
edge [ penwidth = 1.75, fontname="Sans", style = "invis" ]
node [ penwidth = 1.75, shape = "box", fontname="Sans", fontsize = 60, width = 1.3, height = 1.3 ]
graph [ penwidth = 0, fontname="Sans", fontsize = 60 ]
byte_length [ label = "Byte Length: 0x18 (Decimal 24)", shape = "none" ]
subgraph cluster_n {
node [ label = "0" ];
n24;
n23;
n22;
n21;
n20;
n19;
n18;
n17;
n16;
n15;
n14;
n13;
n12;
n11;
n10;
n9;
n8;
n7;
n6;
n5;
n4;
n1 [ label = "" ];
n2 [ label = "" ];
n3 [ label = "" ];
}
subgraph cluster_l {
node [ shape = "none" ];
l1 [ label = "1" ];
l2 [ label = "2" ];
l3 [ label = "3" ];
l4 [ label = "4" ];
l5 [ label = "5" ];
l6 [ label = "6" ];
l7 [ label = "7" ];
l8 [ label = "8" ];
l9 [ label = "9" ];
l10 [ label = "10" ];
l11 [ label = "11" ];
l12 [ label = "12" ];
l13 [ label = "13" ];
l14 [ label = "14" ];
l15 [ label = "15" ];
l16 [ label = "16" ];
l17 [ label = "17" ];
l18 [ label = "18" ];
l19 [ label = "19" ];
l20 [ label = "20" ];
l21 [ label = "21" ];
l22 [ label = "22" ];
l23 [ label = "23" ];
l24 [ label = "24" ];
}
l1 -> n1;
l2 -> n2;
l3 -> n3;
l4 -> n4;
l5 -> n5;
l6 -> n6;
l7 -> n7;
l8 -> n8;
l9 -> n9;
l10 -> n10;
l11 -> n11;
l12 -> n12;
l13 -> n13;
l14 -> n14;
l15 -> n15;
l16 -> n16;
l17 -> n17;
l18 -> n18;
l19 -> n19;
l20 -> n20;
l21 -> n21;
l22 -> n22;
l23 -> n23;
l24 -> n24;
subgraph cluster_s {
node [ shape = "none" ];
edge [ style = "", dir="back", arrowsize = 3, minlen = 4 ];
significand [ label = "Most Significant Bytes (Significand)" ];
s3 [ label = "30" ];
s2 [ label = "c3" ];
s1 [ label = "1b" ];
n1 -> s1;
n2 -> s2;
n3 -> s3;
}
byte_length -> l19;
label = " \nQuickly Converting nBits 0x181bc330 Into The Target\nThreshold 0x1bc330000000000000000000000000000000"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

View file

@ -0,0 +1,298 @@
<?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="138pt"
viewBox="0.00 0.00 450.00 138.16" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph1" class="graph" transform="scale(0.194049 0.194049) rotate(0) translate(4 708)">
<title>_anonymous_0</title>
<polygon fill="white" stroke="white" points="-4,5 -4,-708 2316,-708 2316,5 -4,5"/>
<text text-anchor="middle" x="1155.5" y="-160" font-family="Sans" font-size="60.00"> </text>
<text text-anchor="middle" x="1155.5" y="-90" font-family="Sans" font-size="60.00">Quickly Converting nBits 0x181bc330 Into The Target</text>
<text text-anchor="middle" x="1155.5" y="-20" font-family="Sans" font-size="60.00">Threshold 0x1bc330000000000000000000000000000000</text>
<g id="graph2" class="cluster"><title>cluster_n</title>
<polygon fill="none" stroke="black" stroke-width="0" points="8,-374 8,-484 2303,-484 2303,-374 8,-374"/>
</g>
<g id="graph3" class="cluster"><title>cluster_l</title>
<polygon fill="none" stroke="black" stroke-width="0" points="8,-492 8,-602 2303,-602 2303,-492 8,-492"/>
</g>
<g id="graph4" class="cluster"><title>cluster_s</title>
<polygon fill="none" stroke="black" stroke-width="0" points="8,-226 8,-336 1387,-336 1387,-226 8,-226"/>
</g>
<!-- byte_length -->
<g id="node1" class="node"><title>byte_length</title>
<text text-anchor="middle" x="1773" y="-638" font-family="Sans" font-size="60.00">Byte Length: 0x18 (Decimal 24)</text>
</g>
<!-- l19 -->
<g id="node46" class="node"><title>l19</title>
<text text-anchor="middle" x="1773" y="-528" font-family="Sans" font-size="60.00">19</text>
</g>
<!-- byte_length&#45;&gt;l19 -->
<!-- n24 -->
<g id="node3" class="node"><title>n24</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="2295,-476 2201,-476 2201,-382 2295,-382 2295,-476"/>
<text text-anchor="middle" x="2248" y="-410" font-family="Sans" font-size="60.00">0</text>
</g>
<!-- n23 -->
<g id="node4" class="node"><title>n23</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="2200,-476 2106,-476 2106,-382 2200,-382 2200,-476"/>
<text text-anchor="middle" x="2153" y="-410" font-family="Sans" font-size="60.00">0</text>
</g>
<!-- n22 -->
<g id="node5" class="node"><title>n22</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="2105,-476 2011,-476 2011,-382 2105,-382 2105,-476"/>
<text text-anchor="middle" x="2058" y="-410" font-family="Sans" font-size="60.00">0</text>
</g>
<!-- n21 -->
<g id="node6" class="node"><title>n21</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="2010,-476 1916,-476 1916,-382 2010,-382 2010,-476"/>
<text text-anchor="middle" x="1963" y="-410" font-family="Sans" font-size="60.00">0</text>
</g>
<!-- n20 -->
<g id="node7" class="node"><title>n20</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="1915,-476 1821,-476 1821,-382 1915,-382 1915,-476"/>
<text text-anchor="middle" x="1868" y="-410" font-family="Sans" font-size="60.00">0</text>
</g>
<!-- n19 -->
<g id="node8" class="node"><title>n19</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="1820,-476 1726,-476 1726,-382 1820,-382 1820,-476"/>
<text text-anchor="middle" x="1773" y="-410" font-family="Sans" font-size="60.00">0</text>
</g>
<!-- n18 -->
<g id="node9" class="node"><title>n18</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="1725,-476 1631,-476 1631,-382 1725,-382 1725,-476"/>
<text text-anchor="middle" x="1678" y="-410" font-family="Sans" font-size="60.00">0</text>
</g>
<!-- n17 -->
<g id="node10" class="node"><title>n17</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="1630,-476 1536,-476 1536,-382 1630,-382 1630,-476"/>
<text text-anchor="middle" x="1583" y="-410" font-family="Sans" font-size="60.00">0</text>
</g>
<!-- n16 -->
<g id="node11" class="node"><title>n16</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="1535,-476 1441,-476 1441,-382 1535,-382 1535,-476"/>
<text text-anchor="middle" x="1488" y="-410" font-family="Sans" font-size="60.00">0</text>
</g>
<!-- n15 -->
<g id="node12" class="node"><title>n15</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="1440,-476 1346,-476 1346,-382 1440,-382 1440,-476"/>
<text text-anchor="middle" x="1393" y="-410" font-family="Sans" font-size="60.00">0</text>
</g>
<!-- n14 -->
<g id="node13" class="node"><title>n14</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="1345,-476 1251,-476 1251,-382 1345,-382 1345,-476"/>
<text text-anchor="middle" x="1298" y="-410" font-family="Sans" font-size="60.00">0</text>
</g>
<!-- n13 -->
<g id="node14" class="node"><title>n13</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="1250,-476 1156,-476 1156,-382 1250,-382 1250,-476"/>
<text text-anchor="middle" x="1203" y="-410" font-family="Sans" font-size="60.00">0</text>
</g>
<!-- n12 -->
<g id="node15" class="node"><title>n12</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="1155,-476 1061,-476 1061,-382 1155,-382 1155,-476"/>
<text text-anchor="middle" x="1108" y="-410" font-family="Sans" font-size="60.00">0</text>
</g>
<!-- n11 -->
<g id="node16" class="node"><title>n11</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="1060,-476 966,-476 966,-382 1060,-382 1060,-476"/>
<text text-anchor="middle" x="1013" y="-410" font-family="Sans" font-size="60.00">0</text>
</g>
<!-- n10 -->
<g id="node17" class="node"><title>n10</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="965,-476 871,-476 871,-382 965,-382 965,-476"/>
<text text-anchor="middle" x="918" y="-410" font-family="Sans" font-size="60.00">0</text>
</g>
<!-- n9 -->
<g id="node18" class="node"><title>n9</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="870,-476 776,-476 776,-382 870,-382 870,-476"/>
<text text-anchor="middle" x="823" y="-410" font-family="Sans" font-size="60.00">0</text>
</g>
<!-- n8 -->
<g id="node19" class="node"><title>n8</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="775,-476 681,-476 681,-382 775,-382 775,-476"/>
<text text-anchor="middle" x="728" y="-410" font-family="Sans" font-size="60.00">0</text>
</g>
<!-- n7 -->
<g id="node20" class="node"><title>n7</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="680,-476 586,-476 586,-382 680,-382 680,-476"/>
<text text-anchor="middle" x="633" y="-410" font-family="Sans" font-size="60.00">0</text>
</g>
<!-- n6 -->
<g id="node21" class="node"><title>n6</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="585,-476 491,-476 491,-382 585,-382 585,-476"/>
<text text-anchor="middle" x="538" y="-410" font-family="Sans" font-size="60.00">0</text>
</g>
<!-- n5 -->
<g id="node22" class="node"><title>n5</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="490,-476 396,-476 396,-382 490,-382 490,-476"/>
<text text-anchor="middle" x="443" y="-410" font-family="Sans" font-size="60.00">0</text>
</g>
<!-- n4 -->
<g id="node23" class="node"><title>n4</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="395,-476 301,-476 301,-382 395,-382 395,-476"/>
<text text-anchor="middle" x="348" y="-410" font-family="Sans" font-size="60.00">0</text>
</g>
<!-- n1 -->
<g id="node24" class="node"><title>n1</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="110,-476 16,-476 16,-382 110,-382 110,-476"/>
</g>
<!-- s1 -->
<g id="node80" class="node"><title>s1</title>
<text text-anchor="middle" x="63" y="-262" font-family="Sans" font-size="60.00">1b</text>
</g>
<!-- n1&#45;&gt;s1 -->
<g id="edge53" class="edge"><title>n1&#45;&gt;s1</title>
<path fill="none" stroke="black" stroke-width="1.75" d="M63,-351.47C63,-343.48 63,-335.546 63,-328.04"/>
<polygon fill="black" stroke="black" points="52.5001,-351.765 63,-381.765 73.5001,-351.765 52.5001,-351.765"/>
</g>
<!-- n2 -->
<g id="node25" class="node"><title>n2</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="205,-476 111,-476 111,-382 205,-382 205,-476"/>
</g>
<!-- s2 -->
<g id="node79" class="node"><title>s2</title>
<text text-anchor="middle" x="158" y="-262" font-family="Sans" font-size="60.00">c3</text>
</g>
<!-- n2&#45;&gt;s2 -->
<g id="edge55" class="edge"><title>n2&#45;&gt;s2</title>
<path fill="none" stroke="black" stroke-width="1.75" d="M158,-351.47C158,-343.48 158,-335.546 158,-328.04"/>
<polygon fill="black" stroke="black" points="147.5,-351.765 158,-381.765 168.5,-351.765 147.5,-351.765"/>
</g>
<!-- n3 -->
<g id="node26" class="node"><title>n3</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="300,-476 206,-476 206,-382 300,-382 300,-476"/>
</g>
<!-- s3 -->
<g id="node78" class="node"><title>s3</title>
<text text-anchor="middle" x="253" y="-262" font-family="Sans" font-size="60.00">30</text>
</g>
<!-- n3&#45;&gt;s3 -->
<g id="edge57" class="edge"><title>n3&#45;&gt;s3</title>
<path fill="none" stroke="black" stroke-width="1.75" d="M253,-351.47C253,-343.48 253,-335.546 253,-328.04"/>
<polygon fill="black" stroke="black" points="242.5,-351.765 253,-381.765 263.5,-351.765 242.5,-351.765"/>
</g>
<!-- l1 -->
<g id="node28" class="node"><title>l1</title>
<text text-anchor="middle" x="63" y="-528" font-family="Sans" font-size="60.00">1</text>
</g>
<!-- l1&#45;&gt;n1 -->
<!-- l2 -->
<g id="node29" class="node"><title>l2</title>
<text text-anchor="middle" x="158" y="-528" font-family="Sans" font-size="60.00">2</text>
</g>
<!-- l2&#45;&gt;n2 -->
<!-- l3 -->
<g id="node30" class="node"><title>l3</title>
<text text-anchor="middle" x="253" y="-528" font-family="Sans" font-size="60.00">3</text>
</g>
<!-- l3&#45;&gt;n3 -->
<!-- l4 -->
<g id="node31" class="node"><title>l4</title>
<text text-anchor="middle" x="348" y="-528" font-family="Sans" font-size="60.00">4</text>
</g>
<!-- l4&#45;&gt;n4 -->
<!-- l5 -->
<g id="node32" class="node"><title>l5</title>
<text text-anchor="middle" x="443" y="-528" font-family="Sans" font-size="60.00">5</text>
</g>
<!-- l5&#45;&gt;n5 -->
<!-- l6 -->
<g id="node33" class="node"><title>l6</title>
<text text-anchor="middle" x="538" y="-528" font-family="Sans" font-size="60.00">6</text>
</g>
<!-- l6&#45;&gt;n6 -->
<!-- l7 -->
<g id="node34" class="node"><title>l7</title>
<text text-anchor="middle" x="633" y="-528" font-family="Sans" font-size="60.00">7</text>
</g>
<!-- l7&#45;&gt;n7 -->
<!-- l8 -->
<g id="node35" class="node"><title>l8</title>
<text text-anchor="middle" x="728" y="-528" font-family="Sans" font-size="60.00">8</text>
</g>
<!-- l8&#45;&gt;n8 -->
<!-- l9 -->
<g id="node36" class="node"><title>l9</title>
<text text-anchor="middle" x="823" y="-528" font-family="Sans" font-size="60.00">9</text>
</g>
<!-- l9&#45;&gt;n9 -->
<!-- l10 -->
<g id="node37" class="node"><title>l10</title>
<text text-anchor="middle" x="918" y="-528" font-family="Sans" font-size="60.00">10</text>
</g>
<!-- l10&#45;&gt;n10 -->
<!-- l11 -->
<g id="node38" class="node"><title>l11</title>
<text text-anchor="middle" x="1013" y="-528" font-family="Sans" font-size="60.00">11</text>
</g>
<!-- l11&#45;&gt;n11 -->
<!-- l12 -->
<g id="node39" class="node"><title>l12</title>
<text text-anchor="middle" x="1108" y="-528" font-family="Sans" font-size="60.00">12</text>
</g>
<!-- l12&#45;&gt;n12 -->
<!-- l13 -->
<g id="node40" class="node"><title>l13</title>
<text text-anchor="middle" x="1203" y="-528" font-family="Sans" font-size="60.00">13</text>
</g>
<!-- l13&#45;&gt;n13 -->
<!-- l14 -->
<g id="node41" class="node"><title>l14</title>
<text text-anchor="middle" x="1298" y="-528" font-family="Sans" font-size="60.00">14</text>
</g>
<!-- l14&#45;&gt;n14 -->
<!-- l15 -->
<g id="node42" class="node"><title>l15</title>
<text text-anchor="middle" x="1393" y="-528" font-family="Sans" font-size="60.00">15</text>
</g>
<!-- l15&#45;&gt;n15 -->
<!-- l16 -->
<g id="node43" class="node"><title>l16</title>
<text text-anchor="middle" x="1488" y="-528" font-family="Sans" font-size="60.00">16</text>
</g>
<!-- l16&#45;&gt;n16 -->
<!-- l17 -->
<g id="node44" class="node"><title>l17</title>
<text text-anchor="middle" x="1583" y="-528" font-family="Sans" font-size="60.00">17</text>
</g>
<!-- l17&#45;&gt;n17 -->
<!-- l18 -->
<g id="node45" class="node"><title>l18</title>
<text text-anchor="middle" x="1678" y="-528" font-family="Sans" font-size="60.00">18</text>
</g>
<!-- l18&#45;&gt;n18 -->
<!-- l19&#45;&gt;n19 -->
<!-- l20 -->
<g id="node47" class="node"><title>l20</title>
<text text-anchor="middle" x="1868" y="-528" font-family="Sans" font-size="60.00">20</text>
</g>
<!-- l20&#45;&gt;n20 -->
<!-- l21 -->
<g id="node48" class="node"><title>l21</title>
<text text-anchor="middle" x="1963" y="-528" font-family="Sans" font-size="60.00">21</text>
</g>
<!-- l21&#45;&gt;n21 -->
<!-- l22 -->
<g id="node49" class="node"><title>l22</title>
<text text-anchor="middle" x="2058" y="-528" font-family="Sans" font-size="60.00">22</text>
</g>
<!-- l22&#45;&gt;n22 -->
<!-- l23 -->
<g id="node50" class="node"><title>l23</title>
<text text-anchor="middle" x="2153" y="-528" font-family="Sans" font-size="60.00">23</text>
</g>
<!-- l23&#45;&gt;n23 -->
<!-- l24 -->
<g id="node51" class="node"><title>l24</title>
<text text-anchor="middle" x="2248" y="-528" font-family="Sans" font-size="60.00">24</text>
</g>
<!-- l24&#45;&gt;n24 -->
<!-- significand -->
<g id="node77" class="node"><title>significand</title>
<text text-anchor="middle" x="840" y="-262" font-family="Sans" font-size="60.00">Most Significant Bytes (Significand)</text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 14 KiB