Update P2P networking protocol versions and message headers sections

Update subheading-links
Update more items in references.md
This commit is contained in:
thephez 2017-09-05 16:06:08 -04:00
parent f82767d1f1
commit 458562d473
3 changed files with 22 additions and 14 deletions

View file

@ -40,7 +40,7 @@ Note: the testnet start string and nBits above are for testnet3.
Command line parameters can change what port a node listens on (see Command line parameters can change what port a node listens on (see
`-help`). Start strings are hardcoded constants that appear at the start `-help`). Start strings are hardcoded constants that appear at the start
of all messages sent on the Bitcoin network; they may also appear in of all messages sent on the Dash network; they may also appear in
data files such as Dash Core's block database. The Magic Value and nBits data files such as Dash Core's block database. The Magic Value and nBits
displayed above are in big-endian order; they're sent over the network in displayed above are in big-endian order; they're sent over the network in
little-endian order. The Start String is simply the endian reversed Magic Value. little-endian order. The Start String is simply the endian reversed Magic Value.
@ -61,13 +61,21 @@ with the most recent versions listed first. (If you know of a protocol
version that implemented a major change but which is not listed here, version that implemented a major change but which is not listed here,
please [open an issue][docs issue].) please [open an issue][docs issue].)
As of Bitcoin Core 0.14.2, the most recent protocol version is 70015. As of Dash Core 0.12.1.5, the most recent protocol version is 70206.
| Version | Initial Release | Major Changes
|---------|------------------------------------|--------------
| 70206 | Dash Core 0.12.1.x <br>(Mar 2017) |
| 70103 | Dash Core 0.12.0.x <br>(Aug 2015) |
| 70076 | Dash Core 0.11.2.x <br>(Apr 2015) |
| 70066 | Dash Core 0.11.1.x <br>(Feb 2015) |
| 70051 | Dash Core 0.10.0.x <br>(Feb 2015) |
| 70002 | Dash Core 0.8.7 <br>(Jan 2014) | Initial Dash release
Historical Bitcoin protocol versions for reference shown below.
| Version | Initial Release | Major Changes | Version | Initial Release | Major Changes
|---------|------------------------------------|-------------- |---------|------------------------------------|--------------
| 70015 | Bitcoin Core 0.13.2 <br>(Jan 2017) | • New banning behavior for invalid compact blocks [#9026](https://github.com/bitcoin/bitcoin/pull/9026) in v0.14.0, Backported to v0.13.2 in [#9048](https://github.com/bitcoin/bitcoin/pull/9048).
| 70014 | Bitcoin Core 0.13.0 <br>(Aug 2016) | [BIP152][]: <br>• Added `sendcmpct`, `cmpctblock`, `getblocktxn`, `blocktxn` messages <br> • Added `MSG_CMPCT_BLOCK` inventory type to `getdata` message.
| 70013 | Bitcoin Core 0.13.0 <br>(Aug 2016) | [BIP133][]: <br>• Added `feefilter` message.<br> • Removed `alert` message system. See [Alert System Retirement](https://bitcoin.org/en/alert/2016-11-01-alert-retirement)
| 70012 | Bitcoin Core 0.12.0 <br>(Feb 2016) | [BIP130][]: <br>• Added `sendheaders` message. | 70012 | Bitcoin Core 0.12.0 <br>(Feb 2016) | [BIP130][]: <br>• Added `sendheaders` message.
| 70011 | Bitcoin Core 0.12.0 <br>(Feb 2016) | [BIP111][]: <br>`filter*` messages are disabled without NODE_BLOOM after and including this version. | 70011 | Bitcoin Core 0.12.0 <br>(Feb 2016) | [BIP111][]: <br>`filter*` messages are disabled without NODE_BLOOM after and including this version.
| 70002 | Bitcoin Core 0.9.0 <br>(Mar 2014) | • Send multiple `inv` messages in response to a `mempool` message if necessary <br><br>[BIP61][]: <br>• Added `reject` message | 70002 | Bitcoin Core 0.9.0 <br>(Mar 2014) | • Send multiple `inv` messages in response to a `mempool` message if necessary <br><br>[BIP61][]: <br>• Added `reject` message
@ -96,14 +104,14 @@ The message header format is:
|-------|--------------|-----------|------------- |-------|--------------|-----------|-------------
| 4 | start string | char[4] | Magic bytes indicating the originating network; used to seek to next message when stream state is unknown. | 4 | start string | char[4] | Magic bytes indicating the originating network; used to seek to next message when stream state is unknown.
| 12 | command name | char[12] | ASCII string which identifies what message type is contained in the payload. Followed by nulls (0x00) to pad out byte count; for example: `version\0\0\0\0\0`. | 12 | command name | char[12] | ASCII string which identifies what message type is contained in the payload. Followed by nulls (0x00) to pad out byte count; for example: `version\0\0\0\0\0`.
| 4 | payload size | uint32_t | Number of bytes in payload. The current maximum number of bytes ([`MAX_SIZE`][max_size]) allowed in the payload by Bitcoin Core is 32 MiB---messages with a payload size larger than this will be dropped or rejected. | 4 | payload size | uint32_t | Number of bytes in payload. The current maximum number of bytes ([`MAX_SIZE`][max_size]) allowed in the payload by Dash Core is 32 MiB---messages with a payload size larger than this will be dropped or rejected.
| 4 | checksum | char[4] | *Added in protocol version 209.* <br><br>First 4 bytes of SHA256(SHA256(payload)) in internal byte order.<br /><br /> If payload is empty, as in `verack` and `getaddr` messages, the checksum is always 0x5df6e0e2 (SHA256(SHA256(\<empty string>))). | 4 | checksum | char[4] | *Added in protocol version 209.* <br><br>First 4 bytes of SHA256(SHA256(payload)) in internal byte order.<br /><br /> If payload is empty, as in `verack` and `getaddr` messages, the checksum is always 0x5df6e0e2 (SHA256(SHA256(\<empty string>))).
The following example is an annotated hex dump of a mainnet message The following example is an annotated hex dump of a mainnet message
header from a `verack` message which has no payload. header from a `verack` message which has no payload.
{% highlight text %} {% highlight text %}
f9beb4d9 ................... Start string: Mainnet bf0c6bbd ................... Start string: Mainnet
76657261636b000000000000 ... Command name: verack + null padding 76657261636b000000000000 ... Command name: verack + null padding
00000000 ................... Byte count: 0 00000000 ................... Byte count: 0
5df6e0e2 ................... Checksum: SHA256(SHA256(<empty>)) 5df6e0e2 ................... Checksum: SHA256(SHA256(<empty>))

View file

@ -2,9 +2,9 @@
This file is licensed under the MIT License (MIT) available on This file is licensed under the MIT License (MIT) available on
http://opensource.org/licenses/MIT. http://opensource.org/licenses/MIT.
{% endcomment %}{% if filename %}<div class="subhead-links sourcefile" data-sourcefile="{{filename|uri_escape}}" {% endcomment %}{% if filename %}<div class="subhead-links sourcefile" data-sourcefile="{{filename|uri_escape}}"
><a href="https://github.com/bitcoin-dot-org/bitcoin.org/edit/master/{{filename|uri_escape}}">Edit</a> ><a href="https://github.com/thephez/dash.org//edit/master/{{filename|uri_escape}}">Edit</a>
| <a href="https://github.com/bitcoin-dot-org/bitcoin.org/commits/master/{{filename|uri_escape}}">History</a> | <a href="https://github.com/thephez/dash.org/commits/master/{{filename|uri_escape}}">History</a>
| <a href="https://github.com/bitcoin-dot-org/bitcoin.org/issues/new?body=Source%20File%3A%20{{filename|uri_escape}}%0A%0A">Report Issue</a> | <a href="https://github.com/thephez/dash.org/issues/new?body=Source%20File%3A%20{{filename|uri_escape}}%0A%0A">Report Issue</a>
| <a href="/en/development#devcommunities">Discuss</a></div> | <a href="/en/development#devcommunities">Discuss</a></div>
{% else %} {% else %}
{% die "source filename not set" %} {% die "source filename not set" %}

View file

@ -457,7 +457,7 @@ http://opensource.org/licenses/MIT.
{% comment %}<!-- Direct links to code; link to a specific commit to prevent code {% comment %}<!-- Direct links to code; link to a specific commit to prevent code
changes from moving the referenced object, but also update links changes from moving the referenced object, but also update links
periodically to point to recent code. Last update: 2014-11-12 --> {% endcomment %} periodically to point to recent code. Last update: 2017-09-05 --> {% endcomment %}
[core bloom.cpp hash]: https://github.com/bitcoin/bitcoin/blob/cbf28c6619fe348a258dfd7d08bdbd2392d07511/src/bloom.cpp#L46 [core bloom.cpp hash]: https://github.com/dashpay/dash/blob/333e1eaeea80344e5a28db6efbce2691c85e2b25/src/bloom.cpp#L58
[MAX_SIZE]: https://github.com/bitcoin/bitcoin/blob/60abd463ac2eaa8bc1d616d8c07880dc53d97211/src/serialize.h#L23 [MAX_SIZE]: https://github.com/dashpay/dash/blob/c31ba8ba4c07e72620bd71753f2103ca103bb1c2/src/serialize.h#L26
[rpcprotocol.h]: https://github.com/bitcoin/bitcoin/blob/f914f1a746d7f91951c1da262a4a749dd3ebfa71/src/rpcprotocol.h [rpcprotocol.h]: https://github.com/dashpay/dash/blob/3e0eee4c84f40b3cf277e8d03e004249d03c081d/src/rpcprotocol.h