Skip to content

Commit ff46dd4

Browse files
committed
Merge #7540: Rename OP_NOP3 to OP_CHECKSEQUENCEVERIFY
18c975c Rename NOP3 to CHECSEQUENCEVERIFY in rpc tests (BtcDrak) 14d0130 Rename OP_NOP3 to OP_CHECKSEQUENCEVERIFY (BtcDrak)
2 parents 5077d2c + 18c975c commit ff46dd4

File tree

9 files changed

+71
-68
lines changed

9 files changed

+71
-68
lines changed

doc/release-notes.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,12 +125,15 @@ git merge commit are mentioned.
125125

126126
### RPC and REST
127127

128-
Asm script outputs now contain OP_CHECKLOCKTIMEVERIFY in place of OP_NOP2
129-
-------------------------------------------------------------------------
128+
Asm script outputs replacements for OP_NOP2 and OP_NOP3
129+
-------------------------------------------------------
130130

131131
OP_NOP2 has been renamed to OP_CHECKLOCKTIMEVERIFY by [BIP
132132
65](https://github.com/bitcoin/bips/blob/master/bip-0065.mediawiki)
133133

134+
OP_NOP3 has been renamed to OP_CHECKSEQUENCEVERIFY by [BIP
135+
112](https://github.com/bitcoin/bips/blob/master/bip-0112.mediawiki)
136+
134137
The following outputs are affected by this change:
135138
- RPC `getrawtransaction` (in verbose mode)
136139
- RPC `decoderawtransaction`

qa/rpc-tests/bip68-112-113-p2p.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ def create_bip112special(self, input, txversion):
173173
tx = self.create_transaction(self.nodes[0], input, self.nodeaddress, Decimal("49.98"))
174174
tx.nVersion = txversion
175175
signtx = self.sign_transaction(self.nodes[0], tx)
176-
signtx.vin[0].scriptSig = CScript([-1, OP_NOP3, OP_DROP] + list(CScript(signtx.vin[0].scriptSig)))
176+
signtx.vin[0].scriptSig = CScript([-1, OP_CHECKSEQUENCEVERIFY, OP_DROP] + list(CScript(signtx.vin[0].scriptSig)))
177177
return signtx
178178

179179
def create_bip112txs(self, bip112inputs, varyOP_CSV, txversion, locktime_delta = 0):
@@ -196,9 +196,9 @@ def create_bip112txs(self, bip112inputs, varyOP_CSV, txversion, locktime_delta =
196196
tx.nVersion = txversion
197197
signtx = self.sign_transaction(self.nodes[0], tx)
198198
if (varyOP_CSV):
199-
signtx.vin[0].scriptSig = CScript([relative_locktimes[b31][b25][b22][b18], OP_NOP3, OP_DROP] + list(CScript(signtx.vin[0].scriptSig)))
199+
signtx.vin[0].scriptSig = CScript([relative_locktimes[b31][b25][b22][b18], OP_CHECKSEQUENCEVERIFY, OP_DROP] + list(CScript(signtx.vin[0].scriptSig)))
200200
else:
201-
signtx.vin[0].scriptSig = CScript([base_relative_locktime, OP_NOP3, OP_DROP] + list(CScript(signtx.vin[0].scriptSig)))
201+
signtx.vin[0].scriptSig = CScript([base_relative_locktime, OP_CHECKSEQUENCEVERIFY, OP_DROP] + list(CScript(signtx.vin[0].scriptSig)))
202202
b18txs.append(signtx)
203203
b22txs.append(b18txs)
204204
b25txs.append(b22txs)

qa/rpc-tests/bip9-softforks.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from test_framework.mininode import CTransaction, NetworkThread
1010
from test_framework.blocktools import create_coinbase, create_block
1111
from test_framework.comptool import TestInstance, TestManager
12-
from test_framework.script import CScript, OP_1NEGATE, OP_NOP3, OP_DROP
12+
from test_framework.script import CScript, OP_1NEGATE, OP_CHECKSEQUENCEVERIFY, OP_DROP
1313
from io import BytesIO
1414
import time
1515
import itertools
@@ -220,7 +220,7 @@ def csv_invalidate(self, tx):
220220
'''Modify the signature in vin 0 of the tx to fail CSV
221221
Prepends -1 CSV DROP in the scriptSig itself.
222222
'''
223-
tx.vin[0].scriptSig = CScript([OP_1NEGATE, OP_NOP3, OP_DROP] +
223+
tx.vin[0].scriptSig = CScript([OP_1NEGATE, OP_CHECKSEQUENCEVERIFY, OP_DROP] +
224224
list(CScript(tx.vin[0].scriptSig)))
225225

226226
def sequence_lock_invalidate(self, tx):

qa/rpc-tests/test_framework/script.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ def __new__(cls, n):
233233
# expansion
234234
OP_NOP1 = CScriptOp(0xb0)
235235
OP_CHECKLOCKTIMEVERIFY = CScriptOp(0xb1)
236-
OP_NOP3 = CScriptOp(0xb2)
236+
OP_CHECKSEQUENCEVERIFY = CScriptOp(0xb2)
237237
OP_NOP4 = CScriptOp(0xb3)
238238
OP_NOP5 = CScriptOp(0xb4)
239239
OP_NOP6 = CScriptOp(0xb5)
@@ -360,7 +360,7 @@ def __new__(cls, n):
360360

361361
OP_NOP1,
362362
OP_CHECKLOCKTIMEVERIFY,
363-
OP_NOP3,
363+
OP_CHECKSEQUENCEVERIFY,
364364
OP_NOP4,
365365
OP_NOP5,
366366
OP_NOP6,
@@ -479,7 +479,7 @@ def __new__(cls, n):
479479
OP_CHECKMULTISIGVERIFY : 'OP_CHECKMULTISIGVERIFY',
480480
OP_NOP1 : 'OP_NOP1',
481481
OP_CHECKLOCKTIMEVERIFY : 'OP_CHECKLOCKTIMEVERIFY',
482-
OP_NOP3 : 'OP_NOP3',
482+
OP_CHECKSEQUENCEVERIFY : 'OP_CHECKSEQUENCEVERIFY',
483483
OP_NOP4 : 'OP_NOP4',
484484
OP_NOP5 : 'OP_NOP5',
485485
OP_NOP6 : 'OP_NOP6',
@@ -598,7 +598,7 @@ def __new__(cls, n):
598598
'OP_CHECKMULTISIGVERIFY' : OP_CHECKMULTISIGVERIFY,
599599
'OP_NOP1' : OP_NOP1,
600600
'OP_CHECKLOCKTIMEVERIFY' : OP_CHECKLOCKTIMEVERIFY,
601-
'OP_NOP3' : OP_NOP3,
601+
'OP_CHECKSEQUENCEVERIFY' : OP_CHECKSEQUENCEVERIFY,
602602
'OP_NOP4' : OP_NOP4,
603603
'OP_NOP5' : OP_NOP5,
604604
'OP_NOP6' : OP_NOP6,

src/script/script.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ const char* GetOpName(opcodetype opcode)
132132
// expanson
133133
case OP_NOP1 : return "OP_NOP1";
134134
case OP_CHECKLOCKTIMEVERIFY : return "OP_CHECKLOCKTIMEVERIFY";
135-
case OP_NOP3 : return "OP_NOP3";
135+
case OP_CHECKSEQUENCEVERIFY : return "OP_CHECKSEQUENCEVERIFY";
136136
case OP_NOP4 : return "OP_NOP4";
137137
case OP_NOP5 : return "OP_NOP5";
138138
case OP_NOP6 : return "OP_NOP6";

src/script/script.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -167,8 +167,8 @@ enum opcodetype
167167
OP_NOP1 = 0xb0,
168168
OP_CHECKLOCKTIMEVERIFY = 0xb1,
169169
OP_NOP2 = OP_CHECKLOCKTIMEVERIFY,
170-
OP_NOP3 = 0xb2,
171-
OP_CHECKSEQUENCEVERIFY = OP_NOP3,
170+
OP_CHECKSEQUENCEVERIFY = 0xb2,
171+
OP_NOP3 = OP_CHECKSEQUENCEVERIFY,
172172
OP_NOP4 = 0xb3,
173173
OP_NOP5 = 0xb4,
174174
OP_NOP6 = 0xb5,

src/test/data/script_tests.json

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -232,8 +232,8 @@
232232
["'abcdefghijklmnopqrstuvwxyz'", "HASH256 0x4c 0x20 0xca139bc10c2f660da42666f72e89a225936fc60f193c161124a672050c434671 EQUAL", "P2SH,STRICTENC", "OK"],
233233

234234

235-
["1","NOP1 CHECKLOCKTIMEVERIFY NOP3 NOP4 NOP5 NOP6 NOP7 NOP8 NOP9 NOP10 1 EQUAL", "P2SH,STRICTENC", "OK"],
236-
["'NOP_1_to_10' NOP1 CHECKLOCKTIMEVERIFY NOP3 NOP4 NOP5 NOP6 NOP7 NOP8 NOP9 NOP10","'NOP_1_to_10' EQUAL", "P2SH,STRICTENC", "OK"],
235+
["1","NOP1 CHECKLOCKTIMEVERIFY CHECKSEQUENCEVERIFY NOP4 NOP5 NOP6 NOP7 NOP8 NOP9 NOP10 1 EQUAL", "P2SH,STRICTENC", "OK"],
236+
["'NOP_1_to_10' NOP1 CHECKLOCKTIMEVERIFY CHECKSEQUENCEVERIFY NOP4 NOP5 NOP6 NOP7 NOP8 NOP9 NOP10","'NOP_1_to_10' EQUAL", "P2SH,STRICTENC", "OK"],
237237

238238
["1", "NOP", "P2SH,STRICTENC,DISCOURAGE_UPGRADABLE_NOPS", "OK", "Discourage NOPx flag allows OP_NOP"],
239239

@@ -443,7 +443,7 @@
443443

444444
["NOP", "NOP1 1", "P2SH,STRICTENC", "OK"],
445445
["NOP", "CHECKLOCKTIMEVERIFY 1", "P2SH,STRICTENC", "OK"],
446-
["NOP", "NOP3 1", "P2SH,STRICTENC", "OK"],
446+
["NOP", "CHECKSEQUENCEVERIFY 1", "P2SH,STRICTENC", "OK"],
447447
["NOP", "NOP4 1", "P2SH,STRICTENC", "OK"],
448448
["NOP", "NOP5 1", "P2SH,STRICTENC", "OK"],
449449
["NOP", "NOP6 1", "P2SH,STRICTENC", "OK"],
@@ -701,7 +701,7 @@
701701
["0x17 0x3014021077777777777777777777777777777777020001", "0 CHECKSIG NOT", "", "OK", "Zero-length S is correctly encoded for DERSIG"],
702702
["0x27 0x302402107777777777777777777777777777777702108777777777777777777777777777777701", "0 CHECKSIG NOT", "", "OK", "Negative S is correctly encoded"],
703703

704-
["2147483648", "NOP3", "CHECKSEQUENCEVERIFY", "OK", "CSV passes if stack top bit 1 << 31 is set"],
704+
["2147483648", "CHECKSEQUENCEVERIFY", "CHECKSEQUENCEVERIFY", "OK", "CSV passes if stack top bit 1 << 31 is set"],
705705

706706
["", "DEPTH", "P2SH,STRICTENC", "EVAL_FALSE", "Test the test: we should have an empty stack after scriptSig evaluation"],
707707
[" ", "DEPTH", "P2SH,STRICTENC", "EVAL_FALSE", "and multiple spaces should not change that."],
@@ -857,13 +857,13 @@
857857
["2 2 LSHIFT", "8 EQUAL", "P2SH,STRICTENC", "DISABLED_OPCODE", "disabled"],
858858
["2 1 RSHIFT", "1 EQUAL", "P2SH,STRICTENC", "DISABLED_OPCODE", "disabled"],
859859

860-
["1", "NOP1 CHECKLOCKTIMEVERIFY NOP3 NOP4 NOP5 NOP6 NOP7 NOP8 NOP9 NOP10 2 EQUAL", "P2SH,STRICTENC", "EVAL_FALSE"],
861-
["'NOP_1_to_10' NOP1 CHECKLOCKTIMEVERIFY NOP3 NOP4 NOP5 NOP6 NOP7 NOP8 NOP9 NOP10","'NOP_1_to_11' EQUAL", "P2SH,STRICTENC", "EVAL_FALSE"],
860+
["1", "NOP1 CHECKLOCKTIMEVERIFY CHECKSEQUENCEVERIFY NOP4 NOP5 NOP6 NOP7 NOP8 NOP9 NOP10 2 EQUAL", "P2SH,STRICTENC", "EVAL_FALSE"],
861+
["'NOP_1_to_10' NOP1 CHECKLOCKTIMEVERIFY CHECKSEQUENCEVERIFY NOP4 NOP5 NOP6 NOP7 NOP8 NOP9 NOP10","'NOP_1_to_11' EQUAL", "P2SH,STRICTENC", "EVAL_FALSE"],
862862

863863
["Ensure 100% coverage of discouraged NOPS"],
864864
["1", "NOP1", "P2SH,DISCOURAGE_UPGRADABLE_NOPS", "DISCOURAGE_UPGRADABLE_NOPS"],
865865
["1", "CHECKLOCKTIMEVERIFY", "P2SH,DISCOURAGE_UPGRADABLE_NOPS", "DISCOURAGE_UPGRADABLE_NOPS"],
866-
["1", "NOP3", "P2SH,DISCOURAGE_UPGRADABLE_NOPS", "DISCOURAGE_UPGRADABLE_NOPS"],
866+
["1", "CHECKSEQUENCEVERIFY", "P2SH,DISCOURAGE_UPGRADABLE_NOPS", "DISCOURAGE_UPGRADABLE_NOPS"],
867867
["1", "NOP4", "P2SH,DISCOURAGE_UPGRADABLE_NOPS", "DISCOURAGE_UPGRADABLE_NOPS"],
868868
["1", "NOP5", "P2SH,DISCOURAGE_UPGRADABLE_NOPS", "DISCOURAGE_UPGRADABLE_NOPS"],
869869
["1", "NOP6", "P2SH,DISCOURAGE_UPGRADABLE_NOPS", "DISCOURAGE_UPGRADABLE_NOPS"],
@@ -2119,11 +2119,11 @@
21192119
],
21202120

21212121
["CHECKSEQUENCEVERIFY tests"],
2122-
["", "NOP3", "CHECKSEQUENCEVERIFY", "INVALID_STACK_OPERATION", "CSV automatically fails on a empty stack"],
2123-
["-1", "NOP3", "CHECKSEQUENCEVERIFY", "NEGATIVE_LOCKTIME", "CSV automatically fails if stack top is negative"],
2124-
["0x0100", "NOP3", "CHECKSEQUENCEVERIFY,MINIMALDATA", "UNKNOWN_ERROR", "CSV fails if stack top is not minimally encoded"],
2125-
["0", "NOP3", "CHECKSEQUENCEVERIFY", "UNSATISFIED_LOCKTIME", "CSV fails if stack top bit 1 << 31 is set and the tx version < 2"],
2126-
["4294967296", "NOP3", "CHECKSEQUENCEVERIFY", "UNSATISFIED_LOCKTIME",
2122+
["", "CHECKSEQUENCEVERIFY", "CHECKSEQUENCEVERIFY", "INVALID_STACK_OPERATION", "CSV automatically fails on a empty stack"],
2123+
["-1", "CHECKSEQUENCEVERIFY", "CHECKSEQUENCEVERIFY", "NEGATIVE_LOCKTIME", "CSV automatically fails if stack top is negative"],
2124+
["0x0100", "CHECKSEQUENCEVERIFY", "CHECKSEQUENCEVERIFY,MINIMALDATA", "UNKNOWN_ERROR", "CSV fails if stack top is not minimally encoded"],
2125+
["0", "CHECKSEQUENCEVERIFY", "CHECKSEQUENCEVERIFY", "UNSATISFIED_LOCKTIME", "CSV fails if stack top bit 1 << 31 is set and the tx version < 2"],
2126+
["4294967296", "CHECKSEQUENCEVERIFY", "CHECKSEQUENCEVERIFY", "UNSATISFIED_LOCKTIME",
21272127
"CSV fails if stack top bit 1 << 31 is not set, and tx version < 2"],
21282128
["The End"]
21292129
]

src/test/data/tx_invalid.json

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -200,41 +200,41 @@
200200
["CHECKSEQUENCEVERIFY tests"],
201201

202202
["By-height locks, with argument just beyond txin.nSequence"],
203-
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "1 NOP3 1"]],
203+
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "1 CHECKSEQUENCEVERIFY 1"]],
204204
"020000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000", "P2SH,CHECKSEQUENCEVERIFY"],
205-
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "4259839 NOP3 1"]],
205+
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "4259839 CHECKSEQUENCEVERIFY 1"]],
206206
"020000000100010000000000000000000000000000000000000000000000000000000000000000000000feff40000100000000000000000000000000", "P2SH,CHECKSEQUENCEVERIFY"],
207207

