dash-docs/img/dev/en-ibd-inv.dot
David A. Harding ccda4caa0c
Dev Docs: Document Blocks-First IBD & Orphan Blocks
This commit provides a detailed overview of the current block download
method, which I've retroactively named blocks-first for parallelism with
headers-first.

New And Significantly Revised:

* New Initial Block Download (IBD) section (h3) with Blocks-First
  subsection (h4)

* New Orphan Block subsection (under Blocks Broadcasting) describing
  orphan blocks and how they're handled under blocks-first. Also
  includes a simple illustration of the difference between orphan blocks
  and stale blocks. Thanks to luke-jr for his s/orphan block/stale
  block/ commit a couple months ago---that made this commit much easier.

Edits:

* Cleaned up a couple cases missed by previous s/orphan/stale/ commit
  because they used past tense (orphaned).

* In P2P reference section, mentioned that a `block` message can be sent
  unsolicited by miners.

* Mention that `getheaders` and `headers` were added in protocol
  version 31800.

* Moved a few internal links around and added a few new internal links.

Administrivia:

* Started adding "TODOv0.10" in HTML comments to places that need to be
  updated when 0.10 is released so that I can easily git grep for that
  tag later.
2015-01-31 15:48:16 -05:00

73 lines
2.2 KiB
Text

digraph {
// This file is licensed under the MIT License (MIT) available on
// http://opensource.org/licenses/MIT.
size=6.25;
rankdir=LR
splines = "false";
ranksep = 0.2;
nodesep = 0.1;
edge [ penwidth = 1.75, fontname="Sans" ]
node [ penwidth = 1.75, shape = "box", fontname="Sans"]
graph [ penwidth = 1.75, fontname="Sans" ]
ibd -> inv:f1 -> sync [ dir = "back" ];
ibd [ label = "IBD\nNode", shape="none" ];
sync [ label = "Sync\nNode", shape="none" ];
inv [ shape="plaintext", label=<
<table border="2" cellborder="1">
<tr>
<td colspan="4" port="f1" border="0" cellpadding="4"><b>Inv Message</b></td>
</tr>
<tr>
<td colspan="4" border="0"><i>Message Header</i></td>
</tr>
<tr>
<td border="1"><i>Start String</i><br/><font face="courier">f9beb4d9</font></td>
<td border="1"><i>Command</i><br/><font face="courier">inv</font></td>
<td border="1"><i>Size</i><br/><font face="courier">18003</font></td>
<td border="1"><i>Checksum</i><br/><font face="courier">25173c57</font></td>
</tr>
<tr>
<td colspan="4" border="0"><i>Payload</i></td>
</tr>
<tr>
<td colspan="4"><i>Number Of Inventories (Max 500 In Reply To GetBlocks) </i><br /><font face="courier">500</font></td>
</tr>
<tr>
<td colspan="4">
<table border="0">
<tr>
<td colspan="2"><i>Inventory Entries</i></td>
</tr>
<tr>
<td><i>Type</i></td>
<td><i>Unique Identifier (For Blocks, A Header Hash)</i></td>
</tr>
<tr>
<td><font face="courier">block</font></td>
<td><font face="courier">4860eb18bf1b1620...688e9a8300000000</font></td>
</tr>
<tr>
<td><font face="courier">block</font></td>
<td><font face="courier">bddd99ccfda39da1...065f626a00000000</font></td>
</tr>
<tr>
<td colspan="2"><i>...............498 more inventory entries...............</i></td>
</tr>
</table>
</td>
</tr>
</table>>];
label = "First inv message reply sent to Initial Blocks Download (IBD) node"
}