summaryrefslogtreecommitdiff
path: root/66/1391835d752517fdb914bbbe3afd1d681b53c9
blob: 30e4f39cb587132ee572360b0030e90fa1d6c0e5 (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
Return-Path: <sergio.d.lerner@gmail.com>
Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org
	[172.17.192.35])
	by mail.linuxfoundation.org (Postfix) with ESMTPS id 06F7FB5A
	for <bitcoin-dev@lists.linuxfoundation.org>;
	Fri, 31 Mar 2017 21:10:01 +0000 (UTC)
X-Greylist: whitelisted by SQLgrey-1.7.6
Received: from mail-qt0-f169.google.com (mail-qt0-f169.google.com
	[209.85.216.169])
	by smtp1.linuxfoundation.org (Postfix) with ESMTPS id C9654128
	for <bitcoin-dev@lists.linuxfoundation.org>;
	Fri, 31 Mar 2017 21:09:59 +0000 (UTC)
Received: by mail-qt0-f169.google.com with SMTP id x35so75676606qtc.2
	for <bitcoin-dev@lists.linuxfoundation.org>;
	Fri, 31 Mar 2017 14:09:59 -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=/2bzyWENDAyf7qbSzSU915my/CXujgGQnUYhRE7fEtE=;
	b=a28Tfq0ydnSQBrOe40DytQK3CS2XtyX6naGGjzIvB4oTVj5SBNBlPM25uu9FpVpAeW
	GlTFKswqGy2BisfVM8gWSlgi3IRDViJNHlrc/5NVezO2XR54LU3nej+z2P5F7hh34Sy4
	yU1FYpBPidbE9JcyuJXIxfr8eS4N5OsKuiWp5gIYPT0ifqAULVA2aXgqFXb8uVS3tAuQ
	h9EK1xnYI3o6Z8n0bL+GSUG/qUX9aJhaEr9kNiKMiQkw560XFeE6rOjOEvK9YRPDZu8Y
	uV8eiU6wN6J2mqk8sOgbtHlPOX6rHERKzumzY12DsNRJ7rpLj4jhuoZvrobjpXvmD8JZ
	VsnA==
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=/2bzyWENDAyf7qbSzSU915my/CXujgGQnUYhRE7fEtE=;
	b=qzZfguEyKyLW4vPOb/a9UMB3CmB1UkOMtmZul9xZK0l/2xwrFDFhUnXDJf9Gbftu9L
	ujL5Y3ltxdgrjpKMkQ5rzQ5ZfJPwrrNpLoT2ARKnlTKco/zb2bug+M/t4XDgBm4z+WhI
	bTl+NEGkLRPk1iUkOWIsIa7UaH3ex7nIvEqPrQHPI7WFNzMzkKHkiAUEwZX3qIsSLQM2
	HcEmau45sT27gGY+oU2Hm4xEFVQPKXTDQTZ5zMG/+JE6ROP8tfVFidNb6tJzTPTPZ8U3
	hj6wG8fTfhsZ6eFvB1iS0MOEuIM3ze80NFIJzIXcEEbberYhAmxlJ3at4oHho+8NW/vD
	1t1A==
X-Gm-Message-State: AFeK/H3S8e80khZyI+pOkonEUVpVYUBST9wQkW0UdScE5Y4ChmLzbKX5FWk2f1y7emoAd1TCwtws7Zz1Yb8lRg==
X-Received: by 10.200.34.144 with SMTP id f16mr5290527qta.186.1490994598748;
	Fri, 31 Mar 2017 14:09:58 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.12.170.220 with HTTP; Fri, 31 Mar 2017 14:09:18 -0700 (PDT)
From: Sergio Demian Lerner <sergio.d.lerner@gmail.com>
Date: Fri, 31 Mar 2017 18:09:18 -0300
Message-ID: <CAKzdR-oN6tGvGSb04_awCf=Jsf3wgKJN5xUhCr8G2D2W9YgJww@mail.gmail.com>
To: bitcoin-dev <bitcoin-dev@lists.linuxfoundation.org>
Content-Type: multipart/alternative; boundary=001a113f41fe6bb9e0054c0d3b1d
X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,DKIM_SIGNED,
	DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, HTML_MESSAGE,
	RCVD_IN_DNSWL_NONE, 
	RCVD_IN_SORBS_SPAM autolearn=no version=3.3.1
X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on
	smtp1.linux-foundation.org
Subject: [bitcoin-dev] Segwit2Mb - combined soft/hard fork - Request For
	Comments
