BUIP001: Extensions to the Bitcoin Client
Proposer: Andrew Stone
Submitted: 2015-11-26
Status: passed


The following extensions are proposed for the Bitcoin client:

1. GUI: Creation of a “Bitcoin Unlimited” menu option and dialog box to
access BU specific features. This menu option will appear just below the
“options” option.

2. Addition of an Unlimited Dialog / command line option to change the
maximum size of a generated (mined) block. This will allow miners to use
BU to generate large blocks. The default value will be 1000000 bytes
(compatible with today’s consensus).

3. Addition of an Unlimited Dialog / command line option to change the
default block “accept” size. Blocks larger than this (excessive blocks)
will only be accepted if they are N deep in the blockchain. This will be
16MB by default. The largest message is limited to 10 times this size,
to that creates an effective block size limit. This limitation was not
removed entirely to stop people from DOSing BU by sending a fake
infinitely sized block.

4. Addition of an Unlimited Dialog / command line option to set the
excessive block accept depth. This is the N parameter in the description
of #3. The default value will be 4.

5. Addition of traffic shaping. Traffic shaping, similar to what is
merged into Bitcoin XT is added to the Unlimited menu and command line
options. As blocks grow bigger, it is important that users can easily
configure how much bandwidth should be used for Bitcoin. This allows the
Bitcoin client to run unobtrusively in a home network. Although
bandwidth-limited clients in theory increase the time it takes for a
block to propagate through the network, this will only happen if their
removal would partition the network – i.e. they are a critical node in
the network topology. Additionally, they are valuable as another copy of
the blockchain and to serve data to clients who do not need fast block
propagation (essentially everyone but miners). And in practice, Matt
Corollo’s Bitcoin Relay Network is used for fast block propagation…

6. Fix in the GUI’s transaction notification – if lots of notifications
are coming in, some will be skipped. This fixes the problem where if you
end up receiving 1000+ transactions the visual notifications keep coming
for a half hour after the actual notification.

7. Client identifier changed to BitcoinUnlimited

8. Block version changed to 0x40000007. This version would reflect
BIP101 and OP_CHECKLOCKTIMEVERIFY support.

9. Minimal branding changes – replacing Unlimited with Core in key
locations and adding new artwork. We want to rebrand, but do not want
rebasing the code to be a headache. So a minimal approach was taken WRT
branding.

A release will be made containing the above changes based off the
Bitcoin Core 0.11 (.2) branch. Subsequent Bitcoin Unlimited releases
will also include the above changes.

These changes are functionally complete on the 0.11cfg_stats, and have
been running on mainnet and testnet for several days. However, this
branch will still get a final code review, hopefully by a different
developer before release (you are NOT voting to include this branch “AS
IS”).

It is important that we make an initial, simple Bitcoin Unlimited
release to get things going. Please do not bikeshed this proposal with
small modifications and new features (for example, having a button that
automatically tracks BIP101 block expansion). We can make things better
in subsequent releases.