Merge Pull #657: Dev Docs: Describe Filterload Message (Final P2P Message To Document)

This commit is contained in:
David A. Harding 2014-11-28 19:30:20 -05:00
commit 464272eeb0
No known key found for this signature in database
GPG key ID: 4B29C30FF29EC4B7
8 changed files with 714 additions and 18 deletions

View file

@ -0,0 +1,72 @@
digraph {
size="6.25";
rankdir=TB;
nodesep=1.05;
ranksep=0.2;
splines="false"
edge [ penwidth = 1.75, fontname="Sans" ]
node [ penwidth = 1.75, shape = "box", fontname="Sans", ]
graph [ penwidth = 1.75, fontname="Sans" ]
subgraph cluster_client {
graph [ penwidth = 0 ];
subgraph cluster_client1 {
graph [ penwidth = 0 ];
address [ label = "Address To Match" ];
filter1 [ label = "Filter That\n\ \ Matches Address\ \ ", style = "diagonals" ];
mymatch1 [ label = "Transaction 1", style = "invis" ];
mymatch2 [ label = "Transaction 2", style = "invis" ];
address -> filter1;
filter1 -> mymatch1 [ style = "invis" ];
mymatch1 -> mymatch2 [ style = "invis" ];
}
label = "Client"
}
filter1 -> filter2 [ constraint = false ];
subgraph cluster_node {
graph [ penwidth = 0 ];
subgraph cluster_node2 {
graph [ penwidth = 0 ];
tx2 [ label = "Transaction 2" ];
filter3 [ label = "Filter Updated\n\ \ \ \ With Outpoint \ ", style = "diagonals" ];
match2 [ label = "Transaction 2\nSpends Outpoint", shape = "none" ];
tx2 -> filter3;
filter3 -> match2 [ minlen = 2 ];
}
subgraph cluster_node1 {
graph [ penwidth = 0 ];
tx1 [ label = "Transaction 1" ];
filter2 [ label = "Filter That\n\ \ Matches Address\ \ ", style = "diagonals" ];
match1 [ label = "Transaction 1\nPays Address", shape = "none" ]
tx1 -> filter2;
filter2 -> match1;
}
match1 -> mymatch1 [ constraint = false ];
filter2 -> filter3 [constraint = false ];
match1 -> filter3 [ constraint = false ];
match2 -> mymatch2 [ constraint = false ];
label = "Full Node"
}
label = "Automatically Updating Bloom Filters To Track Relevant Transactions"
}

BIN
img/dev/en-bloom-update.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

140
img/dev/en-bloom-update.svg Normal file
View file

