This proposal is written under the assumption that the signatories to the 
Consensus 2017 Scaling Agreement[1] are genuinely committed to the terms of the 
agreement, and intend to enact the updates described therein. As such, 
criticisms pertaining to the chosen deployment timeline or hard fork upgrade 
path should be treated as out-of-scope during the initial discussion of this 
proposal.

Because it includes the activation of a hard fork for which community consensus 
does not yet exist, this proposal is not likely to be merged into Bitcoin Core 
in the immediate future, and must instead be maintained and reviewed in a 
separate downstream repository. However, it is written with the intent to 
remain cleanly compatible with future network updates and changes, to allow for 
the option of a straightforward upstream merge if community consensus for the 
proposal is successfully achieved in the following months.

<pre>
BIP: ?
Layer: Consensus
Title: Compatibility-oriented omnibus proposal
Author: Calvin Rechner <calvinrech...@protonmail.com>
Comments-Summary: No comments yet.
Comments-URI: ?
Status: Draft
Type: Standards Track
Created: 2017-05-28
License: PD
</pre>

===Abstract===

This document describes a virtuous combination of James Hilliard’s “Reduced 
signalling threshold activation of existing segwit deployment”[2], Shaolin 
Fry’s “Mandatory activation of segwit deployment”[3], Sergio Demian Lerner’s 
“Segwit2Mb”[4] proposal, Luke Dashjr’s “Post-segwit 2 MB block size 
hardfork”[5], and hard fork safety mechanisms from Johnson Lau’s 
“Spoonnet”[6][7] into a single omnibus proposal and patchset.

===Motivation===

The Consensus 2017 Scaling Agreement[1] stipulated the following commitments:

• Activate Segregated Witness at an 80% threshold, signaling at bit 4
• Activate a 2 MB hard fork within six months

This proposal seeks to fulfill these criteria while retaining maximum 
compatibility with existing deployment approaches, thereby minimizing the risks 
of a destructive chain split. Additionally, subsequent indications of implied 
criteria and expectations of the Agreement[8][9] are satisfied.

The proposed hard fork incorporates a legacy witness discount and 2MB blocksize 
limit along with the enactment of Spoonnet-derived protectionary measures, to 
ensure the safest possible fork activation within the constraints of the 
requirements outlined in the Scaling Agreement.

===Rationale===

To the extent possible, this represents an effort at a best-of-all-worlds 
proposal, intended to provide a common foundation from which all 
mutually-inclusive goals can be achieved while risks are minimized.

The individual constituent proposals include the following respective 
rationales:

James Hilliard’s “Reduced signalling threshold activation of existing segwit 
deployment”[2] explains:

> The goal here is to minimize chain split risk and network disruption while 
> maximizing backwards compatibility and still providing for rapid activation 
> of segwit at the 80% threshold using bit 4.

Shaolin Fry’s “Mandatory activation of segwit deployment”[3] is included to:

> cause the existing "segwit" deployment to activate without needing to release 
> a new deployment.

Both of the aforementioned activation options (“fast-activation” and “flag-day 
activation”) serve to prevent unnecessary delays in the network upgrade 
process, addressing a common criticism of the Scaling Agreement and providing 
an opportunity for cooperation and unity instead.

Sergio Demian Lerner’s “Segwit2Mb”[4] proposal explains the reasoning behind 
linking SegWit’s activation with that of a later hard fork block size increase:

