Return-Path: Received: from smtp3.osuosl.org (smtp3.osuosl.org [140.211.166.136]) by lists.linuxfoundation.org (Postfix) with ESMTP id 7C74CC0032 for ; 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 ; 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 ; 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 ; 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 ; Tue, 24 Oct 2023 21:47:23 +0200 (CEST) Content-Type: multipart/alternative; boundary="------------fHJJ53i5Fm04sahOML7vJS73" Message-ID: Date: Tue, 24 Oct 2023 20:47:23 +0100 MIME-Version: 1.0 Content-Language: en-US To: vjudeu via bitcoin-dev References: <194372901-852eeb9299035adb7fdfc7fe5aa21080@pmq3v.m5r2.onet> From: Steven Roose 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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

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.

On 10/22/23 09:58, vjudeu via bitcoin-dev wrote:
> This opcode would be activated via a soft fork by redefining the opcode OP_SUCCESS80.
=C2=A0
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, "<condition> OP_VERIFY" should be equivalent to "<condition> OP_NOTIF OP_RESERVED OP_ENDIF".


=C2=A0
On 2023-10-21 07:09:13 user Ethan Heilman via bitcoin-dev <bitcoin-dev@lists.linuxfoundation.org>= wrote:
Hi everyone,

We've posted a draft BIP to propose enabling OP_CAT as Tapscript opcode.
https://github.com/EthanHeilman/o=
p_cat_draft/blob/main/cat.mediawiki

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,
https://www.wpsoftware.net/andre=
w/blog/cat-and-schnorr-tricks-ii.html
OP_CAT is sufficent to build vaults in Bitcoin.
* Replicating CheckSigFromStack  A. Poelstra, "CAT and Schnorr
Tricks I", 2021,
https://medium.com/blockstream/ca=
t-and-schnorr-tricks-i-faf1b59bd298
 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
  if (stack.size() < 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() > 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);
The value of MAX_SCRIPT_ELEMENT_SIZE is 520 Bytes =3D=3D Ref=
erence Implementation =3D=3D [Elements](https://github.com/ElementsProject/elements/bl=
ob/master/src/script/interpreter.cpp#L1043) =3D=3DReferences=3D=3D [1=
]: R. Pike and B. Kernighan, "Program design in the UNIX environment", 19=
83, https://harmful.cat-v.org/cat-v/unix_prog_des=
ign.pdf [2]: P. Wuille, "Multisig on steroids using tree signatures",=
 2015, https://lists.lin=
uxfoundation.org/pipermail/bitcoin-dev/2021-July/019233.html [3]: J. =
Rubin, "[bitcoin-dev] OP_CAT Makes Bitcoin Quantum Secure [was CheckSigFr=
omStack for Arithmetic Values]", 2021, https://lists.linuxfoundation.org/pipermail/bitcoin-dev/20=
21-July/019233.html [4]: T. Ruffing, A. Kate, D. Schr=C3=B6der, "Liar=
, Liar, Coins on Fire: Penalizing Equivocation by Loss of Bitcoins", 2015=
, h=
ttps://citeseerx.ist.psu.edu/viewdoc/download?doi=3D10.1.1.727.6262&r=
ep=3Drep1&type=3Dpdf [5]: M. Moser, I. Eyal, and E. G. Sirer, Bit=
coin Covenants, http://fc16.ifca.ai/bitcoin/papers/MES16.=
pdf [6]: R. Linus, "Covenants with CAT and ECDSA", 2023, https://gist.githu=
b.com/RobinLinus/9a69f5552be94d13170ec79bf34d5e85#file-covenants_cat_ecds=
a-md _______________________________________________ bitcoin-dev mail=
ing list bitcoin-dev@lists.linuxfoundation.org https://lists.linuxfoundation.org/mailman/=
listinfo/bitcoin-dev

____________________________=
___________________
bitcoin-dev mailing list
bitcoin-dev@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailm=
an/listinfo/bitcoin-dev
--------------fHJJ53i5Fm04sahOML7vJS73--