208208
["By-time locks, with argument just beyond txin.nSequence (but within numerical boundries)"],
209-
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "4194305 NOP3 1"]],
209+
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "4194305 CHECKSEQUENCEVERIFY 1"]],
210210
"020000000100010000000000000000000000000000000000000000000000000000000000000000000000000040000100000000000000000000000000", "P2SH,CHECKSEQUENCEVERIFY"],
211-
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "4259839 NOP3 1"]],
211+
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "4259839 CHECKSEQUENCEVERIFY 1"]],
212212
"020000000100010000000000000000000000000000000000000000000000000000000000000000000000feff40000100000000000000000000000000", "P2SH,CHECKSEQUENCEVERIFY"],
213213

214214
["Argument missing"],
215-
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "NOP3 1"]],
215+
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "CHECKSEQUENCEVERIFY 1"]],
216216
"020000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000", "P2SH,CHECKSEQUENCEVERIFY"],
217217

218218
["Argument negative with by-blockheight txin.nSequence=0"],
219-
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "-1 NOP3 1"]],
219+
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "-1 CHECKSEQUENCEVERIFY 1"]],
220220
"020000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000", "P2SH,CHECKSEQUENCEVERIFY"],
221221

222222
["Argument negative with by-blocktime txin.nSequence=CTxIn::SEQUENCE_LOCKTIME_TYPE_FLAG"],
223-
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "-1 NOP3 1"]],
223+
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "-1 CHECKSEQUENCEVERIFY 1"]],
224224
"020000000100010000000000000000000000000000000000000000000000000000000000000000000000000040000100000000000000000000000000", "P2SH,CHECKSEQUENCEVERIFY"],
225225

