Talk:Protocol documentation

From Bitcoin Wiki
Revision as of 22:33, 2 October 2011 by Atheros (talk | contribs)
Jump to navigation Jump to search

What is "77x"? Header size wrong?

The description for the headers command says "77x?" as the size for the block_headers[] returned. However, the description of the block_header structure is 81 bytes (4+32+32+4+4+4+1). What exactly is returned by the headers command? -- AndyParkins

Version in getblocks?

Apparently the official client sends the protocol version in getblocks messages, (possibly even in getheaders). This seems to me to be just weird --Bluecmd 14:57, 6 June 2011 (GMT)

Separate page for hexdumps?

Does anyone else think it may be a good idea to put the hexdumps on a separate page? It'd be nice to have this page just describe the protocol, but at the same time, be able to have examples of each of the different messages and objects. On that node, would it also be helpful if I were to do a hexdump example of all of the different commands/structures? --Andrew12 23:26, 9 June 2011 (GMT)

I think that a page devoted solely to hexdumps wouldn't be a bad idea, especially if there would be multiple variants per each example and some of them would be explained step-by-step. This page needs cleanup.

--ThePiachu 14:06, 2 October 2011 (GMT)

Proposing additional protocol messages

According to the Bitcoin paper in order to do the simplified verification the client needs to store all headers of the entire chain but needs data only for those blocks that contain transactions of interest.

For this I propose the following new message types:

  • setfilter this message contains a list of bitcoin addresses. After receiving this message on a connection the client will stop broadcasting any inv messages for transactions which don't have a matching address in its inputs or outputs. inv for new blocks will not be filtered.
  • getblocksfiltered this message works exactly like getblocks but it will be answered with a filtered list of only those blocks that contain transactions with unspent outputs matching the filter list.

and the following new inventory type for getdata

  • MSG_BLOCK_PRUNED this will be answered like a MSG_BLOCK but all transactions not matching the filter list and transactions that are already spent will be stripped from the block before transmitting it to the client.

When a client requests such filtering then all new blocks will still be advertised like normal but the client will have the opportunity to request only the absolute minimum necessary data to perform the simplified verification as outlined in the paper and new transactions will only be sent to it if they match the filter list. This should save a LOT of bandwidth. Prof7bit 21:03, 24 June 2011 (GMT)

Errors?

https://en.bitcoin.it/wiki/Protocol_specification#version

Under version message there is the field version which has the type of int32_t. Shouldn't it be uint32_t? Same with the start_height. --ThePiachu 18:04, 30 September 2011 (GMT)

https://en.bitcoin.it/wiki/Protocol_specification#Network_address

The hexdump of the network address doesn't seem to have the time field. --ThePiachu 18:04, 30 September 2011 (GMT)

Are you looking at the network address in a version packet? Are you using an up-to-date Bitcoin client? --Atheros 22:33, 2 October 2011 (GMT)

https://en.bitcoin.it/wiki/Protocol_specification#getblocks

Shouldn't the field size of block locator hashes be 32x? ? --ThePiachu 21:35, 1 October 2011 (GMT)

https://en.bitcoin.it/wiki/Protocol_specification#getheaders

Shouldn't the field size of hash_start be 32 ? --ThePiachu 21:35, 1 October 2011 (GMT)