summaryrefslogtreecommitdiff
path: root/e9/8b0cce7dd2b7bb03a41096053d5a64cff1c572
blob: cd4474e82c2786d7bed7d2ffdcdbd6c988d50936 (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
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
Return-Path: <mark@friedenbach.org>
Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org
	[172.17.192.35])
	by mail.linuxfoundation.org (Postfix) with ESMTPS id 19014BC7
	for <bitcoin-dev@lists.linuxfoundation.org>;
	Mon, 27 Nov 2017 21:06:42 +0000 (UTC)
X-Greylist: whitelisted by SQLgrey-1.7.6
Received: from mail-pl0-f43.google.com (mail-pl0-f43.google.com
	[209.85.160.43])
	by smtp1.linuxfoundation.org (Postfix) with ESMTPS id D3CB614F
	for <bitcoin-dev@lists.linuxfoundation.org>;
	Mon, 27 Nov 2017 21:06:40 +0000 (UTC)
Received: by mail-pl0-f43.google.com with SMTP id f6so9232756pln.12
	for <bitcoin-dev@lists.linuxfoundation.org>;
	Mon, 27 Nov 2017 13:06:40 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=friedenbach-org.20150623.gappssmtp.com; s=20150623;
	h=from:message-id:mime-version:subject:date:in-reply-to:cc:to
	:references; bh=Roh4lHs0D0vm91/LY0wnNPkAVF/lzi8/OlKC/+aYPFs=;
	b=LQ/AnLi+nnAd6mOSUFXOLIvuF6VlSHwPtyoLMO4TdqnV+rzZtCcJkTruYnOAb8e3k1
	+Ayq99dz4zrnkAjaMAqBZaEKuxGE+MwaleglkwOM9qyi2cMRMDSqxAN5ZOgMowSpULjh
	YuA9uanMipOYny3IMhZ6hvSKxGgzZwdzGH10kZ8tNtRRcQowhkYM6hgmbJzvSWobRUqu
	tW7gnGQpAnkHsj71pGKCmPUED+WjAiP8OTKbVvyvv0fXTWkMIRyKKLLd6FmD2uRzgEr9
	xJsajqvR+w7PVI+Mja6vjvdaJzaHUyE7iBQ0TcrcOVV+nzthbaBWMwZBbYkSfAcMhW2p
	S9kA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20161025;
	h=x-gm-message-state:from:message-id:mime-version:subject:date
	:in-reply-to:cc:to:references;
	bh=Roh4lHs0D0vm91/LY0wnNPkAVF/lzi8/OlKC/+aYPFs=;
	b=IbXZC0pK5YcXYK5dhH51+oem9lrKsiIUOUjW5TaS0fshOsUHt6oWCLqlKFyqVVBFnj
	106gI+zFgZJenZr0uz9aV33WCCOez5VGWWKNCLQDy9pswTN7s5MPVIK8tZSKi3bqbC7D
	l01txGSzLH/QheyDMX3rKVN11D26hesZT1A/mABCePP+spWrmCSqGQgoUD3fMhCKn2zK
	dzP/4ik/PFJG4Eh4DkWqXmlPyG5Pko8sdrkwdV0WwVKt1w5nj2m4eCIHjni7YxpZpJGs
	Nuzp6fzV2TNG9p9amZxitqh19Ho1LqC/xro8CYffKtqxum5ZJaHi6T4UPiCYanIu689l
	ijJw==
X-Gm-Message-State: AJaThX5w0Tkm+rg5aDg/XWgt6bBZrXhwu1lnptmf1QOPeVUz0nz/oAP+
	EvCCXOLtiaTuo0M/k4cjC0Iq3WzkzQY=
X-Google-Smtp-Source: AGs4zMZMxLbub9rPZ/rSM8oqEOokmk/Uv92B6xxJzs0MkXr/s6bUQM6+Brt69QTj6xh5A1+a3cc9bg==
X-Received: by 10.84.151.69 with SMTP id i63mr39084530pli.61.1511816800215;
	Mon, 27 Nov 2017 13:06:40 -0800 (PST)
Received: from ?IPv6:2601:647:4600:9c66:d9f8:1b52:54ed:ee22?
	([2601:647:4600:9c66:d9f8:1b52:54ed:ee22])
	by smtp.gmail.com with ESMTPSA id
	w73sm45307275pfd.86.2017.11.27.13.06.39
	(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Mon, 27 Nov 2017 13:06:39 -0800 (PST)
From: Mark Friedenbach <mark@friedenbach.org>
Message-Id: <44B74F02-D3D6-47B9-976E-A72042E5C84B@friedenbach.org>
Content-Type: multipart/alternative;
	boundary="Apple-Mail=_F8A26339-DF8B-4C5F-A071-51C2E85D7F16"
Mime-Version: 1.0 (Mac OS X Mail 11.1 \(3445.4.7\))
Date: Mon, 27 Nov 2017 13:06:35 -0800
In-Reply-To: <56ca1248-6427-46f7-1645-84349cc8facc@mattcorallo.com>
To: Matt Corallo <lf-lists@mattcorallo.com>
References: <53A587C3-DAC1-4055-875F-96B61717ACE6@xbt.hk>
	<081A517B-B730-43AB-9D4E-4F696EFD91A3@friedenbach.org>
	<56ca1248-6427-46f7-1645-84349cc8facc@mattcorallo.com>
X-Mailer: Apple Mail (2.3445.4.7)
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED,
	DKIM_VALID, HTML_MESSAGE, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1
X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on
	smtp1.linux-foundation.org
Cc: Bitcoin Protocol Discussion <bitcoin-dev@lists.linuxfoundation.org>
Subject: Re: [bitcoin-dev] Making OP_CODESEPARATOR and FindAndDelete in
 non-segwit scripts non-standard
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: Mon, 27 Nov 2017 21:06:42 -0000


--Apple-Mail=_F8A26339-DF8B-4C5F-A071-51C2E85D7F16
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=utf-8

It is relevant to note that BIP 117 makes an insecure form of =
CODESEPARATOR delegation possible, which could be made secure if some =
sort of CHECKSIGFROMSTACK opcode is added at a later point in time. It =
is not IMHO a very elegant way to achieve delegation, however, so I hope =
that one way or another this could be resolved quickly so it doesn=E2=80=99=
t hold up either one of those valuable additions.

I have no objections to making them nonstandard, or even to make them =
invalid if someone with a better grasp of history can attest that =
CODESEPARATOR was known to be entirely useless before the introduction =
of P2SH=E2=80=94not the same as saying it was useless, but that it was =
widely known to not accomplish what a early-days script author might =
think it was doing=E2=80=94and the UTXO set contains no scriptPubKeys =
making use of the opcode, even from the early days. Although a small =
handful could be special cased, if they exist.

> On Nov 27, 2017, at 8:33 AM, Matt Corallo <lf-lists@mattcorallo.com> =
wrote:
>=20
> I strongly disagree here - we don't only soft-fork out transactions =
that
> are "fundamentally insecure", that would be significantly too
> restrictive. We have generally been willing to soft-fork out things
> which clearly fall outside of best-practices, especially rather
> "useless" fields in the protocol eg soft-forking behavior into =
OP_NOPs,
> soft-forking behavior into nSequence, etc.
>=20
> As a part of setting clear best-practices, making things non-standard =
is
> the obvious step, though there has been active discussion of
> soft-forking out FindAndDelete and OP_CODESEPARATOR for years now. I
> obviously do not claim that we should be proposing a soft-fork to
> blacklist FindAndDelete and OP_CODESEPARATOR usage any time soon, and
> assume that it would take at least a year or three from when it was =
made
> non-standard to when a soft-fork to finally remove them was proposed.
> This should be more than sufficient time for folks using such weird =
(and
> largely useless) parts of the protocol to object, which should be
> sufficient to reconsider such a soft-fork.
>=20
> Independently, making them non-standard is a good change on its own, =
and
> if nothing else should better inform discussion about the possibility =
of
> anyone using these things.
>=20
> Matt
>=20
> On 11/15/17 14:54, Mark Friedenbach via bitcoin-dev wrote:
>> As good of an idea as it may or may not be to remove this feature =
from
>> the code base, actually doing so would be crossing a boundary that we
>> have not previously been willing to do except under extraordinary
>> duress. The nature of bitcoin is such that we do not know and cannot
>> know what transactions exist out there pre-signed and making use of
>> these features.
>>=20
>> It may be a good idea to make these features non standard to further
>> discourage their use, but I object to doing so with the justification =
of
>> eventually disabling them for all transactions. Taking that step has =
the
>> potential of destroying value and is something that we have only done =
in
>> the past either because we didn=E2=80=99t understand forks and best =
practices
>> very well, or because the features (now disabled) were fundamentally
>> insecure and resulted in other people=E2=80=99s coins being =
vulnerable. This
>> latter concern does not apply here as far as I=E2=80=99m aware.
>>=20
>> On Nov 15, 2017, at 8:02 AM, Johnson Lau via bitcoin-dev
>> <bitcoin-dev@lists.linuxfoundation.org
>> <mailto:bitcoin-dev@lists.linuxfoundation.org =
<mailto:bitcoin-dev@lists.linuxfoundation.org>>> wrote:
>>=20
>>> In https://github.com/bitcoin/bitcoin/pull/11423 I propose to
>>> make OP_CODESEPARATOR and FindAndDelete in non-segwit scripts =
non-standard
>>>=20
>>> I think FindAndDelete() is one of the most useless and complicated
>>> functions in the script language. It is omitted from segwit =
(BIP143),
>>> but we still need to support it in non-segwit scripts. Actually,
>>> FindAndDelete() would only be triggered in some weird edge cases =
like
>>> using out-of-range SIGHASH_SINGLE.
>>>=20
>>> Non-segwit scripts also use a FindAndDelete()-like function to =
remove
>>> OP_CODESEPARATOR from scriptCode. Note that in BIP143, only executed
>>> OP_CODESEPARATOR are removed so it doesn=E2=80=99t have the
>>> FindAndDelete()-like function. OP_CODESEPARATOR in segwit scripts =
are
>>> useful for Tumblebit so it is not disabled in this proposal
>>>=20
>>> By disabling both, it guarantees that scriptCode serialized inside
>>> SignatureHash() must be constant
>>>=20
>>> If we use a softfork to remove FindAndDelete() and OP_CODESEPARATOR
>>> from non-segwit scripts, we could completely remove FindAndDelete()
>>> from the consensus code later by whitelisting all blocks before the
>>> softfork block. The first step is to make them non-standard in the
>>> next release.
>>>=20
>>>=20
>>> =20
>>> _______________________________________________
>>> bitcoin-dev mailing list
>>> bitcoin-dev@lists.linuxfoundation.org =
<mailto:bitcoin-dev@lists.linuxfoundation.org>
>>> <mailto:bitcoin-dev@lists.linuxfoundation.org =
<mailto:bitcoin-dev@lists.linuxfoundation.org>>
>>> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev =
<https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>
>>=20
>>=20
>> _______________________________________________
>> bitcoin-dev mailing list
>> bitcoin-dev@lists.linuxfoundation.org =
<mailto:bitcoin-dev@lists.linuxfoundation.org>
>> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev =
<https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>

--Apple-Mail=_F8A26339-DF8B-4C5F-A071-51C2E85D7F16
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=utf-8

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html; =
charset=3Dutf-8"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; line-break: after-white-space;" class=3D"">It =
is relevant to note that BIP 117 makes an insecure form of CODESEPARATOR =
delegation possible, which could be made secure if some sort of =
CHECKSIGFROMSTACK opcode is added at a later point in time. It is not =
IMHO a very elegant way to achieve delegation, however, so I hope that =
one way or another this could be resolved quickly so it doesn=E2=80=99t =
hold up either one of those valuable additions.<div class=3D""><br =
class=3D""></div><div class=3D"">I have no objections to making them =
nonstandard, or even to make them invalid if someone with a better grasp =
of history can attest that CODESEPARATOR was known to be entirely =
useless before the introduction of P2SH=E2=80=94not the same as saying =
it was useless, but that it was widely known to not accomplish what a =
early-days script author might think it was doing=E2=80=94and the UTXO =
set contains no scriptPubKeys making use of the opcode, even from the =
early days. Although a small handful could be special cased, if they =
exist.</div><div class=3D""><div><br class=3D""><blockquote type=3D"cite" =
class=3D""><div class=3D"">On Nov 27, 2017, at 8:33 AM, Matt Corallo =
&lt;<a href=3D"mailto:lf-lists@mattcorallo.com" =
class=3D"">lf-lists@mattcorallo.com</a>&gt; wrote:</div><br =
class=3D"Apple-interchange-newline"><div class=3D""><span =
style=3D"font-family: Helvetica; font-size: 12px; font-style: normal; =
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; =
display: inline !important;" class=3D"">I strongly disagree here - we =
don't only soft-fork out transactions that</span><br style=3D"font-family:=
 Helvetica; font-size: 12px; font-style: normal; font-variant-caps: =
normal; font-weight: normal; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=3D""><span =
style=3D"font-family: Helvetica; font-size: 12px; font-style: normal; =
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; =
display: inline !important;" class=3D"">are "fundamentally insecure", =
that would be significantly too</span><br style=3D"font-family: =
Helvetica; font-size: 12px; font-style: normal; font-variant-caps: =
normal; font-weight: normal; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=3D""><span =
style=3D"font-family: Helvetica; font-size: 12px; font-style: normal; =
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; =
display: inline !important;" class=3D"">restrictive. We have generally =
been willing to soft-fork out things</span><br style=3D"font-family: =
Helvetica; font-size: 12px; font-style: normal; font-variant-caps: =
normal; font-weight: normal; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=3D""><span =
style=3D"font-family: Helvetica; font-size: 12px; font-style: normal; =
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; =
display: inline !important;" class=3D"">which clearly fall outside of =
best-practices, especially rather</span><br style=3D"font-family: =
Helvetica; font-size: 12px; font-style: normal; font-variant-caps: =
normal; font-weight: normal; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=3D""><span =
style=3D"font-family: Helvetica; font-size: 12px; font-style: normal; =
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; =
display: inline !important;" class=3D"">"useless" fields in the protocol =
eg soft-forking behavior into OP_NOPs,</span><br style=3D"font-family: =
Helvetica; font-size: 12px; font-style: normal; font-variant-caps: =
normal; font-weight: normal; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=3D""><span =
style=3D"font-family: Helvetica; font-size: 12px; font-style: normal; =
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; =
display: inline !important;" class=3D"">soft-forking behavior into =
nSequence, etc.</span><br style=3D"font-family: Helvetica; font-size: =
12px; font-style: normal; font-variant-caps: normal; font-weight: =
normal; letter-spacing: normal; text-align: start; text-indent: 0px; =
text-transform: none; white-space: normal; word-spacing: 0px; =
-webkit-text-stroke-width: 0px;" class=3D""><br style=3D"font-family: =
Helvetica; font-size: 12px; font-style: normal; font-variant-caps: =
normal; font-weight: normal; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=3D""><span =
style=3D"font-family: Helvetica; font-size: 12px; font-style: normal; =
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; =
display: inline !important;" class=3D"">As a part of setting clear =
best-practices, making things non-standard is</span><br =
style=3D"font-family: Helvetica; font-size: 12px; font-style: normal; =
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" =
class=3D""><span style=3D"font-family: Helvetica; font-size: 12px; =
font-style: normal; font-variant-caps: normal; font-weight: normal; =
letter-spacing: normal; text-align: start; text-indent: 0px; =
text-transform: none; white-space: normal; word-spacing: 0px; =
-webkit-text-stroke-width: 0px; float: none; display: inline =
!important;" class=3D"">the obvious step, though there has been active =
discussion of</span><br style=3D"font-family: Helvetica; font-size: =
12px; font-style: normal; font-variant-caps: normal; font-weight: =
normal; letter-spacing: normal; text-align: start; text-indent: 0px; =
text-transform: none; white-space: normal; word-spacing: 0px; =
-webkit-text-stroke-width: 0px;" class=3D""><span style=3D"font-family: =
Helvetica; font-size: 12px; font-style: normal; font-variant-caps: =
normal; font-weight: normal; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: =
inline !important;" class=3D"">soft-forking out FindAndDelete and =
OP_CODESEPARATOR for years now. I</span><br style=3D"font-family: =
Helvetica; font-size: 12px; font-style: normal; font-variant-caps: =
normal; font-weight: normal; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=3D""><span =
style=3D"font-family: Helvetica; font-size: 12px; font-style: normal; =
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; =
display: inline !important;" class=3D"">obviously do not claim that we =
should be proposing a soft-fork to</span><br style=3D"font-family: =
Helvetica; font-size: 12px; font-style: normal; font-variant-caps: =
normal; font-weight: normal; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=3D""><span =
style=3D"font-family: Helvetica; font-size: 12px; font-style: normal; =
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; =
display: inline !important;" class=3D"">blacklist FindAndDelete and =
OP_CODESEPARATOR usage any time soon, and</span><br style=3D"font-family: =
Helvetica; font-size: 12px; font-style: normal; font-variant-caps: =
normal; font-weight: normal; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=3D""><span =
style=3D"font-family: Helvetica; font-size: 12px; font-style: normal; =
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; =
display: inline !important;" class=3D"">assume that it would take at =
least a year or three from when it was made</span><br =
style=3D"font-family: Helvetica; font-size: 12px; font-style: normal; =
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" =
class=3D""><span style=3D"font-family: Helvetica; font-size: 12px; =
font-style: normal; font-variant-caps: normal; font-weight: normal; =
letter-spacing: normal; text-align: start; text-indent: 0px; =
text-transform: none; white-space: normal; word-spacing: 0px; =
-webkit-text-stroke-width: 0px; float: none; display: inline =
!important;" class=3D"">non-standard to when a soft-fork to finally =
remove them was proposed.</span><br style=3D"font-family: Helvetica; =
font-size: 12px; font-style: normal; font-variant-caps: normal; =
font-weight: normal; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=3D""><span =
style=3D"font-family: Helvetica; font-size: 12px; font-style: normal; =
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; =
display: inline !important;" class=3D"">This should be more than =
sufficient time for folks using such weird (and</span><br =
style=3D"font-family: Helvetica; font-size: 12px; font-style: normal; =
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" =
class=3D""><span style=3D"font-family: Helvetica; font-size: 12px; =
font-style: normal; font-variant-caps: normal; font-weight: normal; =
letter-spacing: normal; text-align: start; text-indent: 0px; =
text-transform: none; white-space: normal; word-spacing: 0px; =
-webkit-text-stroke-width: 0px; float: none; display: inline =
!important;" class=3D"">largely useless) parts of the protocol to =
object, which should be</span><br style=3D"font-family: Helvetica; =
font-size: 12px; font-style: normal; font-variant-caps: normal; =
font-weight: normal; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=3D""><span =
style=3D"font-family: Helvetica; font-size: 12px; font-style: normal; =
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; =
display: inline !important;" class=3D"">sufficient to reconsider such a =
soft-fork.</span><br style=3D"font-family: Helvetica; font-size: 12px; =
font-style: normal; font-variant-caps: normal; font-weight: normal; =
letter-spacing: normal; text-align: start; text-indent: 0px; =
text-transform: none; white-space: normal; word-spacing: 0px; =
-webkit-text-stroke-width: 0px;" class=3D""><br style=3D"font-family: =
Helvetica; font-size: 12px; font-style: normal; font-variant-caps: =
normal; font-weight: normal; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=3D""><span =
style=3D"font-family: Helvetica; font-size: 12px; font-style: normal; =
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; =
display: inline !important;" class=3D"">Independently, making them =
non-standard is a good change on its own, and</span><br =
style=3D"font-family: Helvetica; font-size: 12px; font-style: normal; =
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" =
class=3D""><span style=3D"font-family: Helvetica; font-size: 12px; =
font-style: normal; font-variant-caps: normal; font-weight: normal; =
letter-spacing: normal; text-align: start; text-indent: 0px; =
text-transform: none; white-space: normal; word-spacing: 0px; =
-webkit-text-stroke-width: 0px; float: none; display: inline =
!important;" class=3D"">if nothing else should better inform discussion =
about the possibility of</span><br style=3D"font-family: Helvetica; =
font-size: 12px; font-style: normal; font-variant-caps: normal; =
font-weight: normal; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=3D""><span =
style=3D"font-family: Helvetica; font-size: 12px; font-style: normal; =
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; =
display: inline !important;" class=3D"">anyone using these =
things.</span><br style=3D"font-family: Helvetica; font-size: 12px; =
font-style: normal; font-variant-caps: normal; font-weight: normal; =
letter-spacing: normal; text-align: start; text-indent: 0px; =
text-transform: none; white-space: normal; word-spacing: 0px; =
-webkit-text-stroke-width: 0px;" class=3D""><br style=3D"font-family: =
Helvetica; font-size: 12px; font-style: normal; font-variant-caps: =
normal; font-weight: normal; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=3D""><span =
style=3D"font-family: Helvetica; font-size: 12px; font-style: normal; =
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; =
display: inline !important;" class=3D"">Matt</span><br =
style=3D"font-family: Helvetica; font-size: 12px; font-style: normal; =
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=3D""><br=
 style=3D"font-family: Helvetica; font-size: 12px; font-style: normal; =
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" =
class=3D""><span style=3D"font-family: Helvetica; font-size: 12px; =
font-style: normal; font-variant-caps: normal; font-weight: normal; =
letter-spacing: normal; text-align: start; text-indent: 0px; =
text-transform: none; white-space: normal; word-spacing: 0px; =
-webkit-text-stroke-width: 0px; float: none; display: inline =
!important;" class=3D"">On 11/15/17 14:54, Mark Friedenbach via =
bitcoin-dev wrote:</span><br style=3D"font-family: Helvetica; font-size: =
12px; font-style: normal; font-variant-caps: normal; font-weight: =
normal; letter-spacing: normal; text-align: start; text-indent: 0px; =
text-transform: none; white-space: normal; word-spacing: 0px; =
-webkit-text-stroke-width: 0px;" class=3D""><blockquote type=3D"cite" =
style=3D"font-family: Helvetica; font-size: 12px; font-style: normal; =
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; =
orphans: auto; text-align: start; text-indent: 0px; text-transform: =
none; white-space: normal; widows: auto; word-spacing: 0px; =
-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" =
class=3D"">As good of an idea as it may or may not be to remove this =
feature from<br class=3D"">the code base, actually doing so&nbsp;would =
be crossing a boundary that we<br class=3D"">have not previously been =
willing to do except under extraordinary<br class=3D"">duress. The =
nature of bitcoin is such that we do not know and cannot<br =
class=3D"">know what transactions exist out there pre-signed and making =
use of<br class=3D"">these features.<br class=3D""><br class=3D"">It may =
be a good idea to make these features non standard to further<br =
class=3D"">discourage their use, but I object to doing so with the =
justification of<br class=3D"">eventually disabling them for all =
transactions. Taking that step has the<br class=3D"">potential of =
destroying value and is something that we have only done in<br =
class=3D"">the past either because we didn=E2=80=99t understand forks =
and best practices<br class=3D"">very well, or because the features (now =
disabled) were fundamentally<br class=3D"">insecure and resulted in =
other people=E2=80=99s coins being vulnerable. This<br class=3D"">latter =
concern does not apply here as far as I=E2=80=99m aware.<br class=3D""><br=
 class=3D"">On Nov 15, 2017, at 8:02 AM, Johnson Lau via bitcoin-dev<br =
class=3D"">&lt;<a href=3D"mailto:bitcoin-dev@lists.linuxfoundation.org" =
class=3D"">bitcoin-dev@lists.linuxfoundation.org</a><br class=3D"">&lt;<a =
href=3D"mailto:bitcoin-dev@lists.linuxfoundation.org" =
class=3D"">mailto:bitcoin-dev@lists.linuxfoundation.org</a>&gt;&gt; =
wrote:<br class=3D""><br class=3D""><blockquote type=3D"cite" =
class=3D"">In&nbsp;<a =
href=3D"https://github.com/bitcoin/bitcoin/pull/11423" =
class=3D"">https://github.com/bitcoin/bitcoin/pull/11423</a>&nbsp;I =
propose to<br class=3D"">make&nbsp;OP_CODESEPARATOR and FindAndDelete in =
non-segwit scripts non-standard<br class=3D""><br class=3D"">I think =
FindAndDelete() is one of the most useless and complicated<br =
class=3D"">functions in the script language. It is omitted from segwit =
(BIP143),<br class=3D"">but we still need to support it in non-segwit =
scripts. Actually,<br class=3D"">FindAndDelete() would only be triggered =
in some weird edge cases like<br class=3D"">using out-of-range =
SIGHASH_SINGLE.<br class=3D""><br class=3D"">Non-segwit scripts also use =
a FindAndDelete()-like function to remove<br class=3D"">OP_CODESEPARATOR =
from scriptCode. Note that in BIP143, only executed<br =
class=3D"">OP_CODESEPARATOR are removed so it doesn=E2=80=99t have =
the<br class=3D"">FindAndDelete()-like function. OP_CODESEPARATOR in =
segwit scripts are<br class=3D"">useful for Tumblebit so it is not =
disabled in this proposal<br class=3D""><br class=3D"">By disabling =
both, it guarantees that scriptCode serialized inside<br =
class=3D"">SignatureHash() must be constant<br class=3D""><br =
class=3D"">If we use a softfork to remove FindAndDelete() and =
OP_CODESEPARATOR<br class=3D"">from non-segwit scripts, we could =
completely remove FindAndDelete()<br class=3D"">from the consensus code =
later by whitelisting all blocks before the<br class=3D"">softfork =
block. The first step is to make them non-standard in the<br =
class=3D"">next release.<br class=3D""><br class=3D""><br =
class=3D"">&nbsp;<br =
class=3D"">_______________________________________________<br =
class=3D"">bitcoin-dev mailing list<br class=3D""><a =
href=3D"mailto:bitcoin-dev@lists.linuxfoundation.org" =
class=3D"">bitcoin-dev@lists.linuxfoundation.org</a><br class=3D"">&lt;<a =
href=3D"mailto:bitcoin-dev@lists.linuxfoundation.org" =
class=3D"">mailto:bitcoin-dev@lists.linuxfoundation.org</a>&gt;<br =
class=3D""><a =
href=3D"https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev" =
class=3D"">https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev<=
/a><br class=3D""></blockquote><br class=3D""><br =
class=3D"">_______________________________________________<br =
class=3D"">bitcoin-dev mailing list<br class=3D""><a =
href=3D"mailto:bitcoin-dev@lists.linuxfoundation.org" =
class=3D"">bitcoin-dev@lists.linuxfoundation.org</a><br class=3D""><a =
href=3D"https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev" =
class=3D"">https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev<=
/a></blockquote></div></blockquote></div><br =
class=3D""></div></body></html>=

--Apple-Mail=_F8A26339-DF8B-4C5F-A071-51C2E85D7F16--