BUIP093: Graphene v.2 Improvements and Extensions Proposers: George Bissias <firstname.lastname@example.org>, Brian Levine <email@example.com> Created: 2018-09-21 Status: Passed
Graphene is a block relay protocol that is capable of transmitting
blocks across the Bitcoin Cash network much more compactly than previous
solutions such as Xtreme Thinblocks (XThin) and Compact Blocks. We
designed and helped code for Bitcoin Unlimited an initial implementation
of Graphene, which was released with Bitcoin Unlimited version.
The project will proceed in two phases: *Improvements* and
The following items will be prototyped as functional patches based on
the dev branch of the BitcoinUnlimited (BU) software repository. In the
event that the BU team agrees that a patch meets satisfactory
performance, security, and utility requirements, we will submit it as a
pull request (PR) against the dev branch. Our team will work with the BU
team to refine the PR until the latter team deems that the PR is
suitable to be merged or otherwise abandoned.
We propose to extend the Graphene protocol to provide a means for
size-efficient mempool synchronization and to allow Graphene to better
handle decode failures. The proposed extensions have been carefully
evaluated by our team in a forthcoming paper. Distinct from Phase 1,
some additional research will likely be necessary to support the
development of that implementation. We would like to reserve 25% of the
overall time in this phase to writing, executing, and evaluating
numerical simulations of associated data structures as well as
theoretical analysis useful for improving the safety, performance, or
usability of the implementation. Similar to Phase 1, we commit to
delivering prototypes as functional patches based on the dev branch of
the BU software repository. Upon request from the BU team, we will
furthermore submit these patches as PRs against the dev branch and see
them through to the point where they are either merged to dev or abandon
by the BU team.
For both mempool synchronization and Graphene Extended we propose to
complete the following tasks.
In addition to efficient block propagation, Graphene can be used for
intermittent mempool synchronization. In our approach, peers will
maintain an additional e neighbors. Intermittently, from the auxiliary
pool of e known (and willing) peers on the network, a remote peer is
selected randomly to perform a mempool synchronization. The protocol
description can be found in the our draft publication.
The current version of Graphene assumes the receiver has all block
transactions. However, this is not always the case when mempools are
significantly desynchronized. In order to greatly mollify this problem,
we will implement Graphene Extended, which uses the same core logic as
mempool synchronization described above. Thus, with the exception of
network messaging, much of the associated code will be reusable. A
detailed description of the Graphene Extended protocol can be found in
our draft publication.
The total anticipated project duration is 10 months (based on part-time
The total requested budget for this project is $50,000, or $5,000 per
month of the anticipated project duration.