summaryrefslogtreecommitdiff
path: root/25/ef3374130f20221d70b95288e4ce759d2e545f
blob: 889aaf9c6854d54152fa97e3194ba0f78ca276d6 (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
Return-Path: <steven@roose.io>
Received: from smtp3.osuosl.org (smtp3.osuosl.org [140.211.166.136])
 by lists.linuxfoundation.org (Postfix) with ESMTP id 7C74CC0032
 for <bitcoin-dev@lists.linuxfoundation.org>;
 Tue, 24 Oct 2023 19:47:30 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by smtp3.osuosl.org (Postfix) with ESMTP id 524566FC21
 for <bitcoin-dev@lists.linuxfoundation.org>;
 Tue, 24 Oct 2023 19:47:30 +0000 (UTC)
DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 524566FC21
Authentication-Results: smtp3.osuosl.org;
 dkim=pass (2048-bit key) header.d=roose.io header.i=@roose.io
 header.a=rsa-sha256 header.s=default header.b=mPiBpU9c
X-Virus-Scanned: amavisd-new at osuosl.org
X-Spam-Flag: NO
X-Spam-Score: -2.8
X-Spam-Level: 
X-Spam-Status: No, score=-2.8 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, HTML_MESSAGE=0.001,
 RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001,
 URI_DOTEDU=0.001] autolearn=ham autolearn_force=no
Received: from smtp3.osuosl.org ([127.0.0.1])
 by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id jC_jQGxWukyw
 for <bitcoin-dev@lists.linuxfoundation.org>;
 Tue, 24 Oct 2023 19:47:28 +0000 (UTC)
Received: from hosted.mailcow.de (hosted.mailcow.de [5.1.76.202])
 by smtp3.osuosl.org (Postfix) with ESMTPS id 442D76FAAA
 for <bitcoin-dev@lists.linuxfoundation.org>;
 Tue, 24 Oct 2023 19:47:28 +0000 (UTC)
DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 442D76FAAA
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=roose.io; s=default;
 t=1698176844;
 h=from:subject:date:message-id:to:mime-version:content-type:in-reply-to:
 references; bh=xv1Ry3lqratoGCL33g7LGpovU36AuG9FTX2+bB3hbrE=;
 b=mPiBpU9cxI5ueEeXSDFfZpB1W0VTL3yQJ/WuxVQI4NueajpSH4IcT/Nnmhws8NfQoIr764
 MY1dHj4Pn1D8uXlJsHWSWtXyrFVebLKJJ8+IQpkt94StC1ib3pCefP2WP+C9bImUlZueOX
 VQRKnJX8z/qSz58kHi70GhclXABKc+4AmrFGj/lt3wS8vox51flA5+oagfmNwyV3vf15eM
 Ea+CcqJzKjU81Di2QW1/US4IjjLazLDUytuR5SJWNTm3Iveot4zN25sGoK74vrQUhnKUBc
 RiFE+MQf7U7PFwuMC7YtKOMhuG7ca9foPG4k1lZf55c8Or2Tu5Xmp1WFG5fJlw==
Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon)
 with ESMTPSA id C77955C726C
 for <bitcoin-dev@lists.linuxfoundation.org>;
 Tue, 24 Oct 2023 21:47:23 +0200 (CEST)
Content-Type: multipart/alternative;
 boundary="------------fHJJ53i5Fm04sahOML7vJS73"
Message-ID: <c76d5c5f-091a-8c41-f1e7-74774c9607c5@roose.io>
Date: Tue, 24 Oct 2023 20:47:23 +0100
MIME-Version: 1.0
Content-Language: en-US
To: vjudeu via bitcoin-dev <bitcoin-dev@lists.linuxfoundation.org>
References: <194372901-852eeb9299035adb7fdfc7fe5aa21080@pmq3v.m5r2.onet>
From: Steven Roose <steven@roose.io>
In-Reply-To: <194372901-852eeb9299035adb7fdfc7fe5aa21080@pmq3v.m5r2.onet>
X-Mailman-Approved-At: Tue, 24 Oct 2023 20:12:18 +0000
Subject: Re: [bitcoin-dev] Proposed BIP for OP_CAT
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: Tue, 24 Oct 2023 19:47:30 -0000

This is a multi-part message in MIME format.
--------------fHJJ53i5Fm04sahOML7vJS73
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: base64