> Segwit2Mb combines segwit as it is today in Bitcoin 0.14+ with a 2MB block 
> size hard-fork activated ONLY if segwit activates (95% of miners signaling 
> ... to re-unite the Bitcoin community and avoid a cryptocurrency split.

Luke Dashjr’s “Post-segwit 2 MB block size hardfork”[5] suggestions are 
included to reduce the marginal risks that such an increase in the block size 
might introduce:

> if the community wishes to adopt (by unanimous consensus) a 2 MB block size 
> hardfork, this is probably the best way to do it right now... Legacy Bitcoin 
> transactions are given the witness discount, and a block size limit of 2 MB 
> is imposed.

Johnson Lau’s anti-replay and network version updates[6][7] are included as 
general hard fork safety measures:

> In a blockchain split, however, since both forks share the same historical 
> ledger, replay attack would be possible, unless some precautions are taken.

===Copyright===

This document is placed in the public domain.

===Specification===

###Proposal Signaling###

The string “COOP” is included anywhere in the txn-input (scriptSig) of the 
coinbase-txn to signal compatibility and support.

###Soft Fork###

Fast-activation (segsignal): deployed by a "version bits" with an 80% 
activation threshold BIP9 with the name "segsignal" and using bit 4... [with a] 
start time of midnight June 1st, 2017 (epoch time 1496275200) and timeout on 
midnight November 15th 2017 (epoch time 1510704000). This BIP will cease to be 
active when segwit is locked-in.[2]

Flag-day activation (BIP148): While this BIP is active, all blocks must set the 
nVersion header top 3 bits to 001 together with bit field (1<<1) (according to 
the existing segwit deployment). Blocks that do not signal as required will be 
rejected... This BIP will be active between midnight August 1st 2017 (epoch 
time 1501545600) and midnight November 15th 2017 (epoch time 1510704000) if the 
existing segwit deployment is not locked-in or activated before epoch time 
1501545600. This BIP will cease to be active when segwit is locked-in. While 
this BIP is active, all blocks must set the nVersion header top 3 bits to 001 
together with bit field (1<<1) (according to the existing segwit deployment). 
Blocks that do not signal as required will be rejected.[3]

###Hard Fork###

The hard fork deployment is scheduled to occur 6 months after SegWit activates:

(HardForkHeight = SEGWIT_ACTIVE_BLOCK_HEIGHT + 26280)

For blocks equal to or higher than HardForkHeight, Luke-Jr’s legacy witness 
discount and 2MB limit are enacted, along with the following Spoonnet-based 
improvements[6][7]:

* A "hardfork signalling block" is a block with the sign bit of header nVersion 
is set [Clearly invalid for old nodes; easy opt-out for light wallets]

* If the median-time-past of the past 11 blocks is smaller than the 
HardForkHeight... a hardfork signalling block is invalid.

* Child of a hardfork signalling block MUST also be a hardfork signalling block

* Hardfork network version bit is 0x02000000. A tx is invalid if the highest 
nVersion byte is not zero, and the network version bit is not set.

===Deployment===

Deployment of the “fast-activation” soft fork is exactly identical to 
Hilliard’s segsignal proposal[2]. Deployment of the “flag-day” soft fork is 
exactly identical to Fry’s BIP148 proposal[3]. HardForkHeight is defined as 
26280 blocks after SegWit is set to ACTIVE. All blocks with height greater than 
or equal to this value must adhere to the consensus rules of the 2MB hard fork.

===Backwards compatibility===

This deployment is compatible with the existing "segwit" bit 1 deployment 
scheduled between midnight November 15th, 2016 and midnight November 15th, 2017.

To prevent the risk of building on top of invalid blocks, miners should upgrade 
their nodes to support segsignal as well as BIP148.

The intent of this proposal is to maintain full legacy consensus compatibility 
for users up until the HardForkHeight block height, after which backwards 
compatibility is waived as enforcement of the hard fork consensus ruleset 
begins.

===References===

[1] 
https://medium.com/@DCGco/bitcoin-scaling-agreement-at-consensus-2017-133521fe9a77
[2] https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-May/014380.html
[3] https://github.com/bitcoin/bips/blob/master/bip-0148.mediawiki
[4] 
https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-March/013921.html
[5] https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-May/014399.html
[6] 
https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-February/013542.html
[7] 
https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-January/013473.html
[8] https://twitter.com/sysmannet/status/867124645279006720
[9] https://twitter.com/JihanWu/status/867139046786465792
_______________________________________________
bitcoin-dev mailing list
bitcoin-dev@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev

Reply via email to