BUIP051: add CompactBlocks support Proposer: freetrader Submitted: 2017-04-13 Status: draft Summary ======= In the interest of supporting better fast block propagation between BU and other implementation which only support CompactBlocks (CB)[1] but not XthinBlocks (XTB), it is proposed to add BIP152 support to the BU client. Motivation ========== Currently, bridging between XTB and CB peers is possible by connecting via a BitcoinXT node. There are few of these (46 according to nodecounter.com). Supporting CB in BU would strengthen the connections between the BU peers and the rest of the network, without having to rely on intermediates. Also, few other (non-Core) implementation currently support XTB. It is more likely that some support CB. Being able to exchange big blocks with them might be necessary in the near/medium term, and since some of them are quite different from Satoshi clients, providing reference XTB implementation for them will not be so easy for BU developers. It makes more sense to support their existing fast propagation protocol. Implementation considerations ============================= The implementation should, for safety reasons, prefer to use the more tested XTB with peers that support this service, and fall back to using CompactBlocks with those that do not support XTB. User preference switches are recommended to 1. allow disabling CB support in the client entirely (such a kill switch should be supplied anyway for security purposes, should a flaw be found in the CB implementation, similar to `-use-thinblocks` for XTB) 2. allow the user to prefer CB to XTB with peers that support both Notes: ====== [1] This has already been implemented in Bitcoin XT, so hopefully together with the BIP152 specification it should be quite easy to port this feature to BU. [2] This porting work could be encouraged by making this a funded BUIP. The author has no advice for the effort and funding level required, but is open to suggestions, esp. from the XT developers who have already implemented this. Additional information ====================== [1] https://github.com/bitcoin/bips/blob/master/bip-0152.mediawiki