SSBhZ3JlZSB0aGF0IHRoZXJlIGlzIG5vIHJlYXNvbiBub3QgdG8gdXNlIE9QX1NVQ0NFU1Mx
MjYsIGkuZS4gdGhlIA0Kb3JpZ2luYWwgT1BfQ0FUIG9wY29kZSAweDdlLiBJbiBtYW55IGNv
ZGViYXNlcywgZm9yIGV4YW1wbGUgaW4gQ29yZSwgDQp0aGVyZSBtaWdodCBiZSB0d28gT1Bf
Q0FUIGNvbnN0YW50cyB0aGFuIHdoaWNoIG1pZ2h0IGJlIGNvbmZ1c2luZy4NCg0KT24gMTAv
MjIvMjMgMDk6NTgsIHZqdWRldSB2aWEgYml0Y29pbi1kZXYgd3JvdGU6DQo+ID4gVGhpcyBv
cGNvZGUgd291bGQgYmUgYWN0aXZhdGVkIHZpYSBhIHNvZnQgZm9yayBieSByZWRlZmluaW5n
IHRoZSANCj4gb3Bjb2RlIE9QX1NVQ0NFU1M4MC4NCj4gV2h5IE9QX1NVQ0NFU1M4MCwgYW5k
IG5vdCBPUF9TVUNDRVNTMTI2PyBXaGVuIHRoZXJlIGlzIHNvbWUgZXhpc3RpbmcgDQo+IG9w
Y29kZSwgaXQgc2hvdWxkIGJlIHJldXNlZC4gQW5kIGlmIE9QX1JFU0VSVkVEIHdpbGwgZXZl
ciBiZSANCj4gcmUtZW5hYmxlZCwgSSB0aGluayBpdCBzaG91bGQgYmVoYXZlIGluIHRoZSBz
YW1lIHdheSwgYXMgaW4gDQo+IHByZS1UYXByb290LCBzbyBpdCBzaG91bGQgIk1hcmsgdHJh
bnNhY3Rpb24gYXMgaW52YWxpZCB1bmxlc3Mgb2NjdXJpbmcgDQo+IGluIGFuIHVuZXhlY3V0
ZWQgT1BfSUYgYnJhbmNoIi4gV2hpY2ggbWVhbnMsICI8Y29uZGl0aW9uPiBPUF9WRVJJRlki
IA0KPiBzaG91bGQgYmUgZXF1aXZhbGVudCB0byAiPGNvbmRpdGlvbj4gT1BfTk9USUYgT1Bf
UkVTRVJWRUQgT1BfRU5ESUYiLg0KPg0KPg0KPiBPbiAyMDIzLTEwLTIxIDA3OjA5OjEzIHVz
ZXIgRXRoYW4gSGVpbG1hbiB2aWEgYml0Y29pbi1kZXYgDQo+IDxiaXRjb2luLWRldkBsaXN0
cy5saW51eGZvdW5kYXRpb24ub3JnPiB3cm90ZToNCj4NCj4gICAgIEhpIGV2ZXJ5b25lLA0K
Pg0KPiAgICAgV2UndmUgcG9zdGVkIGEgZHJhZnQgQklQIHRvIHByb3Bvc2UgZW5hYmxpbmcg
T1BfQ0FUIGFzIFRhcHNjcmlwdCBvcGNvZGUuDQo+ICAgICBodHRwczovL2dpdGh1Yi5jb20v
RXRoYW5IZWlsbWFuL29wX2NhdF9kcmFmdC9ibG9iL21haW4vY2F0Lm1lZGlhd2lraQ0KPg0K
PiAgICAgT1BfQ0FUIHdhcyBhdmFpbGFibGUgaW4gZWFybHkgdmVyc2lvbnMgb2YgQml0Y29p
bi4gSXQgd2FzIGRpc2FibGVkIGFzDQo+ICAgICBpdCBhbGxvd2VkIHRoZSBjb25zdHJ1Y3Rp
b24gb2YgYSBzY3JpcHQgd2hvc2UgZXZhbHVhdGlvbiBjb3VsZCBjcmVhdGUNCj4gICAgIHN0
YWNrIGVsZW1lbnRzIGV4cG9uZW50aWFsIGluIHRoZSBzaXplIG9mIHRoZSBzY3JpcHQuIFRo
aXMgaXMgbm8NCj4gICAgIGxvbmdlciBhbiBpc3N1ZSBpbiB0aGUgY3VycmVudCBhZ2UgYXMg
dGFwc2NyaXB0IGVuZm9yY2VzIGEgbWF4aW11bQ0KPiAgICAgc3RhY2sgZWxlbWVudCBzaXpl
IG9mIDUyMCBCeXRlcy4NCj4NCj4gICAgIFRoYW5rcywNCj4gICAgIEV0aGFuDQo+DQo+ICAg
ICA9PUFic3RyYWN0PT0NCj4NCj4gICAgIFRoaXMgQklQIGRlZmluZXMgT1BfQ0FUIGEgbmV3
IHRhcHNjcmlwdCBvcGNvZGUgd2hpY2ggYWxsb3dzIHRoZQ0KPiAgICAgY29uY2F0ZW5hdGlv
biBvZiB0d28gdmFsdWVzIG9uIHRoZSBzdGFjay4gVGhpcyBvcGNvZGUgd291bGQgYmUNCj4g
ICAgIGFjdGl2YXRlZCB2aWEgYSBzb2Z0IGZvcmsgYnkgcmVkZWZpbmluZyB0aGUgb3Bjb2Rl
IE9QX1NVQ0NFU1M4MC4NCj4NCj4gICAgIFdoZW4gZXZhbHVhdGVkIHRoZSBPUF9DQVQgaW5z
dHJ1Y3Rpb246DQo+ICAgICAjIFBvcHMgdGhlIHRvcCB0d28gdmFsdWVzIG9mZiB0aGUgc3Rh
Y2ssDQo+ICAgICAjIGNvbmNhdGVuYXRlIHRoZSBwb3BwZWQgdmFsdWVzIHRvZ2V0aGVyLA0K
PiAgICAgIyBhbmQgdGhlbiBwdXNoZXMgdGhlIGNvbmNhdGVuYXRlZCB2YWx1ZSBvbiB0aGUg
dG9wIG9mIHRoZSBzdGFjay4NCj4NCj4gICAgIE9QX0NBVCBmYWlscyBpZiB0aGVyZSBhcmUg
bGVzcyB0aGFuIHR3byB2YWx1ZXMgb24gdGhlIHN0YWNrIG9yIGlmIGENCj4gICAgIGNvbmNh
dGVuYXRlZCB2YWx1ZSB3b3VsZCBoYXZlIGEgY29tYmluZWQgc2l6ZSBvZiBncmVhdGVyIHRo
YW4gdGhlDQo+ICAgICBtYXhpbXVtIHNjcmlwdCBlbGVtZW50IHNpemUgb2YgNTIwIEJ5dGVz
Lg0KPg0KPiAgICAgPT1Nb3RpdmF0aW9uPT0NCj4gICAgIEJpdGNvaW4gdGFwc2NyaXB0IGxh
Y2tzIGEgZ2VuZXJhbCBwdXJwb3NlIHdheSBvZiBjb21iaW5pbmcgb2JqZWN0cyBvbg0KPiAg
ICAgdGhlIHN0YWNrIHJlc3RyaWN0aW5nIHRoZSBleHByZXNzaXZlbmVzcyBhbmQgcG93ZXIg
b2YgdGFwc2NyaXB0LiBGb3INCj4gICAgIGluc3RhbmNlIHRoaXMgcHJldmVudHMgYW1vbmcg
bWFueSBvdGhlciB0aGluZ3MgdGhlIGFiaWxpdHkgdG8NCj4gICAgIGNvbnN0cnVjdCBhbmQg
ZXZhbHVhdGUgbWVya2xlIHRyZWVzIGFuZCBvdGhlciBoYXNoZWQgZGF0YSBzdHJ1Y3R1cmVz
DQo+ICAgICBpbiB0YXBzY3JpcHQuIE9QX0NBVCBieSBhZGRpbmcgYSBnZW5lcmFsIHB1cnBv
c2Ugd2F5IHRvIGNvbmNhdGVuYXRlDQo+ICAgICBzdGFjayB2YWx1ZXMgd291bGQgb3ZlcmNv
bWUgdGhpcyBsaW1pdGF0aW9uIGFuZCBncmVhdGx5IGluY3JlYXNlIHRoZQ0KPiAgICAgZnVu
Y3Rpb25hbGl0eSBvZiB0YXBzY3JpcHQuDQo+DQo+ICAgICBPUF9DQVQgYWltcyB0byBleHBh
bmQgdGhlIHRvb2xib3ggb2YgdGhlIHRhcHNjcmlwdCBkZXZlbG9wZXIgd2l0aCBhDQo+ICAg
ICBzaW1wbGUsIG1vZHVsYXIgYW5kIHVzZWZ1bCBvcGNvZGUgaW4gdGhlIHNwaXJpdCBvZiBV
bml4WzFdLiBUbw0KPiAgICAgZGVtb25zdHJhdGUgdGhlIHVzZWZ1bG5lc3Mgb2YgT1BfQ0FU
IGJlbG93IHdlIHByb3ZpZGUgYSBub24tZXhoYXVzdGl2ZQ0KPiAgICAgbGlzdCBvZiBzb21l
IHVzZWNhc2VzIHRoYXQgT1BfQ0FUIHdvdWxkIGVuYWJsZToNCj4NCj4gICAgICogVHJlZSBT
aWduYXR1cmVzIHByb3ZpZGUgYSBtdWx0aXNpZ25hdHVyZSBzY3JpcHQgd2hvc2Ugc2l6ZSBj
YW4gYmUNCj4gICAgIGxvZ2FyaXRobWljIGluIHRoZSBudW1iZXIgb2YgcHVibGljIGtleXMg
YW5kIGNhbiBlbmNvZGUgc3BlbmQNCj4gICAgIGNvbmRpdGlvbnMgYmV5b25kIG4tb2YtbS4g
Rm9yIGluc3RhbmNlIGEgdHJhbnNhY3Rpb24gbGVzcyB0aGFuIDFLQiBpbg0KPiAgICAgc2l6
ZSBjb3VsZCBzdXBwb3J0IHRyZWUgc2lnbmF0dXJlcyB3aXRoIGEgdGhvdXNhbmQgcHVibGlj
IGtleXMuIFRoaXMNCj4gICAgIGFsc28gZW5hYmxlcyBnZW5lcmFsaXplZCBsb2dpY2FsIHNw
ZW5kIGNvbmRpdGlvbnMuIFsyXQ0KPiAgICAgKiBQb3N0LVF1YW50dW0gTGFtcG9ydCBTaWdu
YXR1cmVzIGluIEJpdGNvaW4gdHJhbnNhY3Rpb25zLiBMYW1wb3J0DQo+ICAgICBzaWduYXR1
cmVzIG1lcmVseSByZXF1aXJlcyB0aGUgYWJpbGl0eSB0byBoYXNoIGFuZCBjb25jYXRlbmF0
ZSB2YWx1ZXMNCj4gICAgIG9uIHRoZSBzdGFjay4gWzNdDQo+ICAgICAqIE5vbi1lcXVpdm9j
YXRpb24gY29udHJhY3RzIFs0XSBpbiB0YXBzY3JpcHQgcHJvdmlkZSBhIG1lY2hhbmlzbSB0
bw0KPiAgICAgcHVuaXNoIGVxdWl2b2NhdGlvbi9kb3VibGUgc3BlbmRpbmcgaW4gQml0Y29p
biBwYXltZW50IGNoYW5uZWxzLg0KPiAgICAgT1BfQ0FUIGVuYWJsZXMgdGhpcyBieSBlbmZv
cmNpbmcgcnVsZXMgb24gdGhlIHNwZW5kaW5nIHRyYW5zYWN0aW9uJ3MNCj4gICAgIG5vbmNl
LiBUaGUgY2FwYWJpbGl0eSBpcyBhIHVzZWZ1bCBidWlsZGluZyBibG9jayBmb3IgcGF5bWVu
dCBjaGFubmVscw0KPiAgICAgYW5kIG90aGVyIEJpdGNvaW4gcHJvdG9jb2xzLg0KPiAgICAg
KiBWYXVsdHMgWzVdIHdoaWNoIGFyZSBhIHNwZWNpYWxpemVkIGNvdmVuYW50IHRoYXQgYWxs
b3dzIGEgdXNlciB0bw0KPiAgICAgYmxvY2sgYSBtYWxpY2lvdXMgcGFydHkgd2hvIGhhcyBj
b21wcm9taXNlZCB0aGUgdXNlcidzIHNlY3JldCBrZXkgZnJvbQ0KPiAgICAgc3RlYWxpbmcg
dGhlIGZ1bmRzIGluIHRoYXQgb3V0cHV0LiBBcyBzaG93biBpbiBBLiBQb2Vsc3RyYSwgIkNB
VA0KPiAgICAgYW5kIFNjaG5vcnIgVHJpY2tzIElJIiwgMjAyMSwNCj4gICAgIGh0dHBzOi8v
d3d3Lndwc29mdHdhcmUubmV0L2FuZHJldy9ibG9nL2NhdC1hbmQtc2Nobm9yci10cmlja3Mt
aWkuaHRtbA0KPiAgICAgT1BfQ0FUIGlzIHN1ZmZpY2VudCB0byBidWlsZCB2YXVsdHMgaW4g
Qml0Y29pbi4NCj4gICAgICogUmVwbGljYXRpbmcgQ2hlY2tTaWdGcm9tU3RhY2sgIEEuIFBv
ZWxzdHJhLCAiQ0FUIGFuZCBTY2hub3JyDQo+ICAgICBUcmlja3MgSSIsIDIwMjEsDQo+ICAg
ICBodHRwczovL21lZGl1bS5jb20vYmxvY2tzdHJlYW0vY2F0LWFuZC1zY2hub3JyLXRyaWNr
cy1pLWZhZjFiNTliZDI5OA0KPiAgICAgICB3aGljaCB3b3VsZCBhbGxvdyB0aGUgY3JlYXRp
b24gb2Ygc2ltcGxlIGNvdmVuYW50cyBhbmQgb3RoZXINCj4gICAgIGFkdmFuY2VkIGNvbnRy
YWN0cyB3aXRob3V0IGhhdmluZyB0byBwcmVzaWduIHNwZW5kaW5nIHRyYW5zYWN0aW9ucywN
Cj4gICAgIHBvc3NpYmx5IHJlZHVjaW5nIGNvbXBsZXhpdHkgYW5kIHRoZSBhbW91bnQgb2Yg
ZGF0YSB0aGF0IG5lZWRzIHRvIGJlDQo+ICAgICBzdG9yZWQuIE9yaWdpbmFsbHkgc2hvd24g
dG8gd29yayB3aXRoIFNjaG5vcnIgc2lnbmF0dXJlcywgdGhpcyByZXN1bHQNCj4gICAgIGhh
cyBiZWVuIGV4dGVuZGVkIHRvIEVDRFNBIHNpZ25hdHVyZXMuIFs2XQ0KPg0KPiAgICAgVGhl
IG9wY29kZSBPUF9DQVQgd2FzIGF2YWlsYWJsZSBpbiBlYXJseSB2ZXJzaW9ucyBvZiBCaXRj
b2luLiBIb3dldmVyDQo+ICAgICBPUF9DQVQgd2FzIHJlbW92ZWQgYmVjYXVzZSBpdCBlbmFi
bGVkIHRoZSBjb25zdHJ1Y3Rpb24gb2YgYSBzY3JpcHQgZm9yDQo+ICAgICB3aGljaCBhbiBl
dmFsdWF0aW9uIGNvdWxkIGhhdmUgbWVtb3J5IHVzYWdlIGV4cG9uZW50aWFsIGluIHRoZSBz
aXplIG9mDQo+ICAgICB0aGUgc2NyaXB0Lg0KPiAgICAgRm9yIGluc3RhbmNlIGEgc2NyaXB0
IHdoaWNoIHB1c2hlZCBhbiAxIEJ5dGUgdmFsdWUgb24gdGhlIHN0YWNrIHRoZW4NCj4gICAg
IHJlcGVhdGVkIHRoZSBvcGNvZGVzIE9QX0RVUCwgT1BfQ0FUIDQwIHRpbWVzIHdvdWxkIHJl
c3VsdCBpbiBhIHN0YWNrDQo+ICAgICB2YWx1ZSB3aG9zZSBzaXplIHdhcyBncmVhdGVyIHRo
YW4gMSBUZXJhYnl0ZS4gVGhpcyBpcyBubyBsb25nZXIgYW4NCj4gICAgIGlzc3VlIGJlY2F1
c2UgdGFwc2NyaXB0IGVuZm9yY2VzIGEgbWF4aW11bSBzdGFjayBlbGVtZW50IHNpemUgb2Yg
NTIwDQo+ICAgICBCeXRlcy4NCj4NCj4gICAgID09U3BlY2lmaWNhdGlvbj09DQo+DQo+ICAg
ICBJbXBsZW1lbnRhdGlvbg0KPg0KPiAgICAgICAgaWYgKHN0YWNrLnNpemUoKSA8IDIpDQo+
ICAgICAgICAgIHJldHVybiBzZXRfZXJyb3Ioc2Vycm9yLCBTQ1JJUFRfRVJSX0lOVkFMSURf
U1RBQ0tfT1BFUkFUSU9OKTsNCj4gICAgICAgIHZhbHR5cGUgdmNoMSA9IHN0YWNrdG9wKC0y
KTsNCj4gICAgICAgIHZhbHR5cGUgdmNoMiA9IHN0YWNrdG9wKC0xKTsNCj4NCj4gICAgICAg
IGlmICh2Y2gxLnNpemUoKSArIHZjaDIuc2l6ZSgpID4gTUFYX1NDUklQVF9FTEVNRU5UX1NJ
WkUpDQo+ICAgICAgICAgICAgcmV0dXJuIHNldF9lcnJvcihzZXJyb3IsIFNDUklQVF9FUlJf
SU5WQUxJRF9TVEFDS19PUEVSQVRJT04pOw0KPg0KPiAgICAgICAgdmFsdHlwZSB2Y2gzOw0K
PiAgICAgICAgdmNoMy5yZXNlcnZlKHZjaDEuc2l6ZSgpICsgdmNoMi5zaXplKCkpOw0KPiAg
ICAgICAgdmNoMy5pbnNlcnQodmNoMy5lbmQoKSwgdmNoMS5iZWdpbigpLCB2Y2gxLmVuZCgp
KTsNCj4gICAgICAgIHZjaDMuaW5zZXJ0KHZjaDMuZW5kKCksIHZjaDIuYmVnaW4oKSwgdmNo
Mi5lbmQoKSk7DQo+DQo+ICAgICAgICBwb3BzdGFjayhzdGFjayk7DQo+ICAgICAgICBwb3Bz
dGFjayhzdGFjayk7DQo+ICAgICAgICBzdGFjay5wdXNoX2JhY2sodmNoMyk7DQo+DQo+ICAg
ICBUaGUgdmFsdWUgb2YgTUFYX1NDUklQVF9FTEVNRU5UX1NJWkUgaXMgNTIwIEJ5dGVzID09
IFJlZmVyZW5jZSBJbXBsZW1lbnRhdGlvbiA9PSBbRWxlbWVudHNdKGh0dHBzOi8vZ2l0aHVi
LmNvbS9FbGVtZW50c1Byb2plY3QvZWxlbWVudHMvYmxvYi9tYXN0ZXIvc3JjL3NjcmlwdC9p
bnRlcnByZXRlci5jcHAjTDEwNDMpID09UmVmZXJlbmNlcz09IFsxXTogUi4gUGlrZSBhbmQg
Qi4gS2VybmlnaGFuLCAiUHJvZ3JhbSBkZXNpZ24gaW4gdGhlIFVOSVggZW52aXJvbm1lbnQi
LCAxOTgzLGh0dHBzOi8vaGFybWZ1bC5jYXQtdi5vcmcvY2F0LXYvdW5peF9wcm9nX2Rlc2ln
bi5wZGYgIFsyXTogUC4gV3VpbGxlLCAiTXVsdGlzaWcgb24gc3Rlcm9pZHMgdXNpbmcgdHJl
ZSBzaWduYXR1cmVzIiwgMjAxNSxodHRwczovL2xpc3RzLmxpbnV4Zm91bmRhdGlvbi5vcmcv
cGlwZXJtYWlsL2JpdGNvaW4tZGV2LzIwMjEtSnVseS8wMTkyMzMuaHRtbCAgWzNdOiBKLiBS
dWJpbiwgIltiaXRjb2luLWRldl0gT1BfQ0FUIE1ha2VzIEJpdGNvaW4gUXVhbnR1bSBTZWN1
cmUgW3dhcyBDaGVja1NpZ0Zyb21TdGFjayBmb3IgQXJpdGhtZXRpYyBWYWx1ZXNdIiwgMjAy
MSxodHRwczovL2xpc3RzLmxpbnV4Zm91bmRhdGlvbi5vcmcvcGlwZXJtYWlsL2JpdGNvaW4t
ZGV2LzIwMjEtSnVseS8wMTkyMzMuaHRtbCAgWzRdOiBULiBSdWZmaW5nLCBBLiBLYXRlLCBE
LiBTY2hyw7ZkZXIsICJMaWFyLCBMaWFyLCBDb2lucyBvbiBGaXJlOiBQZW5hbGl6aW5nIEVx
dWl2b2NhdGlvbiBieSBMb3NzIG9mIEJpdGNvaW5zIiwgMjAxNSxodHRwczovL2NpdGVzZWVy
eC5pc3QucHN1LmVkdS92aWV3ZG9jL2Rvd25sb2FkP2RvaT0xMC4xLjEuNzI3LjYyNjImcmVw
PXJlcDEmdHlwZT1wZGYgIFs1XTogTS4gTW9zZXIsIEkuIEV5YWwsIGFuZCBFLiBHLiBTaXJl
ciwgQml0Y29pbiBDb3ZlbmFudHMsaHR0cDovL2ZjMTYuaWZjYS5haS9iaXRjb2luL3BhcGVy
cy9NRVMxNi5wZGYgIFs2XTogUi4gTGludXMsICJDb3ZlbmFudHMgd2l0aCBDQVQgYW5kIEVD
RFNBIiwgMjAyMyxodHRwczovL2dpc3QuZ2l0aHViLmNvbS9Sb2JpbkxpbnVzLzlhNjlmNTU1
MmJlOTRkMTMxNzBlYzc5YmYzNGQ1ZTg1I2ZpbGUtY292ZW5hbnRzX2NhdF9lY2RzYS1tZCAg
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18gYml0Y29p
bi1kZXYgbWFpbGluZyBsaXN0Yml0Y29pbi1kZXZAbGlzdHMubGludXhmb3VuZGF0aW9uLm9y
ZyAgaHR0cHM6Ly9saXN0cy5saW51eGZvdW5kYXRpb24ub3JnL21haWxtYW4vbGlzdGluZm8v
Yml0Y29pbi1kZXYNCj4NCj4NCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18NCj4gYml0Y29pbi1kZXYgbWFpbGluZyBsaXN0DQo+IGJpdGNvaW4t
ZGV2QGxpc3RzLmxpbnV4Zm91bmRhdGlvbi5vcmcNCj4gaHR0cHM6Ly9saXN0cy5saW51eGZv
dW5kYXRpb24ub3JnL21haWxtYW4vbGlzdGluZm8vYml0Y29pbi1kZXYNCg==
--------------fHJJ53i5Fm04sahOML7vJS73
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<html>
  <head>
    <meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3DUTF=
-8">
  </head>
  <body>
    <p>I agree that there is no reason not to use OP_SUCCESS126, i.e.
      the original OP_CAT opcode 0x7e. In many codebases, for example in
      Core, there might be two OP_CAT constants than which might be
      confusing.<br>
    </p>
    <div class=3D"moz-cite-prefix">On 10/22/23 09:58, vjudeu via
      bitcoin-dev wrote:<br>
    </div>
    <blockquote type=3D"cite"
      cite=3D"mid:194372901-852eeb9299035adb7fdfc7fe5aa21080@pmq3v.m5r2.o=
net">
      <meta http-equiv=3D"content-type" content=3D"text/html; charset=3DU=
TF-8">
      <div>
        <div>&gt; This opcode would be activated via a soft fork by
          redefining the opcode OP_SUCCESS80.</div>
        <div>=C2=A0</div>
        <div>Why OP_SUCCESS80, and not OP_SUCCESS126? When there is some
          existing opcode, it should be reused. And if OP_RESERVED will
          ever be re-enabled, I think it should behave in the same way,
          as in pre-Taproot, so it should "Mark transaction as invalid
          unless occuring in an unexecuted OP_IF branch". Which means,
          "&lt;condition&gt; OP_VERIFY" should be equivalent to
          "&lt;condition&gt; OP_NOTIF OP_RESERVED OP_ENDIF".</div>
        <br>
        <br>
      </div>
      <div>=C2=A0</div>
      <div>On 2023-10-21 07:09:13 user Ethan Heilman via bitcoin-dev
        <a class=3D"moz-txt-link-rfc2396E" href=3D"mailto:bitcoin-dev@lis=
ts.linuxfoundation.org">&lt;bitcoin-dev@lists.linuxfoundation.org&gt;</a>=
 wrote:</div>
      <blockquote style=3D"margin-right: 0; margin-left: 7px; border-left=
:
        2px solid orange; padding-left: 8px;">
        <pre>Hi everyone,

We've posted a draft BIP to propose enabling OP_CAT as Tapscript opcode.
<a class=3D"moz-txt-link-freetext" href=3D"https://github.com/EthanHeilma=
n/op_cat_draft/blob/main/cat.mediawiki">https://github.com/EthanHeilman/o=
p_cat_draft/blob/main/cat.mediawiki</a>

OP_CAT was available in early versions of Bitcoin. It was disabled as
it allowed the construction of a script whose evaluation could create
stack elements exponential in the size of the script. This is no
longer an issue in the current age as tapscript enforces a maximum
stack element size of 520 Bytes.

Thanks,
Ethan

=3D=3DAbstract=3D=3D

This BIP defines OP_CAT a new tapscript opcode which allows the
concatenation of two values on the stack. This opcode would be
activated via a soft fork by redefining the opcode OP_SUCCESS80.

When evaluated the OP_CAT instruction:
# Pops the top two values off the stack,
# concatenate the popped values together,
# and then pushes the concatenated value on the top of the stack.

OP_CAT fails if there are less than two values on the stack or if a
concatenated value would have a combined size of greater than the
maximum script element size of 520 Bytes.

=3D=3DMotivation=3D=3D
Bitcoin tapscript lacks a general purpose way of combining objects on
the stack restricting the expressiveness and power of tapscript. For
instance this prevents among many other things the ability to
construct and evaluate merkle trees and other hashed data structures
in tapscript. OP_CAT by adding a general purpose way to concatenate
stack values would overcome this limitation and greatly increase the
functionality of tapscript.

OP_CAT aims to expand the toolbox of the tapscript developer with a
simple, modular and useful opcode in the spirit of Unix[1]. To
demonstrate the usefulness of OP_CAT below we provide a non-exhaustive
list of some usecases that OP_CAT would enable:

* Tree Signatures provide a multisignature script whose size can be
logarithmic in the number of public keys and can encode spend
conditions beyond n-of-m. For instance a transaction less than 1KB in
size could support tree signatures with a thousand public keys. This
also enables generalized logical spend conditions. [2]
* Post-Quantum Lamport Signatures in Bitcoin transactions. Lamport
signatures merely requires the ability to hash and concatenate values
on the stack. [3]
* Non-equivocation contracts [4] in tapscript provide a mechanism to
punish equivocation/double spending in Bitcoin payment channels.
OP_CAT enables this by enforcing rules on the spending transaction's
nonce. The capability is a useful building block for payment channels
and other Bitcoin protocols.
* Vaults [5] which are a specialized covenant that allows a user to
block a malicious party who has compromised the user's secret key from
stealing the funds in that output. As shown in A. Poelstra, "CAT
and Schnorr Tricks II", 2021,
<a class=3D"moz-txt-link-freetext" href=3D"https://www.wpsoftware.net/and=
rew/blog/cat-and-schnorr-tricks-ii.html">https://www.wpsoftware.net/andre=
w/blog/cat-and-schnorr-tricks-ii.html</a>
OP_CAT is sufficent to build vaults in Bitcoin.
* Replicating CheckSigFromStack  A. Poelstra, "CAT and Schnorr
Tricks I", 2021,
<a class=3D"moz-txt-link-freetext" href=3D"https://medium.com/blockstream=
/cat-and-schnorr-tricks-i-faf1b59bd298">https://medium.com/blockstream/ca=
t-and-schnorr-tricks-i-faf1b59bd298</a>
 which would allow the creation of simple covenants and other
advanced contracts without having to presign spending transactions,
possibly reducing complexity and the amount of data that needs to be
stored. Originally shown to work with Schnorr signatures, this result
has been extended to ECDSA signatures. [6]

The opcode OP_CAT was available in early versions of Bitcoin. However
OP_CAT was removed because it enabled the construction of a script for
which an evaluation could have memory usage exponential in the size of
the script.
For instance a script which pushed an 1 Byte value on the stack then
repeated the opcodes OP_DUP, OP_CAT 40 times would result in a stack
value whose size was greater than 1 Terabyte. This is no longer an
issue because tapscript enforces a maximum stack element size of 520
Bytes.

=3D=3DSpecification=3D=3D

Implementation</pre>
        <pre>  if (stack.size() &lt; 2)
    return set_error(serror, SCRIPT_ERR_INVALID_STACK_OPERATION);
  valtype vch1 =3D stacktop(-2);
  valtype vch2 =3D stacktop(-1);

  if (vch1.size() + vch2.size() &gt; MAX_SCRIPT_ELEMENT_SIZE)
      return set_error(serror, SCRIPT_ERR_INVALID_STACK_OPERATION);

  valtype vch3;
  vch3.reserve(vch1.size() + vch2.size());
  vch3.insert(vch3.end(), vch1.begin(), vch1.end());
  vch3.insert(vch3.end(), vch2.begin(), vch2.end());

  popstack(stack);
  popstack(stack);
  stack.push_back(vch3);
</pre>
        <pre>The value of MAX_SCRIPT_ELEMENT_SIZE is 520 Bytes =3D=3D Ref=
erence Implementation =3D=3D [Elements](<a class=3D"moz-txt-link-freetext=
" href=3D"https://github.com/ElementsProject/elements/blob/master/src/scr=
ipt/interpreter.cpp#L1043">https://github.com/ElementsProject/elements/bl=
ob/master/src/script/interpreter.cpp#L1043</a>) =3D=3DReferences=3D=3D [1=
]: R. Pike and B. Kernighan, "Program design in the UNIX environment", 19=
83, <a class=3D"moz-txt-link-freetext" href=3D"https://harmful.cat-v.org/=
cat-v/unix_prog_design.pdf">https://harmful.cat-v.org/cat-v/unix_prog_des=
ign.pdf</a> [2]: P. Wuille, "Multisig on steroids using tree signatures",=
 2015, <a class=3D"moz-txt-link-freetext" href=3D"https://lists.linuxfoun=
dation.org/pipermail/bitcoin-dev/2021-July/019233.html">https://lists.lin=
uxfoundation.org/pipermail/bitcoin-dev/2021-July/019233.html</a> [3]: J. =
Rubin, "[bitcoin-dev] OP_CAT Makes Bitcoin Quantum Secure [was CheckSigFr=
omStack for Arithmetic Values]", 2021, <a class=3D"moz-txt-link-freetext"=
 href=3D"https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-Jul=
