public inbox for bitcoindev@googlegroups.com
 help / color / mirror / Atom feed
* [bitcoin-dev] Trinary Version Signaling for softfork upgrades
@ 2021-06-26 20:21 Billy Tetrud
  2021-06-26 21:13 ` Luke Dashjr
  0 siblings, 1 reply; 20+ messages in thread
From: Billy Tetrud @ 2021-06-26 20:21 UTC (permalink / raw)
  To: Bitcoin Protocol Discussion


[-- Attachment #1.1: Type: text/plain, Size: 2688 bytes --]

Given the recent controversy over upgrade mechanisms for the
non-controversial taproot upgrade, I have been thinking about ways to solve
the problems that both sides brought up. In short, BIP8 LOT=true proponents
make the point that lazy miners failing to upgrade in a timely manner slow
down releases of bitcoin upgrades, and BIP9 / BIP8 LOT=false
proponents make the point that LOT=true can lead to undesirable forks that
might cause a lot of chaos. I believe both points are essentially correct
and have created a proposal
<https://github.com/fresheneesz/bip-trinary-version-signaling/blob/master/bip-trinary-version-bits.md>
for soft fork upgrades that solve both problems.

The proposal uses trinary version signaling rather than binary signaling.
For any particular prospective soft fork upgrade, this allows for three
signaling states:

* Actively support the change.
* Actively oppose the change.
* Not signaling (neither support or oppose). This is the default state.

Using this additional information, we can release non-contentious upgrades
much quicker (with a much lower percent of miners signaling support). For
contentious upgrades, miners who oppose the change are incentivized to
update their software to a version that can actively signal opposition to
the change. The more opposition there is, the higher the threshold
necessary to lock in the upgrade. With the parameters I currently
recommended in the proposal, this chart shows how much support signaling
would be necessary given a particular amount of active opposition signaling:

[image: thresholdChart.png]
If literally no one signals opposition, a 60% threshold should be
relatively safe because it is a supermajority amount that is unlikely to
change significantly very quickly (ie if 60% of miners support the change
today, its unlikely that less than a majority of miners would support the
change a year or two from now), and if no one is signaling opposition,
chances are that the vast majority of the other 40% would also eventually
signal support.

This both gives an incentive for "lazy" miners to upgrade if they actually
oppose the change while at the same time allowing these lazy miners to
remain lazy without slowing down the soft fork activation much.

I think now is the right time to discuss new soft fork upgrade mechanisms,
when there are no pressing soft fork upgrades ready to deploy. Waiting
until we need to deploy a soft fork to discuss this will only delay things
and cause contention again like it did with taproot.

I'm very curious to know what people think of this mechanism. I would
appreciate any comments here, or written as github issues on the proposal
repo itself.

Thanks,
BT

[-- Attachment #1.2: Type: text/html, Size: 3069 bytes --]

[-- Attachment #2: thresholdChart.png --]
[-- Type: image/png, Size: 11132 bytes --]

^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2021-06-30 19:43 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-26 20:21 [bitcoin-dev] Trinary Version Signaling for softfork upgrades Billy Tetrud
2021-06-26 21:13 ` Luke Dashjr
2021-06-26 21:43   ` Eric Voskuil
2021-06-26 22:05     ` Eric Voskuil
2021-06-27  8:47       ` Jorge Timón
2021-06-27  9:21         ` Eric Voskuil
2021-06-27 18:11           ` Billy Tetrud
2021-06-29  8:32             ` Jorge Timón
2021-06-29  8:44               ` Eric Voskuil
2021-06-29 17:55                 ` Luke Dashjr
2021-06-29 18:17                   ` Eric Voskuil
2021-06-29 19:28                     ` Jorge Timón
2021-06-29 19:44                       ` Eric Voskuil
2021-06-30  2:02                         ` Billy Tetrud
2021-06-30  8:55                           ` eric
2021-06-30  6:39                         ` Zac Greenwood
2021-06-30  9:16                         ` Jorge Timón
2021-06-30  9:52                           ` eric
2021-06-30 19:30                             ` Billy Tetrud
2021-06-30 19:42                               ` Billy Tetrud

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox