summaryrefslogtreecommitdiff
path: root/9f/e82482a1e43c10178f55d2e64e840edb33158f
blob: 5ac5d0664bd2dd1ca13789a7c8099560ee917ba7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
Return-Path: <fresheneesz@gmail.com>
Received: from smtp4.osuosl.org (smtp4.osuosl.org [IPv6:2605:bc80:3010::137])
 by lists.linuxfoundation.org (Postfix) with ESMTP id 0A0E1C000E
 for <bitcoin-dev@lists.linuxfoundation.org>;
 Sat, 26 Jun 2021 20:22:14 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by smtp4.osuosl.org (Postfix) with ESMTP id E447E403D4
 for <bitcoin-dev@lists.linuxfoundation.org>;
 Sat, 26 Jun 2021 20:22:13 +0000 (UTC)
X-Virus-Scanned: amavisd-new at osuosl.org
X-Spam-Flag: NO
X-Spam-Score: -2.098
X-Spam-Level: 
X-Spam-Status: No, score=-2.098 tagged_above=-999 required=5
 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1,
 DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001,
 HTML_IMAGE_ONLY_32=0.001, HTML_MESSAGE=0.001,
 RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001]
 autolearn=ham autolearn_force=no
Authentication-Results: smtp4.osuosl.org (amavisd-new);
 dkim=pass (2048-bit key) header.d=gmail.com
Received: from smtp4.osuosl.org ([127.0.0.1])
 by localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id WxCqj_wg_xFt
 for <bitcoin-dev@lists.linuxfoundation.org>;
 Sat, 26 Jun 2021 20:22:12 +0000 (UTC)
X-Greylist: whitelisted by SQLgrey-1.8.0
Received: from mail-ej1-x62e.google.com (mail-ej1-x62e.google.com
 [IPv6:2a00:1450:4864:20::62e])
 by smtp4.osuosl.org (Postfix) with ESMTPS id 3ACF9403C7
 for <bitcoin-dev@lists.linuxfoundation.org>;
 Sat, 26 Jun 2021 20:22:12 +0000 (UTC)
Received: by mail-ej1-x62e.google.com with SMTP id ot9so20211905ejb.8
 for <bitcoin-dev@lists.linuxfoundation.org>;
 Sat, 26 Jun 2021 13:22:12 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:from:date:message-id:subject:to;
 bh=6B4Gye3tx1jwOLcyFNrw4XgUEyOCvUqh31MtmlD6slc=;
 b=ONvxXJsqb/IGrf1IjdfLCUItwc8KZQHodBNd8oUzWW7dbiStiml9lKG+AUUTDUCAM5
 rbyW7gHLnNI35ZhrauEo+j3W+cYavcUr78uKPYamllslSgqS25xahuF8upOPWG8EpDo1
 qqiuUftgrvCVaa7aLEE4FDicInOYwQIptwTemAVHQEDuDNy6+RNT+OM2oiisdIk8rtlD
 o6IOoi5d0W+rFL2ORUAXcUv5+6e/7keVsRk6Rv00pSsyMClGofP+KCWurwz4v6tn0L/v
 rvG2RwwUI8wz55wgXNgH26pefEdjQCAlHe90j8Ubh1u+OHP/1WGiqSw0LdSpvf38VExT
 WmBA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:from:date:message-id:subject:to;
 bh=6B4Gye3tx1jwOLcyFNrw4XgUEyOCvUqh31MtmlD6slc=;
 b=Whp+Yu5nPUDe+kej3o6zZhlTTTfhvjVq50Ef+jzdTvH6Te8a9mLHTRz0DPGGUZg7PO
 xfb6kUDJ45Zi73yEYN7bI+UJ3BenTQCMKmqMipmwnoB4LToThCkY0Ih6pfY+1mcjRp3z
 IledWJ8A6yusJIskPi7zkZddeY7BBdL5XuLp6fOr7w09Ml0nvupuGh6nPWrfN8dL2Gbs
 DdYRVMQiFjIZhQryB5oHwa1Nmux7YH/pIp2oEzspjSx+ioWd6nhIWpLFQaVL8W3m7j51
 KEP7FlTN4tFTTg0vh7RgxFrCXj/GR+DsJCNp10EkpxuphhXZM9JmtpJWw767e8rkiTR1
 fJVA==
X-Gm-Message-State: AOAM531ryqJqiky4B4duCxjcvT1Sf9thWJhlhRCxk36F3VwHhqvq4se5
 FEFgCabKavJ2l8vU1FNhzf7GFbtWdeQ3EL9Stce6k/BsG/w=
X-Google-Smtp-Source: ABdhPJzS3moKwamtHSJzIT7bVuiq+Zcjb9dbFY936cHNspbVL9fRYcFzccqdE5Ho9dExp3LFYDj73xeg5Ie4Zloxwcw=
X-Received: by 2002:a17:906:3b57:: with SMTP id
 h23mr17148971ejf.241.1624738929744; 
 Sat, 26 Jun 2021 13:22:09 -0700 (PDT)
