8

Mike Hearn talked about a patch he applied to BitcoinXT recently in his AMA:

I posted a patch last week that makes XT download blocks as lists of hashes instead of duplicating the transaction data, so a full 1mb block would drop to about ~70 kilobytes, in theory, if you were online for the whole time since the last block. However, the patch needs more work and testing before it can be shipped to users.

If I understand correctly:

  • Blocks themselves would stay exactly the same.
  • Transactions only need to be downloaded once (instead of once or twice)
  • Each node reassembles the block from this "ingredient list"
  • Missing transactions can be requested from peers by transaction hash.

This would reduce the total traffic to transfer a full block roughly from 2MB to 1.07MB. This seems like an obvious improvement of the current status quo which could be introduced cheaply, especially reducing the network load during the peak demand right after a block is found.

Are there any drawbacks that I'm missing?

2
  • I think the primary drawback is that it makes it harder to build another client from the ground up, because more state needs to be kept in memory when accepting and processing a newly mined block. Otherwise the concept is functionally equivalent to the existing system.
    – Nayuki
    Nov 17, 2015 at 17:45
  • @Nayuki: Not sure I understand what you mean. From what I understand regular block propagation would continue to work as before, running the thinblock patch would be optional.
    – Murch
    Mar 31, 2016 at 23:38

1 Answer 1

1

Compact Blocks in Bitcoin Core provides similar functionality (see BIP 152 for spec). The main improvement is in the way it gets rid of bloom filters, as those add a DoS attack risk.

There's a bit more in commentary from nullc (Gregory Maxwell) in this thread on Reddit

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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