summaryrefslogtreecommitdiff
path: root/6d/54421e5d622f7e6ed8821a4d640916c3dbcb3a
blob: f8ecc7d6e0d3d52ef6f9c3cde870aefec20b0e2f (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
Return-Path: <jlrubin@mit.edu>
Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138])
 by lists.linuxfoundation.org (Postfix) with ESMTP id AB479C0878
 for <bitcoin-dev@lists.linuxfoundation.org>;
 Tue, 26 Nov 2019 01:50:57 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by whitealder.osuosl.org (Postfix) with ESMTP id 94C3C85F96
 for <bitcoin-dev@lists.linuxfoundation.org>;
 Tue, 26 Nov 2019 01:50:57 +0000 (UTC)
X-Virus-Scanned: amavisd-new at osuosl.org
Received: from whitealder.osuosl.org ([127.0.0.1])
 by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id Yi6fMe98-9U0
 for <bitcoin-dev@lists.linuxfoundation.org>;
 Tue, 26 Nov 2019 01:50:56 +0000 (UTC)
X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6
Received: from outgoing.mit.edu (outgoing-auth-1.mit.edu [18.9.28.11])
 by whitealder.osuosl.org (Postfix) with ESMTPS id 6000985F8E
 for <bitcoin-dev@lists.linuxfoundation.org>;
 Tue, 26 Nov 2019 01:50:56 +0000 (UTC)
Received: from mail-io1-f50.google.com (mail-io1-f50.google.com
 [209.85.166.50]) (authenticated bits=0)
 (User authenticated as jlrubin@ATHENA.MIT.EDU)
 by outgoing.mit.edu (8.14.7/8.12.4) with ESMTP id xAQ1oqCE018775
 (version=TLSv1/SSLv3 cipher=AES128-GCM-SHA256 bits=128 verify=NOT)
 for <bitcoin-dev@lists.linuxfoundation.org>; Mon, 25 Nov 2019 20:50:53 -0500
Received: by mail-io1-f50.google.com with SMTP id k13so18635705ioa.9
 for <bitcoin-dev@lists.linuxfoundation.org>;
 Mon, 25 Nov 2019 17:50:53 -0800 (PST)
X-Gm-Message-State: APjAAAWo7HGlzVyv2jdVaH/6bFbsopFNuJr9mKj87bZ9n1rbmzkdH3R9
 mrijMhYVMFXIFIW7alYneVPHkNxPrgfLzgYllb0=
X-Google-Smtp-Source: APXvYqzfpDbyf8WNGxQW+vnGajR+UKbXAVpMm4SkabnZLTszaEMH/yOJMP4TT1LtjzL5opm/y/AfUF1A58+0iaArJWw=
X-Received: by 2002:a5d:9555:: with SMTP id a21mr19866571ios.49.1574733052020; 
 Mon, 25 Nov 2019 17:50:52 -0800 (PST)
MIME-Version: 1.0
From: Jeremy <jlrubin@mit.edu>
Date: Mon, 25 Nov 2019 17:50:40 -0800
X-Gmail-Original-Message-ID: <CAD5xwhjXidpeLLUr4TO30t7U3z_zUxTpU9GBpLxu3MWX3ZFeTA@mail.gmail.com>
Message-ID: <CAD5xwhjXidpeLLUr4TO30t7U3z_zUxTpU9GBpLxu3MWX3ZFeTA@mail.gmail.com>
To: Bitcoin development mailing list <bitcoin-dev@lists.linuxfoundation.org>
Content-Type: multipart/alternative; boundary="0000000000002e8d260598361cd0"
Subject: [bitcoin-dev] BIP OP_CHECKTEMPLATEVERIFY
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, 26 Nov 2019 01:50:57 -0000

--0000000000002e8d260598361cd0
Content-Type: text/plain; charset="UTF-8"

Bitcoin Developers,

Pleased to announce refinements to the BIP draft for OP_CHECKTEMPLATEVERIFY
(replaces previous OP_SECURETHEBAG BIP). Primarily:

1) Changed the name to something more fitting and acceptable to the
community
2) Changed the opcode specification to use the argument off of the stack
with a primitive constexpr/literal tracker rather than script lookahead
3) Permits future soft-fork updates to loosen or remove "constexpr"
restrictions
4) More detailed comparison to alternatives in the BIP, and why
OP_CHECKTEMPLATEVERIFY should be favored even if a future technique may
make it semi-redundant.

Please see:
BIP: https://github.com/JeremyRubin/bips/blob/ctv/bip-ctv.mediawiki
Reference Implementation:
https://github.com/JeremyRubin/bitcoin/tree/checktemplateverify

I believe this addresses all outstanding feedback on the design of this
opcode, unless there are any new concerns with these changes.

I'm also planning to host a review workshop in Q1 2020, most likely in San
Francisco. Please fill out the form here https://forms.gle/pkevHNj2pXH9MGee9
if you're interested in participating (even if you can't physically attend).

And as a "but wait, there's more":

