Bitcoin Stack Exchange is a question and answer site for Bitcoin crypto-currency enthusiasts. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

When a bitcoin node has the blockchain in sync, most transactions in incoming block messages may have been already received as standalone tx messages before.

With a block message with only transaction hashes, the receiving node could try to reassemble the full block with its unconfirmed transactions and just request the missing transactions to complete the block.

Since this way to save bandwidth looks too obvious, I'm guessing there must a reason to always include the transactions in block messages, even after downloading the blockchain.

share|improve this question
up vote 4 down vote accepted

There are probably several reasons, but it's mostly historic. There is no inherent problem with just sending transaction id's. There is a disadvantage too, though, namely increased latency, which is not necessarily a problem when doing an initial sync, but it is not wanted when a fresh new block is propagating.

In fact, this idea is part of BIP 37, which specifies a protocol extension for requesting filtered blocks. To avoid the increased latency, matching transactions that are not known to the server to be already known to the receiver, are sent immediately after the filtered block itself.

share|improve this answer
Regarding latency, couldn't a block message with transactions id's be relayed as soon as it arrives before verifying its transactions? Creating blocks with invalid transactions would be too costly to consider them a problem, right? – Danny Navarro Jan 24 '13 at 12:54
Didn't know bloom filters included filtered blocks. That solves the issue. Is the full implementation of BIP 37 coming with 0.8 release? – Danny Navarro Jan 24 '13 at 13:06
A server-side implementation of BIP 37 will be in 0.8, yes. – Pieter Wuille Jan 24 '13 at 19:02

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.