226226
["Argument/tx height/time mismatch, both versions"],
227-
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "0 NOP3 1"]],
227+
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "0 CHECKSEQUENCEVERIFY 1"]],
228228
"020000000100010000000000000000000000000000000000000000000000000000000000000000000000000040000100000000000000000000000000", "P2SH,CHECKSEQUENCEVERIFY"],
229-
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "65535 NOP3 1"]],
229+
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "65535 CHECKSEQUENCEVERIFY 1"]],
230230
"020000000100010000000000000000000000000000000000000000000000000000000000000000000000000040000100000000000000000000000000", "P2SH,CHECKSEQUENCEVERIFY"],
231-
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "4194304 NOP3 1"]],
231+
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "4194304 CHECKSEQUENCEVERIFY 1"]],
232232
"020000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000", "P2SH,CHECKSEQUENCEVERIFY"],
233-
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "4259839 NOP3 1"]],
233+
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "4259839 CHECKSEQUENCEVERIFY 1"]],
234234
"020000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000", "P2SH,CHECKSEQUENCEVERIFY"],
235235

236236
["6 byte non-minimally-encoded arguments are invalid even if their contents are valid"],
237-
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "0x06 0x000000000000 NOP3 1"]],
237+
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "0x06 0x000000000000 CHECKSEQUENCEVERIFY 1"]],
238238
"020000000100010000000000000000000000000000000000000000000000000000000000000000000000ffff00000100000000000000000000000000", "P2SH,CHECKSEQUENCEVERIFY"],
239239

240240
["Failure due to failing CHECKSEQUENCEVERIFY in scriptSig"],
@@ -246,9 +246,9 @@
246246
"0200000001000100000000000000000000000000000000000000000000000000000000000000000000030251b2000000000100000000000000000000000000", "P2SH,CHECKSEQUENCEVERIFY"],
247247

248248
["Failure due to insufficient tx.nVersion (<2)"],
249-
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "0 NOP3 1"]],
249+
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "0 CHECKSEQUENCEVERIFY 1"]],
250250
"010000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000", "P2SH,CHECKSEQUENCEVERIFY"],
251-
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "4194304 NOP3 1"]],
251+
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "4194304 CHECKSEQUENCEVERIFY 1"]],
252252
"010000000100010000000000000000000000000000000000000000000000000000000000000000000000000040000100000000000000000000000000", "P2SH,CHECKSEQUENCEVERIFY"],
253253

254254
["Unknown witness program version (with DISCOURAGE_UPGRADABLE_WITNESS_PROGRAM)"],

0 commit comments

Comments
 (0)