1) RPC functions are under preliminary development, to aid in testing and
evaluation of OP_CHECKTEMPLATEVERIFY. The new command `sendmanycompacted`
shows one way to use OP_CHECKTEMPLATEVERIFY. See:
https://github.com/JeremyRubin/bitcoin/tree/checktemplateverify-rpcs.
`sendmanycompacted` is still under early design. Standard practices for
using OP_CHECKTEMPLATEVERIFY & wallet behaviors may be codified into a
separate BIP. This work generalizes even if an alternative strategy is used
to achieve the scalability techniques of OP_CHECKTEMPLATEVERIFY.
2) Also under development are improvements to the mempool which will, in
conjunction with improvements like package relay, help make it safe to lift
some of the mempool's restrictions on longchains specifically for
OP_CHECKTEMPLATEVERIFY output trees. See:
https://github.com/bitcoin/bitcoin/pull/17268
This work offers an improvement irrespective of OP_CHECKTEMPLATEVERIFY's
fate.


Neither of these are blockers for proceeding with the BIP, as they are
ergonomics and usability improvements needed once/if the BIP is activated.

See prior mailing list discussions here:

*
https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2019-May/016934.html
*
https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2019-June/016997.html

Thanks to the many developers who have provided feedback on iterations of
this design.

Best,

Jeremy

--
@JeremyRubin <https://twitter.com/JeremyRubin>
<https://twitter.com/JeremyRubin>

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

<div dir=3D"ltr"><div class=3D"gmail_default" style=3D"font-family:arial,he=
lvetica,sans-serif;font-size:small;color:#000000">Bitcoin Developers,</div>=
<div class=3D"gmail_default" style=3D"font-family:arial,helvetica,sans-seri=
f;font-size:small;color:#000000"><br></div><div class=3D"gmail_default" sty=
le=3D"font-family:arial,helvetica,sans-serif;font-size:small;color:#000000"=
>Pleased to announce refinements to the BIP draft for OP_CHECKTEMPLATEVERIF=
Y (replaces previous OP_SECURETHEBAG BIP). Primarily:</div><div class=3D"gm=
ail_default" style=3D"font-family:arial,helvetica,sans-serif;font-size:smal=
l;color:#000000"><br></div><div class=3D"gmail_default" style=3D"font-famil=
y:arial,helvetica,sans-serif;font-size:small;color:#000000">1) Changed the =
name to something more fitting and acceptable to the community<br></div><di=
v class=3D"gmail_default" style=3D"font-family:arial,helvetica,sans-serif;f=
ont-size:small;color:#000000">2) Changed the opcode specification to use th=
e argument off of the stack with a primitive constexpr/literal tracker rath=
er than script lookahead</div><div class=3D"gmail_default" style=3D"font-fa=
mily:arial,helvetica,sans-serif;font-size:small;color:#000000">3) Permits f=
uture soft-fork updates to loosen or remove &quot;constexpr&quot; restricti=
ons</div><div class=3D"gmail_default" style=3D"font-family:arial,helvetica,=
sans-serif;font-size:small;color:#000000">4) More detailed comparison to al=
ternatives in the BIP, and why OP_CHECKTEMPLATEVERIFY should be favored eve=
n if a future technique may make it semi-redundant.<br></div><div class=3D"=
gmail_default" style=3D"font-family:arial,helvetica,sans-serif;font-size:sm=
all;color:#000000"><br></div><div class=3D"gmail_default" style=3D"font-fam=
ily:arial,helvetica,sans-serif;font-size:small;color:#000000">Please see:</=
div><div class=3D"gmail_default" style=3D"font-family:arial,helvetica,sans-=
serif;font-size:small;color:#000000">BIP:<a href=3D"https://github.com/Jere=
myRubin/bips/blob/ctv/bip-ctv.mediawiki" target=3D"_blank"> https://github.=
com/JeremyRubin/bips/blob/ctv/bip-ctv.mediawiki</a></div><div><div style=3D=
"font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)" c=
lass=3D"gmail_default">Reference Implementation:<a href=3D"https://github.c=
om/JeremyRubin/bitcoin/tree/checktemplateverify" target=3D"_blank"> https:/=
/github.com/JeremyRubin/bitcoin/tree/checktemplateverify</a></div><div styl=
e=3D"font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0=
)" class=3D"gmail_default"><br></div><div style=3D"font-family:arial,helvet=
ica,sans-serif;font-size:small;color:rgb(0,0,0)" class=3D"gmail_default">I =
believe this addresses all outstanding feedback on the design of this opcod=
e, unless there are any new concerns with these changes.<br></div><div styl=
e=3D"font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0=
)" class=3D"gmail_default"><br></div><div style=3D"font-family:arial,helvet=
ica,sans-serif;font-size:small;color:rgb(0,0,0)" class=3D"gmail_default">I&=
#39;m also planning to host a review workshop in Q1 2020, most likely in Sa=
n Francisco. Please fill out the form here <a href=3D"https://forms.gle/pke=
vHNj2pXH9MGee9">https://forms.gle/pkevHNj2pXH9MGee9</a> if you&#39;re inter=
ested in participating (even if you can&#39;t physically attend).<br></div>=
<div style=3D"font-family:arial,helvetica,sans-serif;font-size:small;color:=
rgb(0,0,0)" class=3D"gmail_default"><br></div><div style=3D"font-family:ari=
al,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)" class=3D"gmail_de=
fault">And as a &quot;but wait, there&#39;s more&quot;:<br></div><div style=
=3D"font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)=
" class=3D"gmail_default"><br></div><div style=3D"font-family:arial,helveti=
ca,sans-serif;font-size:small;color:rgb(0,0,0)" class=3D"gmail_default">1) =
RPC functions are under preliminary development, to aid in testing and eval=
uation of OP_CHECKTEMPLATEVERIFY. The new command `sendmanycompacted` shows=
 one way to use OP_CHECKTEMPLATEVERIFY. See: <a href=3D"https://github.com/=