X-BeenThere: bitcoin-dev@lists.linuxfoundation.org
X-Mailman-Version: 2.1.12
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: Fri, 31 Mar 2017 21:10:01 -0000

--001a113f41fe6bb9e0054c0d3b1d
Content-Type: text/plain; charset=UTF-8

Hi everyone,

Segwit2Mb is the project to merge into Bitcoin a minimal patch that aims to
untangle the current conflict between different political positions
regarding segwit activation vs. an increase of the on-chain blockchain
space through a standard block size increase. It is not a new solution, but
it should be seen more as a least common denominator.

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), but at a fixed future date.

The sole objective of this proposal is to re-unite the Bitcoin community
and avoid a cryptocurrency split. Segwit2Mb does not aim to be best
possible technical solution to solve Bitcoin technical limitations.
However, this proposal does not imply a compromise to the future
scalability or decentralization of Bitcoin, as a small increase in block
size has been proven by several core and non-core developers not to affect
Bitcoin value propositions.

In the worst case, a 2X block size increase has much lower economic impact
than the last bitcoin halving (<10%), which succeeded without problem.

On the other side, Segwit2Mb primary goal is to be minimalistic: in this
patch some choices have been made to reduce the number of lines modified in
the current Bitcoin Core state (master branch), instead of implementing the
most elegant solution. This is because I want to reduce the time it takes
for core programmers and reviewers to check the correctness of the code,
and to report and correct bugs.

The patch was built by forking the master branch of Bitcoin Core, mixing a
few lines of code from Jeff Garzik's BIP102,  and defining a second
versionbits activation bit (bit 2) for the combined activation.

The combined activation of segwit and 2Mb hard-fork nVersion bit is 2
(DEPLOYMENT_SEGWIT_AND_2MB_BLOCKS).

This means that segwit can still be activated without the 2MB hard-fork by
signaling bit 1 in nVersion  (DEPLOYMENT_SEGWIT).

The tentative lock-in and hard-fork dates are the following:

Bit 2 signaling StartTime = 1493424000; // April 29th, 2017

Bit 2 signaling Timeout = 1503964800; // August 29th, 2017

HardForkTime = 1513209600; // Thu, 14 Dec 2017 00:00:00 GMT


The hard-fork is conditional to 95% of the hashing power has approved the
segwit2mb soft-fork and the segwit soft-fork has been activated (which
should occur 2016 blocks after its lock-in time)

For more information on how soft-forks are signaled and activated, see
https://github.com/bitcoin/bips/blob/master/bip-0009.mediawiki

This means that segwit would be activated before 2Mb: this is inevitable,
as versionbits have been designed to have fixed activation periods and
thresholds for all bits. Making segwit and 2Mb fork activate together at a
delayed date would have required a major re-write of this code, which would
contradict the premise of creating a minimalistic patch. However, once
segwit is activated, the hard-fork is unavoidable.

Although I have coded a first version of the segwit2mb patch (which
modifies 120 lines of code, and adds 220 lines of testing code), I would
prefer to wait to publish the source code until more comments have been
received from the community.

To prevent worsening block verification time because of the O(N^2) hashing
problem, the simple restriction that transactions cannot be larger than 1Mb
has been kept. Therefore the worse-case of block verification time has only
doubled.

Regarding the hard-fork activation date, I want to give enough time to all
active economic nodes to upgrade. As of Fri Mar 31 2017,
https://bitnodes.21.co/nodes/ reports that 6332 out of 6955 nodes (91%)
have upgraded to post 0.12 versions. Upgrade to post 0.12 versions can be
used to identify economic active nodes, because in the 0.12 release dynamic
fees were introduced, and currently no Bitcoin automatic payment system can
operate without automatic discovery of the current fee rate. A pre-0.12
would require constant manual intervention.
Therefore I conclude that no more than 91% of the network nodes reported by
bitnodes are active economic nodes.

As Bitcoin Core 0.12 was released on February 2016, the time for this 91%
to upgrade has been around one year (under a moderate pressure of
operational problems with unconfirmed transactions).
Therefore we can expect a similar or lower time to upgrade for a hard-fork,
after developers have discussed and approved the patch, and it has been
reviewed and merged and 95% of the hashing power has signaled for it (the
pressure not to upgrade being a complete halt of the operations). However I
suggest that we discuss the hard-fork date and delay it if there is a real
need to.

Currently time works against the Bitcoin community, and so is delaying a
compromise solution. Most of the community agree that halting the
innovation for several years is a very bad option.

