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.
This commit merges the RPC introduction section (h4), "JSON-RPC &
bitcoin-cli" into the currently-empty RPC section (h3). To do this, it
splits the contents of the file `_includes/ref_core_rpc_intro.md` into
the new files `_includes/ref/bitcoin-core/api-intro.md` and
`_includes/ref/bitcoin-core/rpcs/intro.md`
As discussed on BitcoinTalk, there was confusion about whether a
non-upgraded node would switch to the strongest chain despite that chain
not following the consensus rules known to the non-upgraded node. Also
updated to mention Bitcoin Core 0.10.0 now that it's RC'd.
Ref: https://bitcointalk.org/index.php?topic=909732.msg9999032#msg9999032
Suggested by Saivann: RPC tables with Name/Type/Presence/Description
format are now in .ntpd CSS class so that we can format them specially.
We also change the style of all dev doc tables to replace bold table
headings (thead) with a double-line border-bottom. This makes the
theads look less like section headings and prevents us from over-using
bold.
Minor: a Makefile warning message has been made more explicit (also
suggested by Saivann) and another Makefile rule was updated to catch
more broken tables.
* All previously-documented RPCs have had their text completely
rewritten.
* All new RPCs and changed RPCs in Bitcoin Core 0.10.0 have been
documented, except for hidden RPCs.
* A new RPC "Quick Reference" section has been added to make finding the
right RPC easier.
* A "See Also" subsection has been added to the end of every RPC
pointing to other relevant information.
* All previous examples in the RPC section have been re-run and updated
as necessary.
* Syntax highlighting has been added wherever possible.
* Hash byte order has been specified as RPC byte order everywhere it's
used in RPCs.
Briefly describe the JSON-RPC 1.0 format as used by Bitcoin Core and how
bitcoin-cli abstracts away some of the details. Also link to the
Proper Money Handling wiki page. (This as a vanguard PR preparing the
way for a larger overhaul of our RPC docs, including updating them for
0.10.)
Converts fake subheadings created using **bold** to real HTML
subheadings without adding them to the table of contents.
Also fixes a link broken by commit 4e067ac89e and adds a Makefile
test to catch future similar breakage.
New material:
* Add documentation for `filterload` message to devref. This is the last
P2P protocol message which needed documentation.
* Add an example for creating a bloom filter to the devex, as well as an
example of checking data against that filter.
Edits:
* Change "object" to "element" in previous `filteradd` text. I decided
"transaction element" made more sense than the more generic "object".
Text should be fully consistent across both `filterload` and
`filteradd` descriptions.
* Mentioned that I think the example hexdump in the `alert` section is
public domain. (Only the hex is taken from the wiki; the annotation is
my own work.)
* Describes all remaining messages except filterload. Specificially, the
following messages are described: Addr, Alert, FilterAdd, FilterClear,
GetAddr, Ping, Pong, Reject, VerAck, and Version
* New makefile test: report broken markdown tables
* Put relevant protocol version changes at the top of all message
subsections.
The makefile tests caught this, but it looks like I broke it back in
4553439e. Strangely, I did a full build before merging that commit---and
several more full builds since---and this is the first I'm noticing the
error. I'm fixing the broken link now; I'll look into the tests later.
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.