Hi all,

We are making public our latest work on Erlay, an efficient transaction relay 
protocol for Bitcoin.
It is available here: https://arxiv.org/abs/1905.10518

The main idea is that instead of announcing every transaction to every peer, 
announcements are only sent directly over a small number of connections (only 8 
outgoing ones). Further relay is achieved by periodically running a set 
reconciliation protocol over every connection between the sets of withheld 
announcements in both directions.

The set reconciliation protocol uses error correcting codes to communicate a 
set of transactions to a peer with an unknown but similar set using bandwidth 
only equal to the size of the difference and not the size of the sets 

Results: we save half of the bandwidth a node consumes, allow increasing 
connectivity almost for free, and, as a side effect, better withstand timing 
If outbound peer count were increased to 32, Erlay saves around 75% overall 
bandwidth compared to the current protocol.

This work uses Minisketch, an efficient library for set reconciliation, which 
we made public before: github.com/sipa/minisketch.

Some of you may already know about it from discussions with me, Scaling Bitcoin 
18, or CoreDev in Tokyo. Our proposal has become more precise since then.

The next step here is to receive more feedback, have a broader discussion, and 
then write a BIP along with improving reference implementation. We are looking 
forward to hearing your suggestions or concerns regarding this work.

This protocol is a result of work by myself, Gregory Maxwell, Pieter Wuille, 
and my supervisors at UBC: Ivan Beschastnikh and Sasha Fedorova.
I would like to thank Tim Ruffing and Ben Woosley for contributions to the 
write-up, and Blockstream for supporting my work on this protocol.

– gleb
bitcoin-dev mailing list

Reply via email to