y/019233.html">https://lists.linuxfoundation.org/pipermail/bitcoin-dev/20=
21-July/019233.html</a> [4]: T. Ruffing, A. Kate, D. Schr=C3=B6der, "Liar=
, Liar, Coins on Fire: Penalizing Equivocation by Loss of Bitcoins", 2015=
, <a class=3D"moz-txt-link-freetext" href=3D"https://citeseerx.ist.psu.ed=
u/viewdoc/download?doi=3D10.1.1.727.6262&amp;rep=3Drep1&amp;type=3Dpdf">h=
ttps://citeseerx.ist.psu.edu/viewdoc/download?doi=3D10.1.1.727.6262&amp;r=
ep=3Drep1&amp;type=3Dpdf</a> [5]: M. Moser, I. Eyal, and E. G. Sirer, Bit=
coin Covenants, <a class=3D"moz-txt-link-freetext" href=3D"http://fc16.if=
ca.ai/bitcoin/papers/MES16.pdf">http://fc16.ifca.ai/bitcoin/papers/MES16.=
pdf</a> [6]: R. Linus, "Covenants with CAT and ECDSA", 2023, <a class=3D"=
moz-txt-link-freetext" href=3D"https://gist.github.com/RobinLinus/9a69f55=
52be94d13170ec79bf34d5e85#file-covenants_cat_ecdsa-md">https://gist.githu=
b.com/RobinLinus/9a69f5552be94d13170ec79bf34d5e85#file-covenants_cat_ecds=
a-md</a> _______________________________________________ bitcoin-dev mail=
ing list <a class=3D"moz-txt-link-abbreviated" href=3D"mailto:bitcoin-dev=
@lists.linuxfoundation.org">bitcoin-dev@lists.linuxfoundation.org</a> <a =
class=3D"moz-txt-link-freetext" href=3D"https://lists.linuxfoundation.org=
/mailman/listinfo/bitcoin-dev">https://lists.linuxfoundation.org/mailman/=
listinfo/bitcoin-dev</a></pre>
      </blockquote>
      <br>
      <fieldset class=3D"moz-mime-attachment-header"></fieldset>
      <pre class=3D"moz-quote-pre" wrap=3D"">____________________________=
___________________
bitcoin-dev mailing list
<a class=3D"moz-txt-link-abbreviated" href=3D"mailto:bitcoin-dev@lists.li=
nuxfoundation.org">bitcoin-dev@lists.linuxfoundation.org</a>
<a class=3D"moz-txt-link-freetext" href=3D"https://lists.linuxfoundation.=
org/mailman/listinfo/bitcoin-dev">https://lists.linuxfoundation.org/mailm=
an/listinfo/bitcoin-dev</a>
</pre>
    </blockquote>
  </body>
</html>

--------------fHJJ53i5Fm04sahOML7vJS73--