mirror of
https://github.com/dashpay/dash.git
synced 2024-12-27 04:52:59 +01:00
Merge pull request #7213
37d271d
Rename OP_NOP2 to OP_CHECKLOCKTIMEVERIFY. (mb300sd)
This commit is contained in:
commit
595f93977c
@ -18,6 +18,20 @@ git merge commit are mentioned.
|
|||||||
|
|
||||||
### RPC and REST
|
### RPC and REST
|
||||||
|
|
||||||
|
Asm script outputs now contain OP_CHECKLOCKTIMEVERIFY in place of OP_NOP2
|
||||||
|
-------------------------------------------------------------------------
|
||||||
|
|
||||||
|
OP_NOP2 has been renamed to OP_CHECKLOCKTIMEVERIFY by [BIP
|
||||||
|
65](https://github.com/bitcoin/bips/blob/master/bip-0065.mediawiki)
|
||||||
|
|
||||||
|
The following outputs are affected by this change:
|
||||||
|
- RPC `getrawtransaction` (in verbose mode)
|
||||||
|
- RPC `decoderawtransaction`
|
||||||
|
- RPC `decodescript`
|
||||||
|
- REST `/rest/tx/` (JSON format)
|
||||||
|
- REST `/rest/block/` (JSON format when including extended tx details)
|
||||||
|
- `bitcoin-tx -json`
|
||||||
|
|
||||||
### Configuration and command-line options
|
### Configuration and command-line options
|
||||||
|
|
||||||
### Block and transaction handling
|
### Block and transaction handling
|
||||||
|
@ -9,7 +9,7 @@ from test_framework.util import *
|
|||||||
from test_framework.mininode import CTransaction, NetworkThread
|
from test_framework.mininode import CTransaction, NetworkThread
|
||||||
from test_framework.blocktools import create_coinbase, create_block
|
from test_framework.blocktools import create_coinbase, create_block
|
||||||
from test_framework.comptool import TestInstance, TestManager
|
from test_framework.comptool import TestInstance, TestManager
|
||||||
from test_framework.script import CScript, OP_1NEGATE, OP_NOP2, OP_DROP
|
from test_framework.script import CScript, OP_1NEGATE, OP_CHECKLOCKTIMEVERIFY, OP_DROP
|
||||||
from binascii import hexlify, unhexlify
|
from binascii import hexlify, unhexlify
|
||||||
import cStringIO
|
import cStringIO
|
||||||
import time
|
import time
|
||||||
@ -19,7 +19,7 @@ def cltv_invalidate(tx):
|
|||||||
|
|
||||||
Prepends -1 CLTV DROP in the scriptSig itself.
|
Prepends -1 CLTV DROP in the scriptSig itself.
|
||||||
'''
|
'''
|
||||||
tx.vin[0].scriptSig = CScript([OP_1NEGATE, OP_NOP2, OP_DROP] +
|
tx.vin[0].scriptSig = CScript([OP_1NEGATE, OP_CHECKLOCKTIMEVERIFY, OP_DROP] +
|
||||||
list(CScript(tx.vin[0].scriptSig)))
|
list(CScript(tx.vin[0].scriptSig)))
|
||||||
|
|
||||||
'''
|
'''
|
||||||
|
@ -102,13 +102,13 @@ class DecodeScriptTest(BitcoinTestFramework):
|
|||||||
# OP_IF
|
# OP_IF
|
||||||
# <receiver-pubkey> OP_CHECKSIGVERIFY
|
# <receiver-pubkey> OP_CHECKSIGVERIFY
|
||||||
# OP_ELSE
|
# OP_ELSE
|
||||||
# <lock-until> OP_NOP2 OP_DROP
|
# <lock-until> OP_CHECKLOCKTIMEVERIFY OP_DROP
|
||||||
# OP_ENDIF
|
# OP_ENDIF
|
||||||
# <sender-pubkey> OP_CHECKSIG
|
# <sender-pubkey> OP_CHECKSIG
|
||||||
#
|
#
|
||||||
# lock until block 500,000
|
# lock until block 500,000
|
||||||
rpc_result = self.nodes[0].decodescript('63' + push_public_key + 'ad670320a107b17568' + push_public_key + 'ac')
|
rpc_result = self.nodes[0].decodescript('63' + push_public_key + 'ad670320a107b17568' + push_public_key + 'ac')
|
||||||
assert_equal('OP_IF ' + public_key + ' OP_CHECKSIGVERIFY OP_ELSE 500000 OP_NOP2 OP_DROP OP_ENDIF ' + public_key + ' OP_CHECKSIG', rpc_result['asm'])
|
assert_equal('OP_IF ' + public_key + ' OP_CHECKSIGVERIFY OP_ELSE 500000 OP_CHECKLOCKTIMEVERIFY OP_DROP OP_ENDIF ' + public_key + ' OP_CHECKSIG', rpc_result['asm'])
|
||||||
|
|
||||||
def decoderawtransaction_asm_sighashtype(self):
|
def decoderawtransaction_asm_sighashtype(self):
|
||||||
"""Tests decoding scripts via RPC command "decoderawtransaction".
|
"""Tests decoding scripts via RPC command "decoderawtransaction".
|
||||||
|
@ -226,7 +226,7 @@ OP_CHECKMULTISIGVERIFY = CScriptOp(0xaf)
|
|||||||
|
|
||||||
# expansion
|
# expansion
|
||||||
OP_NOP1 = CScriptOp(0xb0)
|
OP_NOP1 = CScriptOp(0xb0)
|
||||||
OP_NOP2 = CScriptOp(0xb1)
|
OP_CHECKLOCKTIMEVERIFY = CScriptOp(0xb1)
|
||||||
OP_NOP3 = CScriptOp(0xb2)
|
OP_NOP3 = CScriptOp(0xb2)
|
||||||
OP_NOP4 = CScriptOp(0xb3)
|
OP_NOP4 = CScriptOp(0xb3)
|
||||||
OP_NOP5 = CScriptOp(0xb4)
|
OP_NOP5 = CScriptOp(0xb4)
|
||||||
@ -353,7 +353,7 @@ VALID_OPCODES = {
|
|||||||
OP_CHECKMULTISIGVERIFY,
|
OP_CHECKMULTISIGVERIFY,
|
||||||
|
|
||||||
OP_NOP1,
|
OP_NOP1,
|
||||||
OP_NOP2,
|
OP_CHECKLOCKTIMEVERIFY,
|
||||||
OP_NOP3,
|
OP_NOP3,
|
||||||
OP_NOP4,
|
OP_NOP4,
|
||||||
OP_NOP5,
|
OP_NOP5,
|
||||||
@ -472,7 +472,7 @@ OPCODE_NAMES.update({
|
|||||||
OP_CHECKMULTISIG : 'OP_CHECKMULTISIG',
|
OP_CHECKMULTISIG : 'OP_CHECKMULTISIG',
|
||||||
OP_CHECKMULTISIGVERIFY : 'OP_CHECKMULTISIGVERIFY',
|
OP_CHECKMULTISIGVERIFY : 'OP_CHECKMULTISIGVERIFY',
|
||||||
OP_NOP1 : 'OP_NOP1',
|
OP_NOP1 : 'OP_NOP1',
|
||||||
OP_NOP2 : 'OP_NOP2',
|
OP_CHECKLOCKTIMEVERIFY : 'OP_CHECKLOCKTIMEVERIFY',
|
||||||
OP_NOP3 : 'OP_NOP3',
|
OP_NOP3 : 'OP_NOP3',
|
||||||
OP_NOP4 : 'OP_NOP4',
|
OP_NOP4 : 'OP_NOP4',
|
||||||
OP_NOP5 : 'OP_NOP5',
|
OP_NOP5 : 'OP_NOP5',
|
||||||
@ -591,7 +591,7 @@ OPCODES_BY_NAME = {
|
|||||||
'OP_CHECKMULTISIG' : OP_CHECKMULTISIG,
|
'OP_CHECKMULTISIG' : OP_CHECKMULTISIG,
|
||||||
'OP_CHECKMULTISIGVERIFY' : OP_CHECKMULTISIGVERIFY,
|
'OP_CHECKMULTISIGVERIFY' : OP_CHECKMULTISIGVERIFY,
|
||||||
'OP_NOP1' : OP_NOP1,
|
'OP_NOP1' : OP_NOP1,
|
||||||
'OP_NOP2' : OP_NOP2,
|
'OP_CHECKLOCKTIMEVERIFY' : OP_CHECKLOCKTIMEVERIFY,
|
||||||
'OP_NOP3' : OP_NOP3,
|
'OP_NOP3' : OP_NOP3,
|
||||||
'OP_NOP4' : OP_NOP4,
|
'OP_NOP4' : OP_NOP4,
|
||||||
'OP_NOP5' : OP_NOP5,
|
'OP_NOP5' : OP_NOP5,
|
||||||
|
@ -131,7 +131,7 @@ const char* GetOpName(opcodetype opcode)
|
|||||||
|
|
||||||
// expanson
|
// expanson
|
||||||
case OP_NOP1 : return "OP_NOP1";
|
case OP_NOP1 : return "OP_NOP1";
|
||||||
case OP_NOP2 : return "OP_NOP2";
|
case OP_CHECKLOCKTIMEVERIFY : return "OP_CHECKLOCKTIMEVERIFY";
|
||||||
case OP_NOP3 : return "OP_NOP3";
|
case OP_NOP3 : return "OP_NOP3";
|
||||||
case OP_NOP4 : return "OP_NOP4";
|
case OP_NOP4 : return "OP_NOP4";
|
||||||
case OP_NOP5 : return "OP_NOP5";
|
case OP_NOP5 : return "OP_NOP5";
|
||||||
|
@ -162,8 +162,8 @@ enum opcodetype
|
|||||||
|
|
||||||
// expansion
|
// expansion
|
||||||
OP_NOP1 = 0xb0,
|
OP_NOP1 = 0xb0,
|
||||||
OP_NOP2 = 0xb1,
|
OP_CHECKLOCKTIMEVERIFY = 0xb1,
|
||||||
OP_CHECKLOCKTIMEVERIFY = OP_NOP2,
|
OP_NOP2 = OP_CHECKLOCKTIMEVERIFY,
|
||||||
OP_NOP3 = 0xb2,
|
OP_NOP3 = 0xb2,
|
||||||
OP_NOP4 = 0xb3,
|
OP_NOP4 = 0xb3,
|
||||||
OP_NOP5 = 0xb4,
|
OP_NOP5 = 0xb4,
|
||||||
|
@ -160,12 +160,12 @@
|
|||||||
["2 2 LSHIFT", "8 EQUAL", "P2SH,STRICTENC", "disabled"],
|
["2 2 LSHIFT", "8 EQUAL", "P2SH,STRICTENC", "disabled"],
|
||||||
["2 1 RSHIFT", "1 EQUAL", "P2SH,STRICTENC", "disabled"],
|
["2 1 RSHIFT", "1 EQUAL", "P2SH,STRICTENC", "disabled"],
|
||||||
|
|
||||||
["1","NOP1 NOP2 NOP3 NOP4 NOP5 NOP6 NOP7 NOP8 NOP9 NOP10 2 EQUAL", "P2SH,STRICTENC"],
|
["1","NOP1 CHECKLOCKTIMEVERIFY NOP3 NOP4 NOP5 NOP6 NOP7 NOP8 NOP9 NOP10 2 EQUAL", "P2SH,STRICTENC"],
|
||||||
["'NOP_1_to_10' NOP1 NOP2 NOP3 NOP4 NOP5 NOP6 NOP7 NOP8 NOP9 NOP10","'NOP_1_to_11' EQUAL", "P2SH,STRICTENC"],
|
["'NOP_1_to_10' NOP1 CHECKLOCKTIMEVERIFY NOP3 NOP4 NOP5 NOP6 NOP7 NOP8 NOP9 NOP10","'NOP_1_to_11' EQUAL", "P2SH,STRICTENC"],
|
||||||
|
|
||||||
["Ensure 100% coverage of discouraged NOPS"],
|
["Ensure 100% coverage of discouraged NOPS"],
|
||||||
["1", "NOP1", "P2SH,DISCOURAGE_UPGRADABLE_NOPS"],
|
["1", "NOP1", "P2SH,DISCOURAGE_UPGRADABLE_NOPS"],
|
||||||
["1", "NOP2", "P2SH,DISCOURAGE_UPGRADABLE_NOPS"],
|
["1", "CHECKLOCKTIMEVERIFY", "P2SH,DISCOURAGE_UPGRADABLE_NOPS"],
|
||||||
["1", "NOP3", "P2SH,DISCOURAGE_UPGRADABLE_NOPS"],
|
["1", "NOP3", "P2SH,DISCOURAGE_UPGRADABLE_NOPS"],
|
||||||
["1", "NOP4", "P2SH,DISCOURAGE_UPGRADABLE_NOPS"],
|
["1", "NOP4", "P2SH,DISCOURAGE_UPGRADABLE_NOPS"],
|
||||||
["1", "NOP5", "P2SH,DISCOURAGE_UPGRADABLE_NOPS"],
|
["1", "NOP5", "P2SH,DISCOURAGE_UPGRADABLE_NOPS"],
|
||||||
|
@ -232,8 +232,8 @@
|
|||||||
["'abcdefghijklmnopqrstuvwxyz'", "HASH256 0x4c 0x20 0xca139bc10c2f660da42666f72e89a225936fc60f193c161124a672050c434671 EQUAL", "P2SH,STRICTENC"],
|
["'abcdefghijklmnopqrstuvwxyz'", "HASH256 0x4c 0x20 0xca139bc10c2f660da42666f72e89a225936fc60f193c161124a672050c434671 EQUAL", "P2SH,STRICTENC"],
|
||||||
|
|
||||||
|
|
||||||
["1","NOP1 NOP2 NOP3 NOP4 NOP5 NOP6 NOP7 NOP8 NOP9 NOP10 1 EQUAL", "P2SH,STRICTENC"],
|
["1","NOP1 CHECKLOCKTIMEVERIFY NOP3 NOP4 NOP5 NOP6 NOP7 NOP8 NOP9 NOP10 1 EQUAL", "P2SH,STRICTENC"],
|
||||||
["'NOP_1_to_10' NOP1 NOP2 NOP3 NOP4 NOP5 NOP6 NOP7 NOP8 NOP9 NOP10","'NOP_1_to_10' EQUAL", "P2SH,STRICTENC"],
|
["'NOP_1_to_10' NOP1 CHECKLOCKTIMEVERIFY NOP3 NOP4 NOP5 NOP6 NOP7 NOP8 NOP9 NOP10","'NOP_1_to_10' EQUAL", "P2SH,STRICTENC"],
|
||||||
|
|
||||||
["1", "NOP", "P2SH,STRICTENC,DISCOURAGE_UPGRADABLE_NOPS", "Discourage NOPx flag allows OP_NOP"],
|
["1", "NOP", "P2SH,STRICTENC,DISCOURAGE_UPGRADABLE_NOPS", "Discourage NOPx flag allows OP_NOP"],
|
||||||
|
|
||||||
@ -442,7 +442,7 @@
|
|||||||
["NOP", "CODESEPARATOR 1", "P2SH,STRICTENC"],
|
["NOP", "CODESEPARATOR 1", "P2SH,STRICTENC"],
|
||||||
|
|
||||||
["NOP", "NOP1 1", "P2SH,STRICTENC"],
|
["NOP", "NOP1 1", "P2SH,STRICTENC"],
|
||||||
["NOP", "NOP2 1", "P2SH,STRICTENC"],
|
["NOP", "CHECKLOCKTIMEVERIFY 1", "P2SH,STRICTENC"],
|
||||||
["NOP", "NOP3 1", "P2SH,STRICTENC"],
|
["NOP", "NOP3 1", "P2SH,STRICTENC"],
|
||||||
["NOP", "NOP4 1", "P2SH,STRICTENC"],
|
["NOP", "NOP4 1", "P2SH,STRICTENC"],
|
||||||
["NOP", "NOP5 1", "P2SH,STRICTENC"],
|
["NOP", "NOP5 1", "P2SH,STRICTENC"],
|
||||||
|
@ -127,66 +127,66 @@
|
|||||||
["CHECKLOCKTIMEVERIFY tests"],
|
["CHECKLOCKTIMEVERIFY tests"],
|
||||||
|
|
||||||
["By-height locks, with argument just beyond tx nLockTime"],
|
["By-height locks, with argument just beyond tx nLockTime"],
|
||||||
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "1 NOP2 1"]],
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "1 CHECKLOCKTIMEVERIFY 1"]],
|
||||||
"010000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000", "P2SH,CHECKLOCKTIMEVERIFY"],
|
"010000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000", "P2SH,CHECKLOCKTIMEVERIFY"],
|
||||||
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "499999999 NOP2 1"]],
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "499999999 CHECKLOCKTIMEVERIFY 1"]],
|
||||||
"0100000001000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000fe64cd1d", "P2SH,CHECKLOCKTIMEVERIFY"],
|
"0100000001000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000fe64cd1d", "P2SH,CHECKLOCKTIMEVERIFY"],
|
||||||
|
|
||||||
["By-time locks, with argument just beyond tx nLockTime (but within numerical boundaries)"],
|
["By-time locks, with argument just beyond tx nLockTime (but within numerical boundaries)"],
|
||||||
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "500000001 NOP2 1"]],
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "500000001 CHECKLOCKTIMEVERIFY 1"]],
|
||||||
"01000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000065cd1d", "P2SH,CHECKLOCKTIMEVERIFY"],
|
"01000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000065cd1d", "P2SH,CHECKLOCKTIMEVERIFY"],
|
||||||
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "4294967295 NOP2 1"]],
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "4294967295 CHECKLOCKTIMEVERIFY 1"]],
|
||||||
"0100000001000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000feffffff", "P2SH,CHECKLOCKTIMEVERIFY"],
|
"0100000001000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000feffffff", "P2SH,CHECKLOCKTIMEVERIFY"],
|
||||||
|
|
||||||
["Argument missing"],
|
["Argument missing"],
|
||||||
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "NOP2 1"]],
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "CHECKLOCKTIMEVERIFY 1"]],
|
||||||
"010000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000", "P2SH,CHECKLOCKTIMEVERIFY"],
|
"010000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000", "P2SH,CHECKLOCKTIMEVERIFY"],
|
||||||
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "1"]],
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "1"]],
|
||||||
"010000000100010000000000000000000000000000000000000000000000000000000000000000000001b1010000000100000000000000000000000000", "P2SH,CHECKLOCKTIMEVERIFY"],
|
"010000000100010000000000000000000000000000000000000000000000000000000000000000000001b1010000000100000000000000000000000000", "P2SH,CHECKLOCKTIMEVERIFY"],
|
||||||
|
|
||||||
["Argument negative with by-blockheight nLockTime=0"],
|
["Argument negative with by-blockheight nLockTime=0"],
|
||||||
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "-1 NOP2 1"]],
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "-1 CHECKLOCKTIMEVERIFY 1"]],
|
||||||
"010000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000", "P2SH,CHECKLOCKTIMEVERIFY"],
|
"010000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000", "P2SH,CHECKLOCKTIMEVERIFY"],
|
||||||
|
|
||||||
["Argument negative with by-blocktime nLockTime=500,000,000"],
|
["Argument negative with by-blocktime nLockTime=500,000,000"],
|
||||||
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "-1 NOP2 1"]],
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "-1 CHECKLOCKTIMEVERIFY 1"]],
|
||||||
"01000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000065cd1d", "P2SH,CHECKLOCKTIMEVERIFY"],
|
"01000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000065cd1d", "P2SH,CHECKLOCKTIMEVERIFY"],
|
||||||
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "1"]],
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "1"]],
|
||||||
"010000000100010000000000000000000000000000000000000000000000000000000000000000000004005194b1010000000100000000000000000002000000", "P2SH,CHECKLOCKTIMEVERIFY"],
|
"010000000100010000000000000000000000000000000000000000000000000000000000000000000004005194b1010000000100000000000000000002000000", "P2SH,CHECKLOCKTIMEVERIFY"],
|
||||||
|
|
||||||
["Input locked"],
|
["Input locked"],
|
||||||
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "0 NOP2 1"]],
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "0 CHECKLOCKTIMEVERIFY 1"]],
|
||||||
"010000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffffff0100000000000000000000000000", "P2SH,CHECKLOCKTIMEVERIFY"],
|
"010000000100010000000000000000000000000000000000000000000000000000000000000000000000ffffffff0100000000000000000000000000", "P2SH,CHECKLOCKTIMEVERIFY"],
|
||||||
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "0"]],
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "0"]],
|
||||||
"01000000010001000000000000000000000000000000000000000000000000000000000000000000000251b1ffffffff0100000000000000000002000000", "P2SH,CHECKLOCKTIMEVERIFY"],
|
"01000000010001000000000000000000000000000000000000000000000000000000000000000000000251b1ffffffff0100000000000000000002000000", "P2SH,CHECKLOCKTIMEVERIFY"],
|
||||||
|
|
||||||
["Another input being unlocked isn't sufficient; the CHECKLOCKTIMEVERIFY-using input must be unlocked"],
|
["Another input being unlocked isn't sufficient; the CHECKLOCKTIMEVERIFY-using input must be unlocked"],
|
||||||
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "0 NOP2 1"] ,
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "0 CHECKLOCKTIMEVERIFY 1"] ,
|
||||||
["0000000000000000000000000000000000000000000000000000000000000200", 1, "1"]],
|
["0000000000000000000000000000000000000000000000000000000000000200", 1, "1"]],
|
||||||
"010000000200010000000000000000000000000000000000000000000000000000000000000000000000ffffffff00020000000000000000000000000000000000000000000000000000000000000100000000000000000100000000000000000000000000", "P2SH,CHECKLOCKTIMEVERIFY"],
|
"010000000200010000000000000000000000000000000000000000000000000000000000000000000000ffffffff00020000000000000000000000000000000000000000000000000000000000000100000000000000000100000000000000000000000000", "P2SH,CHECKLOCKTIMEVERIFY"],
|
||||||
|
|
||||||
["Argument/tx height/time mismatch, both versions"],
|
["Argument/tx height/time mismatch, both versions"],
|
||||||
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "0 NOP2 1"]],
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "0 CHECKLOCKTIMEVERIFY 1"]],
|
||||||
"01000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000065cd1d", "P2SH,CHECKLOCKTIMEVERIFY"],
|
"01000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000065cd1d", "P2SH,CHECKLOCKTIMEVERIFY"],
|
||||||
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "0"]],
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "0"]],
|
||||||
"01000000010001000000000000000000000000000000000000000000000000000000000000000000000251b100000000010000000000000000000065cd1d", "P2SH,CHECKLOCKTIMEVERIFY"],
|
"01000000010001000000000000000000000000000000000000000000000000000000000000000000000251b100000000010000000000000000000065cd1d", "P2SH,CHECKLOCKTIMEVERIFY"],
|
||||||
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "499999999 NOP2 1"]],
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "499999999 CHECKLOCKTIMEVERIFY 1"]],
|
||||||
"01000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000065cd1d", "P2SH,CHECKLOCKTIMEVERIFY"],
|
"01000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000065cd1d", "P2SH,CHECKLOCKTIMEVERIFY"],
|
||||||
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "500000000 NOP2 1"]],
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "500000000 CHECKLOCKTIMEVERIFY 1"]],
|
||||||
"010000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000", "P2SH,CHECKLOCKTIMEVERIFY"],
|
"010000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000", "P2SH,CHECKLOCKTIMEVERIFY"],
|
||||||
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "500000000 NOP2 1"]],
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "500000000 CHECKLOCKTIMEVERIFY 1"]],
|
||||||
"0100000001000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000ff64cd1d", "P2SH,CHECKLOCKTIMEVERIFY"],
|
"0100000001000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000ff64cd1d", "P2SH,CHECKLOCKTIMEVERIFY"],
|
||||||
|
|
||||||
["Argument 2^32 with nLockTime=2^32-1"],
|
["Argument 2^32 with nLockTime=2^32-1"],
|
||||||
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "4294967296 NOP2 1"]],
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "4294967296 CHECKLOCKTIMEVERIFY 1"]],
|
||||||
"0100000001000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000ffffffff", "P2SH,CHECKLOCKTIMEVERIFY"],
|
"0100000001000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000ffffffff", "P2SH,CHECKLOCKTIMEVERIFY"],
|
||||||
|
|
||||||
["Same, but with nLockTime=2^31-1"],
|
["Same, but with nLockTime=2^31-1"],
|
||||||
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "2147483648 NOP2 1"]],
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "2147483648 CHECKLOCKTIMEVERIFY 1"]],
|
||||||
"0100000001000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000ffffff7f", "P2SH,CHECKLOCKTIMEVERIFY"],
|
"0100000001000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000ffffff7f", "P2SH,CHECKLOCKTIMEVERIFY"],
|
||||||
|
|
||||||
["6 byte non-minimally-encoded arguments are invalid even if their contents are valid"],
|
["6 byte non-minimally-encoded arguments are invalid even if their contents are valid"],
|
||||||
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "0x06 0x000000000000 NOP2 1"]],
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "0x06 0x000000000000 CHECKLOCKTIMEVERIFY 1"]],
|
||||||
"010000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000", "P2SH,CHECKLOCKTIMEVERIFY"],
|
"010000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000", "P2SH,CHECKLOCKTIMEVERIFY"],
|
||||||
|
|
||||||
["Failure due to failing CHECKLOCKTIMEVERIFY in scriptSig"],
|
["Failure due to failing CHECKLOCKTIMEVERIFY in scriptSig"],
|
||||||
|
@ -190,35 +190,35 @@
|
|||||||
["CHECKLOCKTIMEVERIFY tests"],
|
["CHECKLOCKTIMEVERIFY tests"],
|
||||||
|
|
||||||
["By-height locks, with argument == 0 and == tx nLockTime"],
|
["By-height locks, with argument == 0 and == tx nLockTime"],
|
||||||
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "0 NOP2 1"]],
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "0 CHECKLOCKTIMEVERIFY 1"]],
|
||||||
"010000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000", "P2SH,CHECKLOCKTIMEVERIFY"],
|
"010000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000", "P2SH,CHECKLOCKTIMEVERIFY"],
|
||||||
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "499999999 NOP2 1"]],
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "499999999 CHECKLOCKTIMEVERIFY 1"]],
|
||||||
"0100000001000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000ff64cd1d", "P2SH,CHECKLOCKTIMEVERIFY"],
|
"0100000001000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000ff64cd1d", "P2SH,CHECKLOCKTIMEVERIFY"],
|
||||||
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "0 NOP2 1"]],
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "0 CHECKLOCKTIMEVERIFY 1"]],
|
||||||
"0100000001000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000ff64cd1d", "P2SH,CHECKLOCKTIMEVERIFY"],
|
"0100000001000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000ff64cd1d", "P2SH,CHECKLOCKTIMEVERIFY"],
|
||||||
|
|
||||||
["By-time locks, with argument just beyond tx nLockTime (but within numerical boundaries)"],
|
["By-time locks, with argument just beyond tx nLockTime (but within numerical boundaries)"],
|
||||||
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "500000000 NOP2 1"]],
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "500000000 CHECKLOCKTIMEVERIFY 1"]],
|
||||||
"01000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000065cd1d", "P2SH,CHECKLOCKTIMEVERIFY"],
|
"01000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000065cd1d", "P2SH,CHECKLOCKTIMEVERIFY"],
|
||||||
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "4294967295 NOP2 1"]],
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "4294967295 CHECKLOCKTIMEVERIFY 1"]],
|
||||||
"0100000001000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000ffffffff", "P2SH,CHECKLOCKTIMEVERIFY"],
|
"0100000001000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000ffffffff", "P2SH,CHECKLOCKTIMEVERIFY"],
|
||||||
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "500000000 NOP2 1"]],
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "500000000 CHECKLOCKTIMEVERIFY 1"]],
|
||||||
"0100000001000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000ffffffff", "P2SH,CHECKLOCKTIMEVERIFY"],
|
"0100000001000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000ffffffff", "P2SH,CHECKLOCKTIMEVERIFY"],
|
||||||
|
|
||||||
["Any non-maxint nSequence is fine"],
|
["Any non-maxint nSequence is fine"],
|
||||||
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "0 NOP2 1"]],
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "0 CHECKLOCKTIMEVERIFY 1"]],
|
||||||
"010000000100010000000000000000000000000000000000000000000000000000000000000000000000feffffff0100000000000000000000000000", "P2SH,CHECKLOCKTIMEVERIFY"],
|
"010000000100010000000000000000000000000000000000000000000000000000000000000000000000feffffff0100000000000000000000000000", "P2SH,CHECKLOCKTIMEVERIFY"],
|
||||||
|
|
||||||
["The argument can be calculated rather than created directly by a PUSHDATA"],
|
["The argument can be calculated rather than created directly by a PUSHDATA"],
|
||||||
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "499999999 1ADD NOP2 1"]],
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "499999999 1ADD CHECKLOCKTIMEVERIFY 1"]],
|
||||||
"01000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000065cd1d", "P2SH,CHECKLOCKTIMEVERIFY"],
|
"01000000010001000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000065cd1d", "P2SH,CHECKLOCKTIMEVERIFY"],
|
||||||
|
|
||||||
["Perhaps even by an ADD producing a 5-byte result that is out of bounds for other opcodes"],
|
["Perhaps even by an ADD producing a 5-byte result that is out of bounds for other opcodes"],
|
||||||
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "2147483647 2147483647 ADD NOP2 1"]],
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "2147483647 2147483647 ADD CHECKLOCKTIMEVERIFY 1"]],
|
||||||
"0100000001000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000feffffff", "P2SH,CHECKLOCKTIMEVERIFY"],
|
"0100000001000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000feffffff", "P2SH,CHECKLOCKTIMEVERIFY"],
|
||||||
|
|
||||||
["5 byte non-minimally-encoded arguments are valid"],
|
["5 byte non-minimally-encoded arguments are valid"],
|
||||||
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "0x05 0x0000000000 NOP2 1"]],
|
[[["0000000000000000000000000000000000000000000000000000000000000100", 0, "0x05 0x0000000000 CHECKLOCKTIMEVERIFY 1"]],
|
||||||
"010000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000", "P2SH,CHECKLOCKTIMEVERIFY"],
|
"010000000100010000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000", "P2SH,CHECKLOCKTIMEVERIFY"],
|
||||||
|
|
||||||
["Valid CHECKLOCKTIMEVERIFY in scriptSig"],
|
["Valid CHECKLOCKTIMEVERIFY in scriptSig"],
|
||||||
|
@ -985,10 +985,10 @@ BOOST_AUTO_TEST_CASE(script_IsPushOnly_on_invalid_scripts)
|
|||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(script_GetScriptAsm)
|
BOOST_AUTO_TEST_CASE(script_GetScriptAsm)
|
||||||
{
|
{
|
||||||
BOOST_CHECK_EQUAL("OP_NOP2", ScriptToAsmStr(CScript() << OP_NOP2, true));
|
BOOST_CHECK_EQUAL("OP_CHECKLOCKTIMEVERIFY", ScriptToAsmStr(CScript() << OP_NOP2, true));
|
||||||
BOOST_CHECK_EQUAL("OP_NOP2", ScriptToAsmStr(CScript() << OP_CHECKLOCKTIMEVERIFY, true));
|
BOOST_CHECK_EQUAL("OP_CHECKLOCKTIMEVERIFY", ScriptToAsmStr(CScript() << OP_CHECKLOCKTIMEVERIFY, true));
|
||||||
BOOST_CHECK_EQUAL("OP_NOP2", ScriptToAsmStr(CScript() << OP_NOP2));
|
BOOST_CHECK_EQUAL("OP_CHECKLOCKTIMEVERIFY", ScriptToAsmStr(CScript() << OP_NOP2));
|
||||||
BOOST_CHECK_EQUAL("OP_NOP2", ScriptToAsmStr(CScript() << OP_CHECKLOCKTIMEVERIFY));
|
BOOST_CHECK_EQUAL("OP_CHECKLOCKTIMEVERIFY", ScriptToAsmStr(CScript() << OP_CHECKLOCKTIMEVERIFY));
|
||||||
|
|
||||||
string derSig("304502207fa7a6d1e0ee81132a269ad84e68d695483745cde8b541e3bf630749894e342a022100c1f7ab20e13e22fb95281a870f3dcf38d782e53023ee313d741ad0cfbc0c5090");
|
string derSig("304502207fa7a6d1e0ee81132a269ad84e68d695483745cde8b541e3bf630749894e342a022100c1f7ab20e13e22fb95281a870f3dcf38d782e53023ee313d741ad0cfbc0c5090");
|
||||||
string pubKey("03b0da749730dc9b4b1f4a14d6902877a92541f5368778853d9c4a0cb7802dcfb2");
|
string pubKey("03b0da749730dc9b4b1f4a14d6902877a92541f5368778853d9c4a0cb7802dcfb2");
|
||||||
|
Loading…
Reference in New Issue
Block a user