BUIP057: (passed) Add BIP135 support (BIP9+)

SanchoPanza

Member
Mar 29, 2017
47
65
BUIP057: Add BIP135 support (BIP9+)

Proposer: @SanchoPanza
Submitted: 2017-05-14
edit: sponsored by @sickpig

This draft BUIP proposes to add client support for BIP135 [1] .
BIP135 is a backwards-compatible generalization of BIP9 that allows more flexible thresholds and grace periods.

The motivation is described here in the BIP, as well as in the discussion in [2] .

A reference implementation [3] is available, based on BU.
As an implementation detail, it extracts the versionbits configuration into a text file which can easily be updated.

References:

[1] https://github.com/bitcoin/bips/blob/master/bip-0135.mediawiki
[2] https://bitco.in/forum/threads/bip9-generalized-version-bits-voting-bip-genvbvoting.1968/#post-37014
[3] https://github.com/BitcoinUnlimited/BitcoinUnlimited/pull/458

(edit by solex: added title).
 
Last edited by a moderator:
  • Like
Reactions: Bloomie

SanchoPanza

Member
Mar 29, 2017
47
65
I would like to ask if any BU member is prepared to sponsor this BUIP.
If it gets a sponsor, I would then request a BUIP number assignment.

... I should perhaps emphasize here that BIP135 (and BIP9 before) is something intended for coordination of general forks proposed by some development groups in Bitcoin. It is not intended solely as an aid to resolve the current block size cap debate, but as a long-lasting replacement of BIP9.
It is also independent of other proposals (such as EB+threshold signaling) and can be used at the same time (all of these can feed into a yes/no activation decision for a proposed deployment).
 
Last edited:

AdrianX

Well-Known Member
Aug 28, 2015
2,097
5,797
bitco.in
thanks @SanchoPanza I have a few questions:

Does this make "developer defined consensus" for changes to the bitcoin protocol easier for developers?

Why do you think changes should be easier to deploy?

What are the positive impacts of making changes easier for developers in your opinion?

What are the negative implications of making changes to the bitcoin protocol easier for developers?

Do you see any way a state sponsored mining facility could benefit from this BIP in a way that gave them an advantage over rule changes?

What incentive or economic impacts of such a BIP have you explored?
 

SanchoPanza

Member
Mar 29, 2017
47
65
@AdrianX :
Does this make "developer defined consensus" for changes to the bitcoin protocol easier for developers?
Developers can propose changes to the protocol as usual, but BIP9 / BIP135 gives them a framework within which to express the deployment parts, and so reduces the need for developers to re-invent a fairly boring wheel over and over.

It still requires miners (hashpower) to signal for activating the changes.

The easiest protocol change for a developer is one where they do not worry at all about activating in a synchronized way. To take a simple example - just change the "1" into a "2" , compile and run.

BIP9 and similar schemes exist because developers realize that activation of new rules depends on hashpower.
Why do you think changes should be easier to deploy?
Today, if you wish to safely deploy a hard fork with e.g. a supermajority like 75% (like Bitcoin Classic used to have for its proposed 2MB fork), as a developer you have a few poor choices:

a) allocate a bit that's not used in the BIP9 "standard machinery", and implement your own percentage threshold and grace period

b) override one of BIP9 bits and the explicit 95% threshold on it, violating one of the more or less accepted specifications of Bitcoin

c) implement some signaling completely outside the versionbits, or use something like a fixed height threshold or some other criteria that you derive from the chain state

None of these are really great options - they add complication, often without good technical reason.

I except some novel forms of signaling involving coordination on the parameters of the deployment, e.g. the blocksize coordination proposals like EC, BUIP055, BUIP056 etc. I think these are good developments to progress toward a rapid resolution on that front.
What are the positive impacts of making changes easier for developers in your opinion?
A common deployment activation framework like BIP135 reduces the need for custom code that is mostly one-off and must often be thrown away after a deployment activates, otherwise it results in code bloat. Less custom code means less opportunity for costly activation errors due to slightly different, perhaps not always well-tested activation implementations.

The "one-size-fits-all" approach of BIP9 has clearly not worked for a simple block size upgrade nor even SegWit, resulting in a plethora of different response proposals on both sides (EB+AD, BIP100, UASF etc.)

I don't think this is necessarily a good development - the more activation methods become used, the more complex every implementation needs to become if it wants to keep in sync with deployment activations.

Developers should be able to offer Bitcoin changes as hard forks. Soft-forks only results in potential for more coercion through miners. Developers need to maintain and evolve Bitcoin, even if it is just to scale it technologically without changing anything else about its fundamentals.
What are the negative implications of making changes to the bitcoin protocol easier for developers?
More choice can be confusing. That is the only downside I see.
I'd rather face that choice though, than see the currency decline due to inability to progress technically.
Do you see any way a state sponsored mining facility could benefit from this BIP in a way that gave them an advantage over rule changes?
No - this BIP still requires deployments (bits) to be announced in order for the market to support them, and does not change anything about the fundamental Nakamoto consensus.
Also, it preserves use of the versionbits field - precluding its use in overt AsicBoost if that's what you are referring to.
What incentive or economic impacts of such a BIP have you explored?
I've observed the ability of other cryptocurrencies to scale and upgrade through hard forks.

Their recent relative economic success compared to Bitcoin's observable market share decline have led me to assess that Bitcoin needs a BIP which provides an expressed way for hard forks to also happen (not saying soft forks are always bad - sometimes I think they are suitable).
 
Last edited:
  • Like
Reactions: sickpig

solex

Moderator
Staff member
Aug 22, 2015
1,558
4,693
Updated title to BUIP057 to reflect sponsorship by @sickpig
 

sickpig

Active Member
Aug 28, 2015
926
2,541
@SanchoPanza AFAICT failure is due to formatting issue.

Since the last submission you made we introduce an automatic check on the formatting of cpp and header files.

To perform apply the linter automatically just add this snippet to your .git/config


[filter "bitcoin-clang-format"]
clean = "contrib/devtools/clang-format.py format-stdout-if-wanted clang-format-3.8 %f"
smudge = cat
 
  • Like
Reactions: SanchoPanza

SanchoPanza

Member
Mar 29, 2017
47
65
@sickpig after I fixed the formatting the tests passed ok, thanks.

@theZerg please let me know when you plan to integrate this BUIP, - I will rebase a final time shortly before that, since there is no purpose to rebasing without a plan to integrate it.
 
  • Like
Reactions: torusJKL