@ -0,0 +1,140 @@
<?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="216pt"
viewBox="0.00 0.00 450.00 216.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph1" class="graph" transform="scale(0.692308 0.692308) rotate(0) translate(4 308)">
<title>_anonymous_0</title>
<polygon fill="white" stroke="white" points="-4,5 -4,-308 647,-308 647,5 -4,5"/>
<text text-anchor="middle" x="321" y="-8.4" font-family="Sans" font-size="14.00">Automatically Updating Bloom Filters To Track Relevant Transactions</text>
<g id="graph2" class="cluster"><title>cluster_client</title>
<polygon fill="none" stroke="black" stroke-width="0" points="8,-36 8,-296 190,-296 190,-36 8,-36"/>
<text text-anchor="middle" x="99" y="-279.4" font-family="Sans" font-size="14.00">Client</text>
</g>
<g id="graph3" class="cluster"><title>cluster_client1</title>
<polygon fill="none" stroke="black" stroke-width="0" points="16,-44 16,-263 182,-263 182,-44 16,-44"/>
</g>
<g id="graph4" class="cluster"><title>cluster_node</title>
<polygon fill="none" stroke="black" stroke-width="0" points="234,-33 234,-296 634,-296 634,-33 234,-33"/>
<text text-anchor="middle" x="434" y="-279.4" font-family="Sans" font-size="14.00">Full Node</text>
</g>
<g id="graph5" class="cluster"><title>cluster_node2</title>
<polygon fill="none" stroke="black" stroke-width="0" points="468,-41 468,-263 626,-263 626,-41 468,-41"/>
</g>
<g id="graph6" class="cluster"><title>cluster_node1</title>
<polygon fill="none" stroke="black" stroke-width="0" points="242,-99 242,-263 408,-263 408,-99 242,-99"/>
</g>
<!-- address -->
<g id="node3" class="node"><title>address</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="167,-255 31,-255 31,-219 167,-219 167,-255"/>
<text text-anchor="middle" x="99" y="-232.9" font-family="Sans" font-size="14.00">Address To Match</text>
</g>
<!-- filter1 -->
<g id="node4" class="node"><title>filter1</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="174,-205 24,-205 24,-163 174,-163 174,-205"/>
<polyline fill="none" stroke="black" stroke-width="1.75" points="36,-205 24,-193 "/>
<polyline fill="none" stroke="black" stroke-width="1.75" points="24,-175 36,-163 "/>
<polyline fill="none" stroke="black" stroke-width="1.75" points="162,-163 174,-175 "/>
<polyline fill="none" stroke="black" stroke-width="1.75" points="174,-193 162,-205 "/>
<text text-anchor="middle" x="99" y="-188.4" font-family="Sans" font-size="14.00">Filter That</text>
<text text-anchor="middle" x="99" y="-171.4" font-family="Sans" font-size="14.00"> &#160;Matches Address &#160;</text>
</g>
<!-- address&#45;&gt;filter1 -->
<g id="edge4" class="edge"><title>address&#45;&gt;filter1</title>
<path fill="none" stroke="black" stroke-width="1.75" d="M99,-218.76C99,-217.653 99,-216.523 99,-215.381"/>
<polygon fill="black" stroke="black" points="102.5,-215.006 99,-205.006 95.5001,-215.007 102.5,-215.006"/>
</g>
<!-- mymatch1 -->
<!-- filter1&#45;&gt;mymatch1 -->
<!-- filter2 -->
<g id="node11" class="node"><title>filter2</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="400,-205 250,-205 250,-163 400,-163 400,-205"/>
<polyline fill="none" stroke="black" stroke-width="1.75" points="262,-205 250,-193 "/>
<polyline fill="none" stroke="black" stroke-width="1.75" points="250,-175 262,-163 "/>
<polyline fill="none" stroke="black" stroke-width="1.75" points="388,-163 400,-175 "/>
<polyline fill="none" stroke="black" stroke-width="1.75" points="400,-193 388,-205 "/>
<text text-anchor="middle" x="325" y="-188.4" font-family="Sans" font-size="14.00">Filter That</text>
<text text-anchor="middle" x="325" y="-171.4" font-family="Sans" font-size="14.00"> &#160;Matches Address &#160;</text>
</g>
<!-- filter1&#45;&gt;filter2 -->
<g id="edge10" class="edge"><title>filter1&#45;&gt;filter2</title>
<path fill="none" stroke="black" stroke-width="1.75" d="M174.039,-184C195.943,-184 217.847,-184 239.75,-184"/>
<polygon fill="black" stroke="black" points="239.814,-187.5 249.814,-184 239.814,-180.5 239.814,-187.5"/>
</g>
<!-- mymatch2 -->
<!-- mymatch1&#45;&gt;mymatch2 -->
<!-- filter3 -->
<g id="node15" class="node"><title>filter3</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="618,-205 476,-205 476,-163 618,-163 618,-205"/>
<polyline fill="none" stroke="black" stroke-width="1.75" points="488,-205 476,-193 "/>
<polyline fill="none" stroke="black" stroke-width="1.75" points="476,-175 488,-163 "/>
<polyline fill="none" stroke="black" stroke-width="1.75" points="606,-163 618,-175 "/>
<polyline fill="none" stroke="black" stroke-width="1.75" points="618,-193 606,-205 "/>
<text text-anchor="middle" x="547" y="-188.4" font-family="Sans" font-size="14.00">Filter Updated</text>
<text text-anchor="middle" x="547" y="-171.4" font-family="Sans" font-size="14.00"> &#160;&#160;&#160;With Outpoint &#160;</text>
</g>
<!-- filter2&#45;&gt;filter3 -->
<g id="edge25" class="edge"><title>filter2&#45;&gt;filter3</title>
<path fill="none" stroke="black" stroke-width="1.75" d="M400.012,-184C421.92,-184 443.828,-184 465.737,-184"/>
<polygon fill="black" stroke="black" points="465.803,-187.5 475.803,-184 465.803,-180.5 465.803,-187.5"/>
</g>
<!-- match1 -->
<g id="node21" class="node"><title>match1</title>
<text text-anchor="middle" x="325" y="-132.4" font-family="Sans" font-size="14.00">Transaction 1</text>
<text text-anchor="middle" x="325" y="-115.4" font-family="Sans" font-size="14.00">Pays Address</text>
</g>
<!-- filter2&#45;&gt;match1 -->
<g id="edge21" class="edge"><title>filter2&#45;&gt;match1</title>
<path fill="none" stroke="black" stroke-width="1.75" d="M325,-162.829C325,-161.714 325,-160.583 325,-159.445"/>
<polygon fill="black" stroke="black" points="328.5,-159.201 325,-149.201 321.5,-159.201 328.5,-159.201"/>
</g>
<!-- tx2 -->
<g id="node14" class="node"><title>tx2</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="602,-255 492,-255 492,-219 602,-219 602,-255"/>
<text text-anchor="middle" x="547" y="-232.9" font-family="Sans" font-size="14.00">Transaction 2</text>
</g>
<!-- tx2&#45;&gt;filter3 -->
<g id="edge14" class="edge"><title>tx2&#45;&gt;filter3</title>
<path fill="none" stroke="black" stroke-width="1.75" d="M547,-218.76C547,-217.653 547,-216.523 547,-215.381"/>
<polygon fill="black" stroke="black" points="550.5,-215.006 547,-205.006 543.5,-215.007 550.5,-215.006"/>
</g>
<!-- match2 -->
<g id="node16" class="node"><title>match2</title>
<text text-anchor="middle" x="547" y="-74.4" font-family="Sans" font-size="14.00">Transaction 2</text>
<text text-anchor="middle" x="547" y="-57.4" font-family="Sans" font-size="14.00">Spends Outpoint</text>
</g>
<!-- filter3&#45;&gt;match2 -->
<g id="edge16" class="edge"><title>filter3&#45;&gt;match2</title>
<path fill="none" stroke="black" stroke-width="1.75" d="M547,-162.825C547,-145.548 547,-120.887 547,-101.325"/>
<polygon fill="black" stroke="black" points="550.5,-101.062 547,-91.062 543.5,-101.062 550.5,-101.062"/>
</g>
<!-- match2&#45;&gt;mymatch2 -->
<g id="edge29" class="edge"><title>match2&#45;&gt;mymatch2</title>
<path fill="none" stroke="black" stroke-width="1.75" d="M480.626,-70C375.193,-70 269.761,-70 164.328,-70"/>
<polygon fill="black" stroke="black" points="164.125,-66.5001 154.125,-70 164.125,-73.5001 164.125,-66.5001"/>
</g>
<!-- tx1 -->
<g id="node20" class="node"><title>tx1</title>
<polygon fill="none" stroke="black" stroke-width="1.75" points="380,-255 270,-255 270,-219 380,-219 380,-255"/>
<text text-anchor="middle" x="325" y="-232.9" font-family="Sans" font-size="14.00">Transaction 1</text>
</g>
<!-- tx1&#45;&gt;filter2 -->
<g id="edge19" class="edge"><title>tx1&#45;&gt;filter2</title>
<path fill="none" stroke="black" stroke-width="1.75" d="M325,-218.76C325,-217.653 325,-216.523 325,-215.381"/>
<polygon fill="black" stroke="black" points="328.5,-215.006 325,-205.006 321.5,-215.007 328.5,-215.006"/>
</g>
<!-- match1&#45;&gt;mymatch1 -->
<g id="edge23" class="edge"><title>match1&#45;&gt;mymatch1</title>
<path fill="none" stroke="black" stroke-width="1.75" d="M269.949,-128C234.825,-128 199.701,-128 164.577,-128"/>
<polygon fill="black" stroke="black" points="164.176,-124.5 154.176,-128 164.176,-131.5 164.176,-124.5"/>
</g>
<!-- match1&#45;&gt;filter3 -->
<g id="edge27" class="edge"><title>match1&#45;&gt;filter3</title>
<path fill="none" stroke="black" stroke-width="1.75" d="M380.284,-141.946C406.14,-148.468 437.44,-156.363 465.905,-163.544"/>
<polygon fill="black" stroke="black" points="465.289,-166.998 475.842,-166.05 467.002,-160.211 465.289,-166.998"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.6 KiB