After the comments collected by the community, a BIP will be written
describing the resulting proposal details.

If segwit2mb locks-in, before hard-fork occurs all bitcoin nodes should be
updated to a Segwit2Mb enabled node to prevent them to be forked-away in a
chain with almost no hashing-power.

The proof of concept patch was made for Bitcoin Core but should be easily
ported to other Bitcoin protocol implementations that already support
versionbits. Lightweight (SPV) wallets should not be affected as they
generally do not check the block size.

I personally want to see the Lightning Network in action this year, use the
non-malleability features in segwit, see the community discussing other
exciting soft-forks in the scaling roadmap, Schnorr sigs, drivechains and
MAST.

I want to see miners, developers and industry side-by-side pushing Bitcoin
forward, to increase the value of Bitcoin and prevent high transaction fees
to put out of business use-cases that could have high positive social
impact.

I believe in the strength of a unified Bitcoin community. If you're a
developer, please give your opinion, suggest changes, audit it, and take a
stand with me to unlock the current Bitcoin deadlock.

Contributions to the segwit2mb project are welcomed and awaited. The only
limitation is to stick to the principle that the patch should be as simple
to audit as possible. As an example, I wouldn't feel confident if the patch
modified more than ~150 lines of code.

Improvements unrelated to a 2 Mb increase or segwit, as beneficial as it
may be to Bitcoin, should not be part of segwit2Mb.

This proposal should not prevent other consensus proposals to be
simultaneously merged: segwit2mb is a last resort solution in case we can
not reach consensus on anything better.

Again, the proposal is only a starting point: community feedback is
expected and welcomed.

Regards,
Sergio Demian Lerner

--001a113f41fe6bb9e0054c0d3b1d
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hi everyone,<div><br></div><div>Segwit2Mb is the project t=
o merge into Bitcoin a minimal patch that aims to untangle the current conf=
lict between different political positions regarding segwit activation vs. =
an increase of the on-chain blockchain space through a standard block size =
increase. It is not a new solution, but it should be seen more as a least c=
ommon denominator.</div><div><br>Segwit2Mb combines segwit as it is today i=
n Bitcoin 0.14+ with a 2MB block size hard-fork activated ONLY if segwit ac=
tivates (95% of miners signaling), but at a fixed future date.<br><br>The s=
ole objective of this proposal is to re-unite the Bitcoin community and avo=
id a cryptocurrency split. Segwit2Mb does not aim to be best possible techn=
ical solution to solve Bitcoin technical limitations. However, this proposa=
l does not imply a compromise to the future scalability or decentralization=
 of Bitcoin, as a small increase in block size has been proven by several c=
ore and non-core developers not to affect Bitcoin value propositions.=C2=A0=
</div><div><br></div><div>In the worst case, a 2X block size increase has m=
uch lower economic impact than the last bitcoin halving (&lt;10%), which su=
cceeded without problem.</div><div><br>On the other side, Segwit2Mb primary=
 goal is to be minimalistic: in this patch some choices have been made to r=
educe the number of lines modified in the current Bitcoin Core state (maste=
r branch), instead of implementing the most elegant solution. This is becau=
se I want to reduce the time it takes for core programmers and reviewers to=
 check the correctness of the code, and to report and correct bugs.<br><br>=
The patch was built by forking the master branch of Bitcoin Core, mixing a =
few lines of code from Jeff Garzik&#39;s BIP102, =C2=A0and defining a secon=
d versionbits activation bit (bit 2) for the combined activation.<br><br>Th=
e combined activation of segwit and 2Mb hard-fork nVersion bit is 2 (DEPLOY=
MENT_SEGWIT_AND_2MB_BLOCKS).<br><br>This means that segwit can still be act=
ivated without the 2MB hard-fork by signaling bit 1 in nVersion =C2=A0(DEPL=
OYMENT_SEGWIT).<br><br>The tentative lock-in and hard-fork dates are the fo=
llowing:<br><br>Bit 2 signaling StartTime =3D 1493424000; // April 29th, 20=
17<br><br>Bit 2 signaling Timeout =3D 1503964800; // August 29th, 2017<br><=
br>HardForkTime =3D 1513209600; // Thu, 14 Dec 2017 00:00:00 GMT<br><br><br=
>The hard-fork is conditional to 95% of the hashing power has approved the =
segwit2mb soft-fork and the segwit soft-fork has been activated (which shou=
ld occur 2016 blocks after its lock-in time)<br><br>For more information on=
 how soft-forks are signaled and activated, see <a href=3D"https://github.c=
