summaryrefslogtreecommitdiff
path: root/bc/18d66181612f6498fb1e9ba35a3ad8381d3c73
blob: 178d0795792444d39015263dcfbae48489b32e31 (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
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 3470D7D
	for <bitcoin-dev@lists.linuxfoundation.org>;
	Wed, 25 Nov 2015 23:06:11 +0000 (UTC)
X-Greylist: whitelisted by SQLgrey-1.7.6
Received: from mail-io0-f169.google.com (mail-io0-f169.google.com
	[209.85.223.169])
	by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 3E4308A
	for <bitcoin-dev@lists.linuxfoundation.org>;
	Wed, 25 Nov 2015 23:06:10 +0000 (UTC)
Received: by iofh3 with SMTP id h3so68471608iof.3
	for <bitcoin-dev@lists.linuxfoundation.org>;
	Wed, 25 Nov 2015 15:06:09 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=friedenbach-org.20150623.gappssmtp.com; s=20150623;
	h=mime-version:in-reply-to:references:from:date:message-id:subject:to
	:cc:content-type;
	bh=2L8gpRhFf4VNZaMC7RQHwYe1/zhoT4NH0jPsxMOf0EQ=;
	b=rJfX2HMwXiIpfInXsRpZhUmLoKQaXibiHNlGIfWQoCDOVQoe5FbcsyOmEIweX8d141
	vBblxjZ0STiUCht/h6Jl/+Dqz/9dKdPS5ZAOMrHhE4WL/IYHr8Pjzpwb6HjgtPEIqhnY
	I35TvTw0jTQd0rdR0hIC2hJQjRYgCGdKSU3PWwOW6w/3lZlH5gTPMpacvH/SrxmzuS1v
	746UZWP2TomelZEWXUPWuodkTPY/bB1/aUzMquW0rPOOK1cW5BLe2rMRBu5GMPEVCdlW
	PpzVvUC0JArGWYBxdU4f/nRw9xIvi9EvCDz2gz7wx9+kMi2EuVk+NFJ7fAfL8JotAlCV
	Mk1w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:mime-version:in-reply-to:references:from:date
	:message-id:subject:to:cc:content-type;
	bh=2L8gpRhFf4VNZaMC7RQHwYe1/zhoT4NH0jPsxMOf0EQ=;
	b=QssQVN0/EtpQaTJjBG7ZqxAXA8xMjx4YoqGr4BTDqvFUmuuqvUVkqf3I/Zohncmw7I
	rsyYLCOSeq//CEtxBfYO14heR7/52vXITack8d3ph0VDwv0BPeTGwKXcofpF1kfREvuC
	4I+XhKhym2SuyyTBmJedYSReuiCgJtlPU7CAPIJVL2qJoJ9C+WsobCQ/4sQ5S1+XNjUk
	lHTADZmOTQU4yrEYHDgLvmb+z/KgPNjQj5vVt+qGxn8wal1mElLSgdfvl6N6VCO5+JSe
	gAj+P0aPF44Hr38nJK6fC+Lu2magoBUxaHjrJd3C0brDIZw7HJ8S65C64QklVZ4STfCA
	1ZMw==
X-Gm-Message-State: ALoCoQmUEzTKyFnJ5DiFNDMVFqohkzJKsMLQ3c3jOp6IgQQPGrEj1gOKxxQvtR2D02paY1SsKpgY
X-Received: by 10.107.31.70 with SMTP id f67mr42853128iof.105.1448492769413;
	Wed, 25 Nov 2015 15:06:09 -0800 (PST)
MIME-Version: 1.0
Received: by 10.107.133.217 with HTTP; Wed, 25 Nov 2015 15:05:50 -0800 (PST)
X-Originating-IP: [101.15.97.45]
In-Reply-To: <CADJgMzs0w4L7ma42RCzT5dYDcG2aY1_04G1khcFPFPE6mmB=-A@mail.gmail.com>
References: <CADJgMzs0w4L7ma42RCzT5dYDcG2aY1_04G1khcFPFPE6mmB=-A@mail.gmail.com>
From: Mark Friedenbach <mark@friedenbach.org>
Date: Wed, 25 Nov 2015 15:05:50 -0800
Message-ID: <CAOG=w-v0_dfZS2=XfKQzRZ9Vq2Z2YqUO2_cuvOheuUrD4dbYtw@mail.gmail.com>
To: Btc Drak <btcdrak@gmail.com>
Content-Type: multipart/alternative; boundary=001a1140ff00fb19b805256580a9
X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00,DKIM_SIGNED,
	DKIM_VALID,HTML_MESSAGE,RCVD_IN_DNSWL_LOW autolearn=ham version=3.3.1
X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on
	smtp1.linux-foundation.org
Cc: Bitcoin Dev <bitcoin-dev@lists.linuxfoundation.org>
Subject: Re: [bitcoin-dev] Alternative name for CHECKSEQUENCEVERIFY (BIP112)
X-BeenThere: bitcoin-dev@lists.linuxfoundation.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Bitcoin Development 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: Wed, 25 Nov 2015 23:06:11 -0000

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

Looks like I'm the long dissenting voice here? As the originator of the
name CHECKSEQUENCEVERIFY, perhaps I can explain why the name was
appropriately chosen and why the proposed alternatives don't stand up.

First, the names are purposefully chosen to illustrate what they do:

What does CHECKLOCKTIMEVERIFY do? It verifies the range of tx.nLockTime.
What does CHECKSEQUENCEVERIFY do? It verifies the range of txin.nSequence.

Second, the semantics are not limited to relative lock-time / maturity
only. They both leave open ranges with possible, but currently undefined
future consensus-enforced behavior. We don't know what sort of future
behavior these values might trigger, but the associated opcodes are generic
enough to handle them:

CHECKLOCKTIMEVERIFY will pass an nSequence between 1985 and 2009, even
though such constraints have no meaning in Bitcoin.
CHECKSEQUENCEVERIFY is explicitly written to permit a 5-byte push operand,
while checking only 17 of the available 39 bits of both the operand and the
nSequence. Indeed the most recent semantic change of CSV was justified in
part because it relaxes all constraints over the values of these bits
freeing them for other purposes in transaction validation and/or future
extensions of the opcode semantics.

Third, single-byte opcode space is limited. There are less than 10 such
opcodes left. Maybe space won't be so precious in a post-segwitness world,
but I don't want to presume that just yet.


As for the alternatives, they capture only the initial use case of
nSequence. My objection would relax if nSequence were renamed, but I think
that would be too disruptive and unnecessary. In any case, the imagined use
cases for CHECKSEQUENCEVERIFY has to do with sequencing execution pathways
of script, so it's not a stretch in meaning. Previously CHECKMATURITYVERIFY
was a hypothicated opcode that directly checked the minimum age of inputs
of a transaction. The indirect naming of CHECKSEQUENCEVERIFY on the other
hand is due to its indirect behavior. RELATIVELOCKTIMEVERIFY was also a
hypothicated opcode that would check a ficticious nRelativeLockTime field,
which does not exist. Again my objection would go away if we renamed
nSequence, but I actually think the nSequence name is better...

On Tue, Nov 24, 2015 at 2:30 AM, Btc Drak via bitcoin-dev <
bitcoin-dev@lists.linuxfoundation.org> wrote:

> BIP68 introduces relative lock-time semantics to part of the nSequence
> field leaving the majority of bits undefined for other future applications.
>
> BIP112 introduces opcode CHECKSEQUENCEVERIFY (OP_CSV) that is specifically
> limited to verifying transaction inputs according to BIP68's relative
> lock-time[1], yet the _name_ OP_CSV is much boarder than that. We spent
> months limiting the number of bits used in BIP68 so they would be available
> for future use cases, thus we have acknowledged there will be completely
> different usecases that take advantage of unused nSequence bits.
>
> For this reason I believe the BIP112 should be renamed specifically for
> it's usecase, which is verifying the time/maturity of transaction inputs
> relative to their inclusion in a block.
>
> Suggestions:-
>
> CHECKMATURITYVERIFY
> RELATIVELOCKTIMEVERIFY
> RCHECKLOCKTIMEVERIFY
> RCLTV
>
> We could of course softfork additional meaning into OP_CSV each time we
> add new sequence number usecases, but that would become obscure and
> confusing. We have already shown there is no shortage of opcodes so it
> makes no sense to cram everything into one generic opcode.
>
> TL;DR: let's give BIP112 opcode a name that reflects it's actual usecase
> rather than focusing on the bitcoin internals.
>
> [1]
> https://github.com/bitcoin/bitcoin/pull/6564/files#diff-be2905e2f5218ecdbe4e55637dac75f3R1223
>
> _______________________________________________
> bitcoin-dev mailing list
> bitcoin-dev@lists.linuxfoundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>
>

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

<div dir=3D"ltr">Looks like I&#39;m the long dissenting voice here? As the =
originator of the name CHECKSEQUENCEVERIFY, perhaps I can explain why the n=
ame was appropriately chosen and why the proposed alternatives don&#39;t st=
and up.<br><br>First, the names are purposefully chosen to illustrate what =
they do:<br><br>What does CHECKLOCKTIMEVERIFY do? It verifies the range of =
tx.nLockTime.<br>What does CHECKSEQUENCEVERIFY do? It verifies the range of=
 txin.nSequence.<br><br>Second, the semantics are not limited to relative l=
ock-time / maturity only. They both leave open ranges with possible, but cu=
rrently undefined future consensus-enforced behavior. We don&#39;t know wha=
t sort of future behavior these values might trigger, but the associated op=
codes are generic enough to handle them:<br><br>CHECKLOCKTIMEVERIFY will pa=
ss an nSequence between 1985 and 2009, even though such constraints have no=
 meaning in Bitcoin.<br>CHECKSEQUENCEVERIFY is explicitly written to permit=
 a 5-byte push operand, while checking only 17 of the available 39 bits of =
both the operand and the nSequence. Indeed the most recent semantic change =
of CSV was justified in part because it relaxes all constraints over the va=
lues of these bits freeing them for other purposes in transaction validatio=
n and/or future extensions of the opcode semantics.<br><br>Third, single-by=
te opcode space is limited. There are less than 10 such opcodes left. Maybe=
 space won&#39;t be so precious in a post-segwitness world, but I don&#39;t=
 want to presume that just yet.<br><br><br>As for the alternatives, they ca=
pture only the initial use case of nSequence. My objection would relax if n=
Sequence were renamed, but I think that would be too disruptive and unneces=
sary. In any case, the imagined use cases for CHECKSEQUENCEVERIFY has to do=
 with sequencing execution pathways of script, so it&#39;s not a stretch in=
 meaning. Previously CHECKMATURITYVERIFY was a hypothicated opcode that dir=
ectly checked the minimum age of inputs of a transaction. The indirect nami=
ng of CHECKSEQUENCEVERIFY on the other hand is due to its indirect behavior=
. RELATIVELOCKTIMEVERIFY was also a hypothicated opcode that would check a =
ficticious nRelativeLockTime field, which does not exist. Again my objectio=
n would go away if we renamed nSequence, but I actually think the nSequence=
 name is better...<br><div class=3D"gmail_extra"><br><div class=3D"gmail_qu=
ote">On Tue, Nov 24, 2015 at 2:30 AM, Btc Drak via bitcoin-dev <span dir=3D=
"ltr">&lt;<a href=3D"mailto:bitcoin-dev@lists.linuxfoundation.org" target=
=3D"_blank">bitcoin-dev@lists.linuxfoundation.org</a>&gt;</span> wrote:<br>=
<blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p=
x #ccc solid;padding-left:1ex"><div dir=3D"ltr">BIP68 introduces relative l=
ock-time semantics to part of the nSequence field leaving the majority of b=
its undefined for other future applications.<div><br></div><div>BIP112 intr=
oduces opcode CHECKSEQUENCEVERIFY (OP_CSV) that is specifically limited to =
verifying transaction inputs according to BIP68&#39;s relative lock-time[1]=
, yet the _name_ OP_CSV is much boarder than that. We spent months limiting=
 the number of bits used in BIP68 so they would be available for future use=
 cases, thus we have acknowledged there will be completely different usecas=
es that take advantage of unused nSequence bits.</div><div><br></div><div>F=
or this reason I believe the BIP112 should be renamed specifically for it&#=
39;s usecase, which is verifying the time/maturity of transaction inputs re=
lative to their inclusion in a block.</div><div><br></div><div><div>Suggest=
ions:-</div><div><br></div><div>CHECKMATURITYVERIFY<br></div><div>RELATIVEL=
OCKTIMEVERIFY<br></div><div>RCHECKLOCKTIMEVERIFY<br></div><div>RCLTV</div><=
/div><div><br></div><div>We could of course softfork additional meaning int=
o OP_CSV each time we add new sequence number usecases, but that would beco=
me obscure and confusing. We have already shown there is no shortage of opc=
odes so it makes no sense to cram everything into one generic opcode.</div>=
<div><br></div><div>TL;DR: let&#39;s give BIP112 opcode a name that reflect=
s it&#39;s actual usecase rather than focusing on the bitcoin internals.</d=
iv><div><br></div><div>[1]=C2=A0<a href=3D"https://github.com/bitcoin/bitco=
in/pull/6564/files#diff-be2905e2f5218ecdbe4e55637dac75f3R1223" target=3D"_b=
lank">https://github.com/bitcoin/bitcoin/pull/6564/files#diff-be2905e2f5218=
ecdbe4e55637dac75f3R1223</a><br></div></div>
<br>_______________________________________________<br>
bitcoin-dev mailing list<br>
<a href=3D"mailto:bitcoin-dev@lists.linuxfoundation.org" target=3D"_blank">=
bitcoin-dev@lists.linuxfoundation.org</a><br>
<a href=3D"https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev" =
rel=3D"noreferrer" target=3D"_blank">https://lists.linuxfoundation.org/mail=
man/listinfo/bitcoin-dev</a><br>
<br></blockquote></div><br></div></div>

--001a1140ff00fb19b805256580a9--