JeremyRubin/bitcoin/tree/checktemplateverify-rpcs" target=3D"_blank">https:=
//github.com/JeremyRubin/bitcoin/tree/checktemplateverify-rpcs</a>. `sendma=
nycompacted` is still under early design. Standard practices for using OP_C=
HECKTEMPLATEVERIFY &amp; wallet behaviors may be codified into a separate B=
IP. This work generalizes even if an alternative strategy is used to achiev=
e the scalability techniques of OP_CHECKTEMPLATEVERIFY.<br></div><div style=
=3D"font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)=
" class=3D"gmail_default">2) Also under development are improvements to the=
 mempool which will, in conjunction with improvements like package relay, h=
elp make it safe to lift some of the mempool&#39;s restrictions on longchai=
ns specifically for OP_CHECKTEMPLATEVERIFY output trees. See: <a href=3D"ht=
tps://github.com/bitcoin/bitcoin/pull/17268" target=3D"_blank">https://gith=
ub.com/bitcoin/bitcoin/pull/17268 </a>This work offers an improvement irres=
pective of OP_CHECKTEMPLATEVERIFY&#39;s fate.<br></div><div style=3D"font-f=
amily:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)" class=3D=
"gmail_default"><br></div><div style=3D"font-family:arial,helvetica,sans-se=
rif;font-size:small;color:rgb(0,0,0)" class=3D"gmail_default"><br></div><di=
v style=3D"font-family:arial,helvetica,sans-serif;font-size:small;color:rgb=
(0,0,0)" class=3D"gmail_default">Neither of these are blockers for proceedi=
ng with the BIP, as they are ergonomics and usability improvements needed o=
nce/if the BIP is activated.<br></div><div style=3D"font-family:arial,helve=
tica,sans-serif;font-size:small;color:rgb(0,0,0)" class=3D"gmail_default"><=
br></div></div><div><div style=3D"font-family:arial,helvetica,sans-serif;fo=
nt-size:small;color:rgb(0,0,0)" class=3D"gmail_default">See prior mailing l=
ist discussions here:</div><div style=3D"font-family:arial,helvetica,sans-s=
erif;font-size:small;color:rgb(0,0,0)" class=3D"gmail_default"><br></div><d=
iv style=3D"font-family:arial,helvetica,sans-serif;font-size:small;color:rg=
b(0,0,0)" class=3D"gmail_default">* <a href=3D"https://lists.linuxfoundatio=
n.org/pipermail/bitcoin-dev/2019-May/016934.html" target=3D"_blank">https:/=
/lists.linuxfoundation.org/pipermail/bitcoin-dev/2019-May/016934.html</a></=
div><div style=3D"font-family:arial,helvetica,sans-serif;font-size:small;co=
lor:rgb(0,0,0)" class=3D"gmail_default">* <a href=3D"https://lists.linuxfou=
ndation.org/pipermail/bitcoin-dev/2019-June/016997.html" target=3D"_blank">=
https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2019-June/016997.ht=
ml</a></div></div><div><div style=3D"font-family:arial,helvetica,sans-serif=
;font-size:small;color:rgb(0,0,0)" class=3D"gmail_default"></div><div style=
=3D"font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)=
" class=3D"gmail_default"><br></div><div style=3D"font-family:arial,helveti=
ca,sans-serif;font-size:small;color:rgb(0,0,0)" class=3D"gmail_default">Tha=
nks to the many developers who have provided feedback on iterations of this=
 design.<br></div><div style=3D"font-family:arial,helvetica,sans-serif;font=
-size:small;color:rgb(0,0,0)" class=3D"gmail_default"><br></div><div style=
=3D"font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)=
" class=3D"gmail_default">Best,</div><div style=3D"font-family:arial,helvet=
ica,sans-serif;font-size:small;color:rgb(0,0,0)" class=3D"gmail_default"><b=
r></div><div style=3D"font-family:arial,helvetica,sans-serif;font-size:smal=
l;color:rgb(0,0,0)" class=3D"gmail_default">Jeremy</div><br></div><div><div=
 dir=3D"ltr" data-smartmail=3D"gmail_signature"><div dir=3D"ltr">--<br><a h=
ref=3D"https://twitter.com/JeremyRubin" target=3D"_blank">@JeremyRubin</a><=
a href=3D"https://twitter.com/JeremyRubin" target=3D"_blank"></a></div></di=
v></div></div>

--0000000000002e8d260598361cd0--