[Content] - P2P - Compact block addition (#64)

* content - Add compact block inventory

* content - p2p - Compact Block messages
 - Start adding `blocktxn`, `cmpctblock`, `getblocktxn`, and `sendcmpct`
messages
  - blocktxn and getblocktxn description and format added
  - Placeholders for cmpctblock and sendcmpct

* content - p2p - Sendcmpct message
 - Add details of `sendcmpct` including hex dump

* content - p2p - CmpctBlock message
 - Add hexdump
 - Update description

* content - Minor formatting updates

* content - p2p - Update control and data message drawings
 - Add compact block related commands

* content - p2p - Update compact block messages
 - Add info about protocol version when implemented
 - Add info to cmpctblock

* content - p2p - Update compact block messages
 - Add some info from bitcoin-dot-org/bitcoin.org#2092
  - Add detail to cmpctblock, sendcmpct, getblocktxn, blocktxn messages
  - Add reference terms

* content - p2p - Comment out blocktxn and getblocktxn hexdump for now

Closes #59
This commit is contained in:
thephez 2018-04-24 10:53:32 -04:00 committed by GitHub
parent 7b8e5ed5ea
commit 2304a52d4f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 391 additions and 102 deletions

View file

@ -22,6 +22,8 @@ sendheaders;
ERROR [ style = "invis" ];
ERROR -> reject [ style = "invis" ];
sendcmpct;
label = " \nOverview Of P2P Protocol Control And Advisory Messages"
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 8.3 KiB

Before After
Before After

View file

@ -4,94 +4,99 @@
<!-- Generated by graphviz version 2.38.0 (20140413.2041)
-->
<!-- Title: %3 Pages: 1 -->
<svg width="450pt" height="97pt"
viewBox="0.00 0.00 450.00 96.70" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(0.690714 0.690714) rotate(0) translate(4 136)">
<svg width="450pt" height="86pt"
viewBox="0.00 0.00 450.00 86.07" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(0.614754 0.614754) rotate(0) translate(4 136)">
<title>%3</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-136 647.5,-136 647.5,4 -4,4"/>
<text text-anchor="middle" x="321.75" y="-22.8" font-family="Sans" font-size="14.00"> </text>
<text text-anchor="middle" x="321.75" y="-7.8" font-family="Sans" font-size="14.00">Overview Of P2P Protocol Control And Advisory Messages</text>
<polygon fill="white" stroke="none" points="-4,4 -4,-136 728,-136 728,4 -4,4"/>
<text text-anchor="middle" x="362" y="-22.8" font-family="Sans" font-size="14.00"> </text>
<text text-anchor="middle" x="362" y="-7.8" font-family="Sans" font-size="14.00">Overview Of P2P Protocol Control And Advisory Messages</text>
<!-- version -->
<g id="node1" class="node"><title>version</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="71,-132 0,-132 0,-96 71,-96 71,-132"/>
<text text-anchor="middle" x="35.5" y="-110.3" font-family="Sans" font-size="14.00">version</text>
<polygon fill="none" stroke="black" stroke-width="1.75" points="67,-132 0,-132 0,-96 67,-96 67,-132"/>
<text text-anchor="middle" x="33.5" y="-110.3" font-family="Sans" font-size="14.00">version</text>
</g>
<!-- verack -->
<g id="node2" class="node"><title>verack</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="68,-74 3,-74 3,-38 68,-38 68,-74"/>
<text text-anchor="middle" x="35.5" y="-52.3" font-family="Sans" font-size="14.00">verack</text>
<polygon fill="none" stroke="black" stroke-width="1.75" points="64.5,-74 2.5,-74 2.5,-38 64.5,-38 64.5,-74"/>
<text text-anchor="middle" x="33.5" y="-52.3" font-family="Sans" font-size="14.00">verack</text>
</g>
<!-- version&#45;&gt;verack -->
<g id="edge1" class="edge"><title>version&#45;&gt;verack</title>
<path fill="none" stroke="black" stroke-width="1.75" d="M35.5,-95.8939C35.5,-88.9462 35.5,-80.9383 35.5,-74.0014"/>
<path fill="none" stroke="black" stroke-width="1.75" d="M33.5,-95.8939C33.5,-88.9462 33.5,-80.9383 33.5,-74.0014"/>
</g>
<!-- ping -->
<g id="node3" class="node"><title>ping</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="139.5,-132 85.5,-132 85.5,-96 139.5,-96 139.5,-132"/>
<text text-anchor="middle" x="112.5" y="-110.3" font-family="Sans" font-size="14.00">ping</text>
<polygon fill="none" stroke="black" stroke-width="1.75" points="135.5,-132 81.5,-132 81.5,-96 135.5,-96 135.5,-132"/>
<text text-anchor="middle" x="108.5" y="-110.3" font-family="Sans" font-size="14.00">ping</text>
</g>
<!-- pong -->
<g id="node4" class="node"><title>pong</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="139.5,-74 85.5,-74 85.5,-38 139.5,-38 139.5,-74"/>
<text text-anchor="middle" x="112.5" y="-52.3" font-family="Sans" font-size="14.00">pong</text>
<polygon fill="none" stroke="black" stroke-width="1.75" points="135.5,-74 81.5,-74 81.5,-38 135.5,-38 135.5,-74"/>
<text text-anchor="middle" x="108.5" y="-52.3" font-family="Sans" font-size="14.00">pong</text>
</g>
<!-- ping&#45;&gt;pong -->
<g id="edge2" class="edge"><title>ping&#45;&gt;pong</title>
<path fill="none" stroke="black" stroke-width="1.75" d="M112.5,-95.8939C112.5,-88.9462 112.5,-80.9383 112.5,-74.0014"/>
<path fill="none" stroke="black" stroke-width="1.75" d="M108.5,-95.8939C108.5,-88.9462 108.5,-80.9383 108.5,-74.0014"/>
</g>
<!-- getaddr -->
<g id="node5" class="node"><title>getaddr</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="227.5,-132 153.5,-132 153.5,-96 227.5,-96 227.5,-132"/>
<text text-anchor="middle" x="190.5" y="-110.3" font-family="Sans" font-size="14.00">getaddr</text>
<polygon fill="none" stroke="black" stroke-width="1.75" points="219.5,-132 149.5,-132 149.5,-96 219.5,-96 219.5,-132"/>
<text text-anchor="middle" x="184.5" y="-110.3" font-family="Sans" font-size="14.00">getaddr</text>
</g>
<!-- addr -->
<g id="node6" class="node"><title>addr</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="217.5,-74 163.5,-74 163.5,-38 217.5,-38 217.5,-74"/>
<text text-anchor="middle" x="190.5" y="-52.3" font-family="Sans" font-size="14.00">addr</text>
<polygon fill="none" stroke="black" stroke-width="1.75" points="211.5,-74 157.5,-74 157.5,-38 211.5,-38 211.5,-74"/>
<text text-anchor="middle" x="184.5" y="-52.3" font-family="Sans" font-size="14.00">addr</text>
</g>
<!-- getaddr&#45;&gt;addr -->
<g id="edge3" class="edge"><title>getaddr&#45;&gt;addr</title>
<path fill="none" stroke="black" stroke-width="1.75" d="M190.5,-95.8939C190.5,-88.9462 190.5,-80.9383 190.5,-74.0014"/>
<path fill="none" stroke="black" stroke-width="1.75" d="M184.5,-95.8939C184.5,-88.9462 184.5,-80.9383 184.5,-74.0014"/>
</g>
<!-- filterload -->
<g id="node7" class="node"><title>filterload</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="371,-132 288,-132 288,-96 371,-96 371,-132"/>
<text text-anchor="middle" x="329.5" y="-110.3" font-family="Sans" font-size="14.00">filterload</text>
<polygon fill="none" stroke="black" stroke-width="1.75" points="354,-132 277,-132 277,-96 354,-96 354,-132"/>
<text text-anchor="middle" x="315.5" y="-110.3" font-family="Sans" font-size="14.00">filterload</text>
</g>
<!-- filteradd -->
<g id="node8" class="node"><title>filteradd</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="317,-74 238,-74 238,-38 317,-38 317,-74"/>
<text text-anchor="middle" x="277.5" y="-52.3" font-family="Sans" font-size="14.00">filteradd</text>
<polygon fill="none" stroke="black" stroke-width="1.75" points="304.5,-74 230.5,-74 230.5,-38 304.5,-38 304.5,-74"/>
<text text-anchor="middle" x="267.5" y="-52.3" font-family="Sans" font-size="14.00">filteradd</text>
</g>
<!-- filterload&#45;&gt;filteradd -->
<g id="edge4" class="edge"><title>filterload&#45;&gt;filteradd</title>
<path fill="none" stroke="black" stroke-width="1.75" d="M313.616,-95.8939C307.164,-88.9462 299.728,-80.9383 293.287,-74.0014"/>
<path fill="none" stroke="black" stroke-width="1.75" d="M300.838,-95.8939C294.882,-88.9462 288.019,-80.9383 282.073,-74.0014"/>
</g>
<!-- filterclear -->
<g id="node9" class="node"><title>filterclear</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="420,-74 331,-74 331,-38 420,-38 420,-74"/>
<text text-anchor="middle" x="375.5" y="-52.3" font-family="Sans" font-size="14.00">filterclear</text>
<polygon fill="none" stroke="black" stroke-width="1.75" points="400.5,-74 318.5,-74 318.5,-38 400.5,-38 400.5,-74"/>
<text text-anchor="middle" x="359.5" y="-52.3" font-family="Sans" font-size="14.00">filterclear</text>
</g>
<!-- filterload&#45;&gt;filterclear -->
<g id="edge5" class="edge"><title>filterload&#45;&gt;filterclear</title>
<path fill="none" stroke="black" stroke-width="1.75" d="M343.551,-95.8939C349.258,-88.9462 355.836,-80.9383 361.535,-74.0014"/>
<path fill="none" stroke="black" stroke-width="1.75" d="M328.941,-95.8939C334.399,-88.9462 340.691,-80.9383 346.142,-74.0014"/>
</g>
<!-- alert -->
<g id="node10" class="node"><title>alert</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="439.5,-132 385.5,-132 385.5,-96 439.5,-96 439.5,-132"/>
<text text-anchor="middle" x="412.5" y="-110.3" font-family="Sans" font-size="14.00">alert</text>
<polygon fill="none" stroke="black" stroke-width="1.75" points="422.5,-132 368.5,-132 368.5,-96 422.5,-96 422.5,-132"/>
<text text-anchor="middle" x="395.5" y="-110.3" font-family="Sans" font-size="14.00">alert</text>
</g>
<!-- sendheaders -->
<g id="node11" class="node"><title>sendheaders</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="563.5,-132 453.5,-132 453.5,-96 563.5,-96 563.5,-132"/>
<text text-anchor="middle" x="508.5" y="-110.3" font-family="Sans" font-size="14.00">sendheaders</text>
<polygon fill="none" stroke="black" stroke-width="1.75" points="540.5,-132 436.5,-132 436.5,-96 540.5,-96 540.5,-132"/>
<text text-anchor="middle" x="488.5" y="-110.3" font-family="Sans" font-size="14.00">sendheaders</text>
</g>
<!-- ERROR -->
<!-- reject -->
<g id="node13" class="node"><title>reject</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="640,-74 581,-74 581,-38 640,-38 640,-74"/>
<text text-anchor="middle" x="610.5" y="-52.3" font-family="Sans" font-size="14.00">reject</text>
<polygon fill="none" stroke="black" stroke-width="1.75" points="615.5,-74 559.5,-74 559.5,-38 615.5,-38 615.5,-74"/>
<text text-anchor="middle" x="587.5" y="-52.3" font-family="Sans" font-size="14.00">reject</text>
</g>
<!-- ERROR&#45;&gt;reject -->
<!-- sendcmpct -->
<g id="node14" class="node"><title>sendcmpct</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="724,-132 635,-132 635,-96 724,-96 724,-132"/>
<text text-anchor="middle" x="679.5" y="-110.3" font-family="Sans" font-size="14.00">sendcmpct</text>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

Before After
Before After

View file

@ -10,6 +10,8 @@ edge [ penwidth = 1.75, fontname="Sans", dir="none" ]
node [ penwidth = 1.75, shape = "box", fontname="Sans", ]
graph [ penwidth = 1.75, fontname="Sans" ]
getblocktxn -> blocktxn [ minlen = 3 ];
getblocks -> inv;
mempool -> inv;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Before After
Before After

View file

@ -1,117 +1,131 @@
<?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)
<!-- Generated by graphviz version 2.38.0 (20140413.2041)
-->
<!-- 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>
<!-- Title: %3 Pages: 1 -->
<svg width="450pt" height="234pt"
viewBox="0.00 0.00 450.00 234.49" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(0.758853 0.758853) rotate(0) translate(4 305)">
<title>%3</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-305 589,-305 589,4 -4,4"/>
<text text-anchor="middle" x="292.5" y="-7.8" font-family="Sans" font-size="14.00">Overview Of P2P Protocol Data Request And Reply Messages</text>
<!-- getblocktxn -->
<g id="node1" class="node"><title>getblocktxn</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="124,-59 26,-59 26,-23 124,-23 124,-59"/>
<text text-anchor="middle" x="75" y="-37.3" font-family="Sans" font-size="14.00">getblocktxn</text>
</g>
<!-- blocktxn -->
<g id="node2" class="node"><title>blocktxn</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="559,-59 484,-59 484,-23 559,-23 559,-59"/>
<text text-anchor="middle" x="521.5" y="-37.3" font-family="Sans" font-size="14.00">blocktxn</text>
</g>
<!-- getblocktxn&#45;&gt;blocktxn -->
<g id="edge1" class="edge"><title>getblocktxn&#45;&gt;blocktxn</title>
<path fill="none" stroke="black" stroke-width="1.75" d="M124.061,-41C213.997,-41 403.414,-41 483.967,-41"/>
</g>
<!-- 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 id="node3" class="node"><title>getblocks</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="115.5,-179 34.5,-179 34.5,-143 115.5,-143 115.5,-179"/>
<text text-anchor="middle" x="75" y="-157.3" 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 id="node4" class="node"><title>inv</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="231,-159 177,-159 177,-123 231,-123 231,-159"/>
<text text-anchor="middle" x="204" y="-137.3" font-family="Sans" font-size="14.00">inv</text>
</g>
<!-- getblocks&#45;&gt;inv -->
<g id="edge2" class="edge"><title>getblocks&#45;&gt;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"/>
<path fill="none" stroke="black" stroke-width="1.75" d="M115.835,-154.727C135.767,-151.588 159.329,-147.877 176.927,-145.106"/>
</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 id="node6" class="node"><title>getdata</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="389,-159 319,-159 319,-123 389,-123 389,-159"/>
<text text-anchor="middle" x="354" y="-137.3" font-family="Sans" font-size="14.00">getdata</text>
</g>
<!-- inv&#45;&gt;getdata -->
<g id="edge6" class="edge"><title>inv&#45;&gt;getdata</title>
<path fill="none" stroke="black" stroke-width="1.75" d="M233.164,-103C257.732,-103 294.053,-103 320.831,-103"/>
<g id="edge4" class="edge"><title>inv&#45;&gt;getdata</title>
<path fill="none" stroke="black" stroke-width="1.75" d="M231.119,-141C255.516,-141 292.082,-141 318.797,-141"/>
</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 id="node5" class="node"><title>mempool</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="114.5,-139 35.5,-139 35.5,-103 114.5,-103 114.5,-139"/>
<text text-anchor="middle" x="75" y="-117.3" font-family="Sans" font-size="14.00">mempool</text>
</g>
<!-- mempool&#45;&gt;inv -->
<g id="edge4" class="edge"><title>mempool&#45;&gt;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 id="edge3" class="edge"><title>mempool&#45;&gt;inv</title>
<path fill="none" stroke="black" stroke-width="1.75" d="M114.794,-127.109C134.927,-130.28 158.986,-134.069 176.888,-136.888"/>
</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 id="node7" class="node"><title>tx</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="548.5,-219 494.5,-219 494.5,-183 548.5,-183 548.5,-219"/>
<text text-anchor="middle" x="521.5" y="-197.3" font-family="Sans" font-size="14.00">tx</text>
</g>
<!-- getdata&#45;&gt;tx -->
<g id="edge8" class="edge"><title>getdata&#45;&gt;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 id="edge5" class="edge"><title>getdata&#45;&gt;tx</title>
<path fill="none" stroke="black" stroke-width="1.75" d="M389.292,-153.432C420.536,-164.759 466.011,-181.246 494.393,-191.535"/>
</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 id="node8" class="node"><title>block</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="548.5,-179 494.5,-179 494.5,-143 548.5,-143 548.5,-179"/>
<text text-anchor="middle" x="521.5" y="-157.3" font-family="Sans" font-size="14.00">block</text>
</g>
<!-- getdata&#45;&gt;block -->
<g id="edge10" class="edge"><title>getdata&#45;&gt;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 id="edge6" class="edge"><title>getdata&#45;&gt;block</title>
<path fill="none" stroke="black" stroke-width="1.75" d="M389.292,-145.144C420.536,-148.92 466.011,-154.415 494.393,-157.845"/>
</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 id="node9" class="node"><title>merkleblock</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="571,-139 472,-139 472,-103 571,-103 571,-139"/>
<text text-anchor="middle" x="521.5" y="-117.3" font-family="Sans" font-size="14.00">merkleblock</text>
</g>
<!-- getdata&#45;&gt;merkleblock -->
<g id="edge12" class="edge"><title>getdata&#45;&gt;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 id="edge7" class="edge"><title>getdata&#45;&gt;merkleblock</title>
<path fill="none" stroke="black" stroke-width="1.75" d="M389.292,-136.856C413.151,-133.973 445.309,-130.087 471.816,-126.883"/>
</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 id="node10" class="node"><title>notfound</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="561,-99 482,-99 482,-63 561,-63 561,-99"/>
<text text-anchor="middle" x="521.5" y="-77.3" font-family="Sans" font-size="14.00">notfound</text>
</g>
<!-- getdata&#45;&gt;notfound -->
<g id="edge14" class="edge"><title>getdata&#45;&gt;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 id="edge8" class="edge"><title>getdata&#45;&gt;notfound</title>
<path fill="none" stroke="black" stroke-width="1.75" d="M389.292,-128.568C416.275,-118.785 453.873,-105.155 481.908,-94.991"/>
</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 id="node11" class="node"><title>getheaders</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="122,-259 28,-259 28,-223 122,-223 122,-259"/>
<text text-anchor="middle" x="75" y="-237.3" 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 id="node12" class="node"><title>headers</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="557,-259 486,-259 486,-223 557,-223 557,-259"/>
<text text-anchor="middle" x="521.5" y="-237.3" font-family="Sans" font-size="14.00">headers</text>
</g>
<!-- getheaders&#45;&gt;headers -->
<g id="edge16" class="edge"><title>getheaders&#45;&gt;headers</title>
<path fill="none" stroke="black" stroke-width="1.75" d="M123.097,-203C213.183,-203 408.074,-203 488.344,-203"/>
<g id="edge9" class="edge"><title>getheaders&#45;&gt;headers</title>
<path fill="none" stroke="black" stroke-width="1.75" d="M122.361,-241C212.248,-241 405.736,-241 485.746,-241"/>
</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 id="node13" class="node"><title>label1</title>
<text text-anchor="middle" x="75" y="-285.8" font-family="Sans" font-size="14.00">Request For Help</text>
<text text-anchor="middle" x="75" y="-270.8" 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 id="node14" class="node"><title>label2</title>
<text text-anchor="middle" x="204" y="-285.8" font-family="Sans" font-size="14.00">Reply With</text>
<text text-anchor="middle" x="204" y="-270.8" font-family="Sans" font-size="14.00">Inventory</text>
</g>
<!-- label1&#45;&gt;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 id="node15" class="node"><title>label3</title>
<text text-anchor="middle" x="354" y="-278.3" font-family="Sans" font-size="14.00">Request For Specific Data</text>
</g>
<!-- label2&#45;&gt;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 id="node16" class="node"><title>label4</title>
<text text-anchor="middle" x="521.5" y="-285.8" font-family="Sans" font-size="14.00">Reply With</text>
<text text-anchor="middle" x="521.5" y="-270.8" font-family="Sans" font-size="14.00">Requested Data</text>
</g>
<!-- label3&#45;&gt;label4 -->
</g>

Before

Width:  |  Height:  |  Size: 6.3 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

Before After
Before After