BUIP064: Support Segwit2x with an official implementation
Proposer: Andrew Clifford (@solex)
Submitted on: 2017-09-01
Status: draft


## Motivation

Segwit has activated on the Bitcoin network. This is due to miners
respecting the New York Agreement and part-fulfilling their side of it.
Representatives of most miners and a number of major Bitcoin companies
made this agreement to increase the block size limit to 2MB and activate
Segwit. The increase to 2MB is scheduled to occur at block 494,784

Bitcoin Unlimited must remain responsive to the collective will of its
membership. The sense of its membership can be observed in ways other
than BUIP votes, and one important signal is the ratio of deployed nodes
where a subset of them are controlled by BU members. It is now one month
since the advent of Bitcoin Cash, which is a pure large-blocks spinoff,
and some 250 BUCash full-nodes are deployed. There are a further 690
BitcoinUnlimited full-nodes deployed still supporting the Bitcoin
network, about 70% of all BU nodes (source: bitnodes.io). Those node
owners are clearly anticipating potential success of the Segwit2x
initiative.

Segwit was deployed as a soft-fork and one of the major drawbacks of
these is that the larger the functional change in a soft-fork the more
severe is the “zombification” of nodes which do not deploy the
soft-fork. This applies to the 690 BU nodes which are now unable to mine
blocks, as well as being unable to verify and propagate some witness
data.

It is not acceptable for the BU organization to sit by and allow the
increasing zombification of many full nodes which have been deployed by
users of its software in good faith.

Authority to act already exists because Bitcoin Unlimited was launched
as onchain scaling patch-set on top of Bitcoin Core. The guiding
principle here is that BU members can veto Bitcoin changes (such as RBF)
or vote for new changes (such as Xthin), but, in the absence of such
direction the Developer has discretion to merge Bitcoin Core updates.

## Objectives

The purpose of this BUIP is to upgrade the next version of the official
BitcoinUnlimited implementation with the Segwit software in order to be
fully compatible with Segwit2x, as per the New York Agreement. The BU
Developer will have the choice of constructing a client as follows:

1. rebase upon a later version of the Core Project repository and
preserve the Segwit functionaity
2. fork the BTC1 repository and apply necessary changes to make it
consistent with BU’s passed BUIPs i.e. remove RBF, add emergent
consensus for block limit determination, etc
3. merging the SegWit patchset into the current BU (dev) tre

## Project Duration

Due to time pressures it may be only option (2) which is viable before
the 2MB activation date. Ideally a new version should be available one
month beforehand.

## Funding

This version is to be funded as per historical funding for any upgrade.

## Impact

A base-block size limit increase from 1MB to 2MB on Bitcoin may occur
and be a new minority fork, or it may be the majority hashpower and the
Bitcoin Core project forks itself off the network. The process may be
protracted and messy or quick and clean. There are a lot of unknowns,
but what is known is that the 690 Bitcoin Unlimited nodes currently
deployed are unable to participate fully in this network, even if the
2MB is activated and larger blocks allowed. Ideally an official
BitcoinUnlimited implementation, which is as fully featured, or even
better than BTC1, should be offered to the users to help scale Bitcoin.