MIME-Version: 1.0
From: Billy Tetrud <billy.tetrud@gmail.com>
Date: Sat, 26 Jun 2021 13:21:52 -0700
Message-ID: <CAGpPWDaq88q6Kd4tziB9G4V74PiXUg=_Nx1M_WK6dG_g3r+ruw@mail.gmail.com>
To: Bitcoin Protocol Discussion <bitcoin-dev@lists.linuxfoundation.org>
Content-Type: multipart/related; boundary="000000000000c2d91905c5b10268"
X-Mailman-Approved-At: Sat, 26 Jun 2021 20:32:39 +0000
Subject: [bitcoin-dev] Trinary Version Signaling for softfork upgrades
X-BeenThere: bitcoin-dev@lists.linuxfoundation.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Bitcoin Protocol Discussion <bitcoin-dev.lists.linuxfoundation.org>
List-Unsubscribe: <https://lists.linuxfoundation.org/mailman/options/bitcoin-dev>, 
 <mailto:bitcoin-dev-request@lists.linuxfoundation.org?subject=unsubscribe>
List-Archive: <http://lists.linuxfoundation.org/pipermail/bitcoin-dev/>
List-Post: <mailto:bitcoin-dev@lists.linuxfoundation.org>
List-Help: <mailto:bitcoin-dev-request@lists.linuxfoundation.org?subject=help>
List-Subscribe: <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>, 
 <mailto:bitcoin-dev-request@lists.linuxfoundation.org?subject=subscribe>
X-List-Received-Date: Sat, 26 Jun 2021 20:22:14 -0000

--000000000000c2d91905c5b10268
Content-Type: multipart/alternative; boundary="000000000000c2d91705c5b10267"

--000000000000c2d91705c5b10267
Content-Type: text/plain; charset="UTF-8"

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

--000000000000c2d91705c5b10267
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Given the recent controversy=C2=A0over upgrade mechanisms=
=C2=A0for the non-controversial taproot upgrade, I have been thinking about=
 ways to solve the problems that both sides brought up. In short, BIP8 LOT=
=3Dtrue proponents make the point that lazy miners failing to upgrade in a =
timely manner slow down releases of bitcoin upgrades, and BIP9 / BIP8 LOT=
=3Dfalse proponents=C2=A0make the point that LOT=3Dtrue can lead to undesir=
able forks that might cause a lot of chaos. I believe both points are essen=
tially correct and have created <a href=3D"https://github.com/fresheneesz/b=
ip-trinary-version-signaling/blob/master/bip-trinary-version-bits.md" targe=
t=3D"_blank">a proposal</a> for soft fork upgrades that solve both problems=
.<div><div><div><br></div><div>The proposal uses trinary version signaling =
rather than binary signaling. For any particular prospective soft fork upgr=
ade, this allows for three signaling states:<br>=C2=A0</div><div>* Actively=
 support the change.</div><div>* Actively oppose the change.</div><div>* No=
t signaling (neither support or oppose). This is the default state.</div><d=
iv><br></div><div>Using this additional information, we can release non-con=
tentious upgrades much quicker (with a much lower percent of miners signali=
ng support). For contentious upgrades, miners who oppose the change are inc=
entivized to update their software to a version that can=20

actively=20

signal opposition to the change. The more opposition there is, the higher t=
he threshold necessary to lock in the upgrade. With the parameters I curren=
tly recommended in the proposal, this chart shows how much support signalin=
g would be necessary given a particular amount of active opposition signali=
ng:</div><div><br></div><div><img src=3D"cid:ii_kqaf00ua0" alt=3D"threshold=
Chart.png" width=3D"328" height=3D"359"><br></div><div>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 quick=
ly (ie if 60% of miners support the change today, its unlikely that less th=
an a majority of miners would support the change a year or two from now), a=
nd if no one is signaling opposition, chances are that the vast majority of=
 the other 40% would also eventually signal support.=C2=A0</div><div><br></=
div><div>This both gives an incentive for &quot;lazy&quot; miners to upgrad=
e 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 mu=
ch.</div><div><br></div></div></div><div>I think now is the right time to d=
iscuss new soft fork upgrade mechanisms, when there are no pressing soft fo=
rk 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.=C2=A0</div><div><br></div><div>I&#39;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.=C2=A0</div><div><b=
r></div><div>Thanks,</div><div>BT</div></div>

--000000000000c2d91705c5b10267--
--000000000000c2d91905c5b10268
Content-Type: image/png; name="thresholdChart.png"
Content-Disposition: inline; filename="thresholdChart.png"
Content-Transfer-Encoding: base64
Content-ID: <ii_kqaf00ua0>
X-Attachment-Id: ii_kqaf00ua0

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
g2ynPeQAAAAASUVORK5CYII=
--000000000000c2d91905c5b10268--