om/bitcoin/bips/blob/master/bip-0009.mediawiki">https://github.com/bitcoin/=
bips/blob/master/bip-0009.mediawiki</a><br><br>This means that segwit would=
 be activated before 2Mb: this is inevitable, as versionbits have been desi=
gned to have fixed activation periods and thresholds for all bits. Making s=
egwit and 2Mb fork activate together at a delayed date would have required =
a major re-write of this code, which would contradict the premise of creati=
ng a minimalistic patch. However, once segwit is activated, the hard-fork i=
s unavoidable.<br><br>Although I have coded a first version of the segwit2m=
b patch (which modifies 120 lines of code, and adds 220 lines of testing co=
de), I would prefer to wait to publish the source code until more comments =
have been received from the community.<br><br>To prevent worsening block ve=
rification time because of the O(N^2) hashing problem, the simple restricti=
on that transactions cannot be larger than 1Mb has been kept. Therefore the=
 worse-case of block verification time has only doubled.<br><br>Regarding t=
he hard-fork activation date, I want to give enough time to all active econ=
omic nodes to upgrade. As of Fri Mar 31 2017, <a href=3D"https://bitnodes.2=
1.co/nodes/">https://bitnodes.21.co/nodes/</a> reports that 6332 out of 695=
5 nodes (91%) have upgraded to post 0.12 versions. Upgrade to post 0.12 ver=
sions can be used to identify economic active nodes, because in the 0.12 re=
lease dynamic fees were introduced, and currently no Bitcoin automatic paym=
ent system can operate without automatic discovery of the current fee rate.=
 A pre-0.12 would require constant manual intervention.=C2=A0</div><div>The=
refore I conclude that no more than 91% of the network nodes reported by bi=
tnodes are active economic nodes.<br><br>As Bitcoin Core 0.12 was released =
on February 2016, the time for this 91% to upgrade has been around one year=
 (under a moderate pressure of operational problems with unconfirmed transa=
ctions).<br>Therefore we can expect a similar or lower time to upgrade for =
a hard-fork, after developers have discussed and approved the patch, and it=
 has been reviewed and merged and 95% of the hashing power has signaled for=
 it (the pressure not to upgrade being a complete halt of the operations). =
However I suggest that we discuss the hard-fork date and delay it if there =
is a real need to.<br><br>Currently time works against the Bitcoin communit=
y, and so is delaying a compromise solution. Most of the community agree th=
at halting the innovation for several years is a very bad option.<br><br>Af=
ter the comments collected by the community, a BIP will be written describi=
ng the resulting proposal details.<br><br>If segwit2mb locks-in, before har=
d-fork occurs all bitcoin nodes should be updated to a Segwit2Mb enabled no=
de to prevent them to be forked-away in a chain with almost no hashing-powe=
r.<br><br>The proof of concept patch was made for Bitcoin Core but should b=
e easily ported to other Bitcoin protocol implementations that already supp=
ort versionbits. Lightweight (SPV) wallets should not be affected as they g=
enerally do not check the block size.<br><br>I personally want to see the L=
ightning Network in action this year, use the non-malleability features in =
segwit, see the community discussing other exciting soft-forks in the scali=
ng roadmap, Schnorr sigs, drivechains and MAST.<br><br>I want to see miners=
, developers and industry side-by-side pushing Bitcoin forward, to increase=
 the value of Bitcoin and prevent high transaction fees to put out of busin=
ess use-cases that could have high positive social impact.<br><br>I believe=
 in the strength of a unified Bitcoin community. If you&#39;re a developer,=
 please give your opinion, suggest changes, audit it, and take a stand with=
 me to unlock the current Bitcoin deadlock.<br><br>Contributions to the seg=
wit2mb project are welcomed and awaited. The only limitation is to stick to=
 the principle that the patch should be as simple to audit as possible. As =
an example, I wouldn&#39;t feel confident if the patch modified more than ~=
150 lines of code.<br><br>Improvements unrelated to a 2 Mb increase or segw=
it, as beneficial as it may be to Bitcoin, should not be part of segwit2Mb.=
<br><br>This proposal should not prevent other consensus proposals to be si=
multaneously merged: segwit2mb is a last resort solution in case we can not=
 reach consensus on anything better.<br><br>Again, the proposal is only a s=
tarting point: community feedback is expected and welcomed.</div><div><br><=
/div><div>Regards,=C2=A0</div><div>Sergio Demian Lerner</div></div>

--001a113f41fe6bb9e0054c0d3b1d--