Initial Vexta Core v0.1.0 release
This commit is contained in:
commit
25c454329d
2481 changed files with 689289 additions and 0 deletions
1
test/util/data/blanktxv1.hex
Normal file
1
test/util/data/blanktxv1.hex
Normal file
|
|
@ -0,0 +1 @@
|
|||
01000000000000000000
|
||||
14
test/util/data/blanktxv1.json
Normal file
14
test/util/data/blanktxv1.json
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"txid": "d21633ba23f70118185227be58a63527675641ad37967e2aa461559f577aec43",
|
||||
"hash": "d21633ba23f70118185227be58a63527675641ad37967e2aa461559f577aec43",
|
||||
"version": 1,
|
||||
"size": 10,
|
||||
"vsize": 10,
|
||||
"weight": 40,
|
||||
"locktime": 0,
|
||||
"vin": [
|
||||
],
|
||||
"vout": [
|
||||
],
|
||||
"hex": "01000000000000000000"
|
||||
}
|
||||
1
test/util/data/blanktxv2.hex
Normal file
1
test/util/data/blanktxv2.hex
Normal file
|
|
@ -0,0 +1 @@
|
|||
02000000000000000000
|
||||
14
test/util/data/blanktxv2.json
Normal file
14
test/util/data/blanktxv2.json
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"txid": "4ebd325a4b394cff8c57e8317ccf5a8d0e2bdf1b8526f8aad6c8e43d8240621a",
|
||||
"hash": "4ebd325a4b394cff8c57e8317ccf5a8d0e2bdf1b8526f8aad6c8e43d8240621a",
|
||||
"version": 2,
|
||||
"size": 10,
|
||||
"vsize": 10,
|
||||
"weight": 40,
|
||||
"locktime": 0,
|
||||
"vin": [
|
||||
],
|
||||
"vout": [
|
||||
],
|
||||
"hex": "02000000000000000000"
|
||||
}
|
||||
595
test/util/data/digibyte-util-test.json
Normal file
595
test/util/data/digibyte-util-test.json
Normal file
|
|
@ -0,0 +1,595 @@
|
|||
[
|
||||
{ "exec": "./digibyte-util",
|
||||
"args": ["foo"],
|
||||
"return_code": 1,
|
||||
"error_txt": "Error parsing command line arguments: Invalid command 'foo'",
|
||||
"description": ""
|
||||
},
|
||||
{ "exec": "./digibyte-util",
|
||||
"args": ["help"],
|
||||
"return_code": 1,
|
||||
"error_txt": "Error parsing command line arguments: Invalid command 'help'",
|
||||
"description": "`help` raises an error. Use `-help`"
|
||||
},
|
||||
{ "exec": "./digibyte-util",
|
||||
"args": ["grind"],
|
||||
"return_code": 1,
|
||||
"error_txt": "Must specify block header to grind",
|
||||
"description": ""
|
||||
},
|
||||
{ "exec": "./digibyte-util",
|
||||
"args": ["grind", "1", "2"],
|
||||
"return_code": 1,
|
||||
"error_txt": "Must specify block header to grind",
|
||||
"description": ""
|
||||
},
|
||||
{ "exec": "./digibyte-util",
|
||||
"args": ["grind", "aa"],
|
||||
"return_code": 1,
|
||||
"error_txt": "Could not decode block header",
|
||||
"description": ""
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-create", "nversion=1"],
|
||||
"output_cmp": "blanktxv1.hex",
|
||||
"description": "Creates a blank v1 transaction"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-json","-create", "nversion=1"],
|
||||
"output_cmp": "blanktxv1.json",
|
||||
"description": "Creates a blank v1 transaction (output in json)"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-"],
|
||||
"input": "blanktxv2.hex",
|
||||
"output_cmp": "blanktxv2.hex",
|
||||
"description": "Creates a blank transaction when nothing is piped into digibyte-tx"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-json","-create"],
|
||||
"output_cmp": "blanktxv2.json",
|
||||
"description": "Creates a blank transaction (output in json)"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-json","-"],
|
||||
"input": "blanktxv2.hex",
|
||||
"output_cmp": "blanktxv2.json",
|
||||
"description": "Creates a blank transaction when nothing is piped into digibyte-tx (output in json)"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-create", "nversion=1foo"],
|
||||
"return_code": 1,
|
||||
"error_txt": "error: Invalid TX version requested",
|
||||
"description": "Tests the check for invalid nversion value"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-", "delin=1"],
|
||||
"input": "tx394b54bb.hex",
|
||||
"output_cmp": "tt-delin1-out.hex",
|
||||
"description": "Deletes a single input from a transaction"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-json", "-", "delin=1"],
|
||||
"input": "tx394b54bb.hex",
|
||||
"output_cmp": "tt-delin1-out.json",
|
||||
"description": "Deletes a single input from a transaction (output in json)"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-", "delin=31"],
|
||||
"input": "tx394b54bb.hex",
|
||||
"return_code": 1,
|
||||
"error_txt": "error: Invalid TX input index '31'",
|
||||
"description": "Attempts to delete an input with a bad index from a transaction. Expected to fail."
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-", "delin=1foo"],
|
||||
"input": "tx394b54bb.hex",
|
||||
"return_code": 1,
|
||||
"error_txt": "error: Invalid TX input index",
|
||||
"description": "Tests the check for an invalid input index with delin"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-", "delout=1"],
|
||||
"input": "tx394b54bb.hex",
|
||||
"output_cmp": "tt-delout1-out.hex",
|
||||
"description": "Deletes a single output from a transaction"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-json", "-", "delout=1"],
|
||||
"input": "tx394b54bb.hex",
|
||||
"output_cmp": "tt-delout1-out.json",
|
||||
"description": "Deletes a single output from a transaction (output in json)"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-", "delout=2"],
|
||||
"input": "tx394b54bb.hex",
|
||||
"return_code": 1,
|
||||
"error_txt": "error: Invalid TX output index '2'",
|
||||
"description": "Attempts to delete an output with a bad index from a transaction. Expected to fail."
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-", "delout=1foo"],
|
||||
"input": "tx394b54bb.hex",
|
||||
"return_code": 1,
|
||||
"error_txt": "error: Invalid TX output index",
|
||||
"description": "Tests the check for an invalid output index with delout"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-", "locktime=317000"],
|
||||
"input": "tx394b54bb.hex",
|
||||
"output_cmp": "tt-locktime317000-out.hex",
|
||||
"description": "Adds an nlocktime to a transaction"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-json", "-", "locktime=317000"],
|
||||
"input": "tx394b54bb.hex",
|
||||
"output_cmp": "tt-locktime317000-out.json",
|
||||
"description": "Adds an nlocktime to a transaction (output in json)"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-create", "locktime=317000foo"],
|
||||
"return_code": 1,
|
||||
"error_txt": "error: Invalid TX locktime requested",
|
||||
"description": "Tests the check for invalid locktime value"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args":
|
||||
["-create",
|
||||
"in=Z897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0"],
|
||||
"return_code": 1,
|
||||
"error_txt": "error: invalid TX input txid",
|
||||
"description": "Tests the check for an invalid txid invalid hex"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args":
|
||||
["-create",
|
||||
"in=5897de6bd6:0"],
|
||||
"return_code": 1,
|
||||
"error_txt": "error: invalid TX input txid",
|
||||
"description": "Tests the check for an invalid txid valid hex but too short"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args":
|
||||
["-create",
|
||||
"in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f12:0"],
|
||||
"return_code": 1,
|
||||
"error_txt": "error: invalid TX input txid",
|
||||
"description": "Tests the check for an invalid txid valid hex but too long"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args":
|
||||
["-create",
|
||||
"in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0",
|
||||
"replaceable=0foo"],
|
||||
"return_code": 1,
|
||||
"error_txt": "error: Invalid TX input index",
|
||||
"description": "Tests the check for an invalid input index with replaceable"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args":
|
||||
["-create",
|
||||
"in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0x"],
|
||||
"return_code": 1,
|
||||
"error_txt": "error: invalid TX input vout",
|
||||
"description": "Tests the check for an invalid vout value when adding an input"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args":
|
||||
["-create",
|
||||
"outaddr=1"],
|
||||
"return_code": 1,
|
||||
"error_txt": "error: TX output missing or too many separators",
|
||||
"description": "Malformed outaddr argument (no address specified). Expected to fail."
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args":
|
||||
["-create",
|
||||
"outaddr=1:DB3eGJECruhgXkb9P9iW25bqZ8Q8z6FBQq:garbage"],
|
||||
"return_code": 1,
|
||||
"error_txt": "error: TX output missing or too many separators",
|
||||
"description": "Malformed outaddr argument (too many separators). Expected to fail."
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args":
|
||||
["-create",
|
||||
"outpubkey=0"],
|
||||
"return_code": 1,
|
||||
"error_txt": "error: TX output missing or too many separators",
|
||||
"description": "Malformed outpubkey argument (no pubkey specified). Expected to fail."
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args":
|
||||
["-create",
|
||||
"outpubkey=0:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:W:non53nse"],
|
||||
"return_code": 1,
|
||||
"error_txt": "error: TX output missing or too many separators",
|
||||
"description": "Malformed outpubkey argument (too many separators). Expected to fail."
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args":
|
||||
["-create",
|
||||
"in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0",
|
||||
"in=bf829c6bcf84579331337659d31f89dfd138f7f7785802d5501c92333145ca7c:18",
|
||||
"in=22a6f904655d53ae2ff70e701a0bbd90aa3975c0f40bfc6cc996a9049e31cdfc:1",
|
||||
"outaddr=0.18:DB3eGJECruhgXkb9P9iW25bqZ8Q8z6FBQq",
|
||||
"outaddr=4:DN4yzowAzPbtM6Hh4HsNjFH8QjurZ4Nzhz"],
|
||||
"output_cmp": "txcreate1.hex",
|
||||
"description": "Creates a new transaction with three inputs and two outputs"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args":
|
||||
["-json",
|
||||
"-create",
|
||||
"in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0",
|
||||
"in=bf829c6bcf84579331337659d31f89dfd138f7f7785802d5501c92333145ca7c:18",
|
||||
"in=22a6f904655d53ae2ff70e701a0bbd90aa3975c0f40bfc6cc996a9049e31cdfc:1",
|
||||
"outaddr=0.18:DB3eGJECruhgXkb9P9iW25bqZ8Q8z6FBQq",
|
||||
"outaddr=4:DN4yzowAzPbtM6Hh4HsNjFH8QjurZ4Nzhz"],
|
||||
"output_cmp": "txcreate1.json",
|
||||
"description": "Creates a new transaction with three inputs and two outputs (output in json)"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-create", "outscript=0:"],
|
||||
"output_cmp": "txcreate2.hex",
|
||||
"description": "Creates a new transaction with a single empty output script"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-json", "-create", "outscript=0:"],
|
||||
"output_cmp": "txcreate2.json",
|
||||
"description": "Creates a new transaction with a single empty output script (output in json)"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["02000000000100000000000000000000000000"],
|
||||
"output_cmp": "txcreate2.hex",
|
||||
"description": "Parses a transaction with no inputs and a single output script"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-json", "02000000000100000000000000000000000000"],
|
||||
"output_cmp": "txcreate2.json",
|
||||
"description": "Parses a transaction with no inputs and a single output script (output in json)"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-create", "outscript=0:123badscript"],
|
||||
"return_code": 1,
|
||||
"error_txt": "error: script parse error: unknown opcode",
|
||||
"description": "Create a new transaction with an invalid output script"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-create", "outscript=0:OP_DROP", "nversion=1"],
|
||||
"output_cmp": "txcreatescript1.hex",
|
||||
"description": "Create a new transaction with a single output script (OP_DROP)"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-json", "-create", "outscript=0:OP_DROP", "nversion=1"],
|
||||
"output_cmp": "txcreatescript1.json",
|
||||
"description": "Create a new transaction with a single output script (OP_DROP) (output as json)"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-create", "outscript=0:OP_DROP:S", "nversion=1"],
|
||||
"output_cmp": "txcreatescript2.hex",
|
||||
"description": "Create a new transaction with a single output script (OP_DROP) in a P2SH"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-json", "-create", "outscript=0:OP_DROP:S", "nversion=1"],
|
||||
"output_cmp": "txcreatescript2.json",
|
||||
"description": "Create a new transaction with a single output script (OP_DROP) in a P2SH (output as json)"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-create", "outscript=0:OP_DROP:W", "nversion=1"],
|
||||
"output_cmp": "txcreatescript3.hex",
|
||||
"description": "Create a new transaction with a single output script (OP_DROP) in a P2WSH"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-json", "-create", "outscript=0:OP_DROP:W", "nversion=1"],
|
||||
"output_cmp": "txcreatescript3.json",
|
||||
"description": "Create a new transaction with a single output script (OP_DROP) in a P2WSH (output as json)"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-create", "outscript=0:OP_DROP:WS", "nversion=1"],
|
||||
"output_cmp": "txcreatescript4.hex",
|
||||
"description": "Create a new transaction with a single output script (OP_DROP) in a P2WSH, wrapped in a P2SH"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-json", "-create", "outscript=0:OP_DROP:WS", "nversion=1"],
|
||||
"output_cmp": "txcreatescript4.json",
|
||||
"description": "Create a new transaction with a single output script (OP_DROP) in a P2SH, wrapped in a P2SH (output as json)"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-create", "outscript=0:9999999999"],
|
||||
"return_code": 1,
|
||||
"error_txt": "error: script parse error: decimal numeric value only allowed in the range -0xFFFFFFFF...0xFFFFFFFF",
|
||||
"description": "Try to parse an output script with a decimal number above the allowed range"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-create", "outscript=0:4294967296"],
|
||||
"return_code": 1,
|
||||
"error_txt": "error: script parse error: decimal numeric value only allowed in the range -0xFFFFFFFF...0xFFFFFFFF",
|
||||
"description": "Try to parse an output script with a decimal number just above the allowed range"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-create", "outscript=0:4294967295"],
|
||||
"output_cmp": "txcreatescript5.hex",
|
||||
"description": "Try to parse an output script with a decimal number at the upper limit of the allowed range"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-create", "outscript=0:-9999999999"],
|
||||
"return_code": 1,
|
||||
"error_txt": "error: script parse error: decimal numeric value only allowed in the range -0xFFFFFFFF...0xFFFFFFFF",
|
||||
"description": "Try to parse an output script with a decimal number below the allowed range"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-create", "outscript=0:-4294967296"],
|
||||
"return_code": 1,
|
||||
"error_txt": "error: script parse error: decimal numeric value only allowed in the range -0xFFFFFFFF...0xFFFFFFFF",
|
||||
"description": "Try to parse an output script with a decimal number just below the allowed range"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-create", "outscript=0:-4294967295"],
|
||||
"output_cmp": "txcreatescript6.hex",
|
||||
"description": "Try to parse an output script with a decimal number at the lower limit of the allowed range"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args":
|
||||
["-create", "nversion=1",
|
||||
"in=4d49a71ec9da436f71ec4ee231d04f292a29cd316f598bb7068feccabdc59485:0",
|
||||
"set=privatekeys:[\"5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsreAnchuDf\"]",
|
||||
"set=prevtxs:[{\"txid\":\"4d49a71ec9da436f71ec4ee231d04f292a29cd316f598bb7068feccabdc59485\",\"vout\":0,\"scriptPubKey\":\"76a91491b24bf9f5288532960ac687abb035127b1d28a588ac\"}]",
|
||||
"sign=ALL",
|
||||
"outaddr=0.001:DN4yzowAzPbtM6Hh4HsNjFH8QjurZ4Nzhz"],
|
||||
"output_cmp": "txcreatesignv1.hex",
|
||||
"description": "Creates a new v1 transaction with a single input and a single output, and then signs the transaction"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args":
|
||||
["-json",
|
||||
"-create", "nversion=1",
|
||||
"in=4d49a71ec9da436f71ec4ee231d04f292a29cd316f598bb7068feccabdc59485:0",
|
||||
"set=privatekeys:[\"5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsreAnchuDf\"]",
|
||||
"set=prevtxs:[{\"txid\":\"4d49a71ec9da436f71ec4ee231d04f292a29cd316f598bb7068feccabdc59485\",\"vout\":0,\"scriptPubKey\":\"76a91491b24bf9f5288532960ac687abb035127b1d28a588ac\"}]",
|
||||
"sign=ALL",
|
||||
"outaddr=0.001:DN4yzowAzPbtM6Hh4HsNjFH8QjurZ4Nzhz"],
|
||||
"output_cmp": "txcreatesignv1.json",
|
||||
"description": "Creates a new v1 transaction with a single input and a single output, and then signs the transaction (output in json)"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args":
|
||||
["-create",
|
||||
"in=4d49a71ec9da436f71ec4ee231d04f292a29cd316f598bb7068feccabdc59485:0",
|
||||
"set=privatekeys:[\"5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsreAnchuDf\"]",
|
||||
"set=prevtxs:[{\"txid\":\"4d49a71ec9da436f71ec4ee231d04f292a29cd316f598bb7068feccabdc59485\",\"vout\":0,\"scriptPubKey\":\"76a91491b24bf9f5288532960ac687abb035127b1d28a588ac\"}]",
|
||||
"sign=ALL",
|
||||
"outaddr=0.001:DN4yzowAzPbtM6Hh4HsNjFH8QjurZ4Nzhz"],
|
||||
"output_cmp": "txcreatesignv2.hex",
|
||||
"description": "Creates a new transaction with a single input and a single output, and then signs the transaction"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args":
|
||||
["-create",
|
||||
"in=4d49a71ec9da436f71ec4ee231d04f292a29cd316f598bb7068feccabdc59485:0",
|
||||
"set=privatekeys:[\"5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsreAnchuDf\"]",
|
||||
"set=prevtxs:[{\"txid\":\"4d49a71ec9da436f71ec4ee231d04f292a29cd316f598bb7068feccabdc59485\",\"vout\":\"0foo\",\"scriptPubKey\":\"76a91491b24bf9f5288532960ac687abb035127b1d28a588ac\"}]",
|
||||
"sign=ALL",
|
||||
"outaddr=0.001:DN4yzowAzPbtM6Hh4HsNjFH8QjurZ4Nzhz"],
|
||||
"return_code": 1,
|
||||
"error_txt": "error: prevtxs internal object typecheck fail",
|
||||
"description": "Tests the check for invalid vout index in prevtxs for sign"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args":
|
||||
["-create",
|
||||
"in=4d49a71ec9da436f71ec4ee231d04f292a29cd316f598bb7068feccabdc59485:0",
|
||||
"set=privatekeys:[\"5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsreAnchuDf\"]",
|
||||
"set=prevtxs:[{\"txid\":\"Zd49a71ec9da436f71ec4ee231d04f292a29cd316f598bb7068feccabdc59412\",\"vout\":0,\"scriptPubKey\":\"76a91491b24bf9f5288532960ac687abb035127b1d28a588ac\"}]",
|
||||
"sign=ALL",
|
||||
"outaddr=0.001:193P6LtvS4nCnkDvM9uXn1gsSRqh4aDAz7"],
|
||||
"return_code": 1,
|
||||
"error_txt": "error: txid must be hexadecimal string (not 'Zd49a71ec9da436f71ec4ee231d04f292a29cd316f598bb7068feccabdc59412')",
|
||||
"description": "Tests the check for invalid txid due to invalid hex"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args":
|
||||
["-create",
|
||||
"in=4d49a71ec9da436f71ec4ee231d04f292a29cd316f598bb7068feccabdc59485:0",
|
||||
"set=privatekeys:[\"5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsreAnchuDf\"]",
|
||||
"set=prevtxs:[{\"txid\":\"4d49a71ec9da436f71ec4ee231d04f292a29cd316f598bb7068feccabdc594\",\"vout\":0,\"scriptPubKey\":\"76a91491b24bf9f5288532960ac687abb035127b1d28a588ac\"}]",
|
||||
"sign=ALL",
|
||||
"outaddr=0.001:193P6LtvS4nCnkDvM9uXn1gsSRqh4aDAz7"],
|
||||
"return_code": 1,
|
||||
"error_txt": "error: txid must be hexadecimal string (not '4d49a71ec9da436f71ec4ee231d04f292a29cd316f598bb7068feccabdc594')",
|
||||
"description": "Tests the check for invalid txid valid hex, but too short"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args":
|
||||
["-create",
|
||||
"in=4d49a71ec9da436f71ec4ee231d04f292a29cd316f598bb7068feccabdc59485:0",
|
||||
"set=privatekeys:[\"5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsreAnchuDf\"]",
|
||||
"set=prevtxs:[{\"txid\":\"4d49a71ec9da436f71ec4ee231d04f292a29cd316f598bb7068feccabdc5948512\",\"vout\":0,\"scriptPubKey\":\"76a91491b24bf9f5288532960ac687abb035127b1d28a588ac\"}]",
|
||||
"sign=ALL",
|
||||
"outaddr=0.001:193P6LtvS4nCnkDvM9uXn1gsSRqh4aDAz7"],
|
||||
"return_code": 1,
|
||||
"error_txt": "error: txid must be hexadecimal string (not '4d49a71ec9da436f71ec4ee231d04f292a29cd316f598bb7068feccabdc5948512')",
|
||||
"description": "Tests the check for invalid txid valid hex, but too long"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args":
|
||||
["-create", "outpubkey=0:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397", "nversion=1"],
|
||||
"output_cmp": "txcreateoutpubkey1.hex",
|
||||
"description": "Creates a new transaction with a single pay-to-pubkey output"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args":
|
||||
["-json", "-create", "outpubkey=0:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397", "nversion=1"],
|
||||
"output_cmp": "txcreateoutpubkey1.json",
|
||||
"description": "Creates a new transaction with a single pay-to-pubkey output (output as json)"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args":
|
||||
["-create", "outpubkey=0:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:W", "nversion=1"],
|
||||
"output_cmp": "txcreateoutpubkey2.hex",
|
||||
"description": "Creates a new transaction with a single pay-to-witness-pubkey output"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args":
|
||||
["-json", "-create", "outpubkey=0:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:W", "nversion=1"],
|
||||
"output_cmp": "txcreateoutpubkey2.json",
|
||||
"description": "Creates a new transaction with a single pay-to-witness-pubkey output (output as json)"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args":
|
||||
["-create", "outpubkey=0:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:WS", "nversion=1"],
|
||||
"output_cmp": "txcreateoutpubkey3.hex",
|
||||
"description": "Creates a new transaction with a single pay-to-witness-pubkey, wrapped in P2SH output"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args":
|
||||
["-json", "-create", "outpubkey=0:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:WS", "nversion=1"],
|
||||
"output_cmp": "txcreateoutpubkey3.json",
|
||||
"description": "Creates a new transaction with a single pay-to-pub-key output, wrapped in P2SH (output as json)"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args":
|
||||
["-json", "-create", "outpubkey=0:047d1368ba7ae01c94bc32293efd70bd7e3be7aa7912d07d0b1c659c1008d179b8642f5fb90f47580feb29f045e216ff5a4716d3a0fed36da414d332046303c44a:WS", "nversion=1"],
|
||||
"return_code": 1,
|
||||
"error_txt": "error: Uncompressed pubkeys are not useable for SegWit outputs",
|
||||
"description": "Creates a new transaction with a single pay-to-pub-key output, wrapped in P2SH (output as json)"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args":
|
||||
["-create",
|
||||
"in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0",
|
||||
"outdata=4:badhexdata"],
|
||||
"return_code": 1,
|
||||
"error_txt": "error: invalid TX output data",
|
||||
"description": "Attempts to create a new transaction with one input and an output with malformed hex data. Expected to fail"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args":
|
||||
["-create",
|
||||
"in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0",
|
||||
"outdata=badhexdata"],
|
||||
"return_code": 1,
|
||||
"error_txt": "error: invalid TX output data",
|
||||
"description": "Attempts to create a new transaction with one input and an output with no value and malformed hex data. Expected to fail"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args":
|
||||
["-create",
|
||||
"in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0",
|
||||
"outaddr=0.18:DB3eGJECruhgXkb9P9iW25bqZ8Q8z6FBQq",
|
||||
"outdata=4:54686973204f505f52455455524e207472616e73616374696f6e206f7574707574207761732063726561746564206279206d6f646966696564206372656174657261777472616e73616374696f6e2e"],
|
||||
"output_cmp": "txcreatedata1.hex",
|
||||
"description": "Creates a new transaction with one input, one address output and one data output"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args":
|
||||
["-json",
|
||||
"-create", "nversion=1",
|
||||
"in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0",
|
||||
"outaddr=0.18:DB3eGJECruhgXkb9P9iW25bqZ8Q8z6FBQq",
|
||||
"outdata=4:54686973204f505f52455455524e207472616e73616374696f6e206f7574707574207761732063726561746564206279206d6f646966696564206372656174657261777472616e73616374696f6e2e"],
|
||||
"output_cmp": "txcreatedata1.json",
|
||||
"description": "Creates a new v1 transaction with one input, one address output and one data output (output in json)"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args":
|
||||
["-create",
|
||||
"in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0",
|
||||
"outaddr=0.18:DB3eGJECruhgXkb9P9iW25bqZ8Q8z6FBQq",
|
||||
"outdata=54686973204f505f52455455524e207472616e73616374696f6e206f7574707574207761732063726561746564206279206d6f646966696564206372656174657261777472616e73616374696f6e2e"],
|
||||
"output_cmp": "txcreatedata2.hex",
|
||||
"description": "Creates a new transaction with one input, one address output and one data (zero value) output"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args":
|
||||
["-json",
|
||||
"-create",
|
||||
"in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0",
|
||||
"outaddr=0.18:DB3eGJECruhgXkb9P9iW25bqZ8Q8z6FBQq",
|
||||
"outdata=54686973204f505f52455455524e207472616e73616374696f6e206f7574707574207761732063726561746564206279206d6f646966696564206372656174657261777472616e73616374696f6e2e"],
|
||||
"output_cmp": "txcreatedata2.json",
|
||||
"description": "Creates a new transaction with one input, one address output and one data (zero value) output (output in json)"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args":
|
||||
["-create",
|
||||
"in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0:4294967293",
|
||||
"outaddr=0.18:DB3eGJECruhgXkb9P9iW25bqZ8Q8z6FBQq"],
|
||||
"output_cmp": "txcreatedata_seq0.hex",
|
||||
"description": "Creates a new transaction with one input with sequence number and one address output"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args":
|
||||
["-json",
|
||||
"-create",
|
||||
"in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0:4294967293",
|
||||
"outaddr=0.18:DB3eGJECruhgXkb9P9iW25bqZ8Q8z6FBQq"],
|
||||
"output_cmp": "txcreatedata_seq0.json",
|
||||
"description": "Creates a new transaction with one input with sequence number and one address output (output in json)"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args":
|
||||
["01000000011f5c38dfcf6f1a5f5a87c416076d392c87e6d41970d5ad5e477a02d66bde97580000000000fdffffff0180a81201000000001976a9141fc11f39be1729bf973a7ab6a615ca4729d6457488ac00000000",
|
||||
"in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0:1"],
|
||||
"output_cmp": "txcreatedata_seq1.hex",
|
||||
"description": "Adds a new input with sequence number to a transaction"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args":
|
||||
["-json",
|
||||
"01000000011f5c38dfcf6f1a5f5a87c416076d392c87e6d41970d5ad5e477a02d66bde97580000000000fdffffff0180a81201000000001976a9141fc11f39be1729bf973a7ab6a615ca4729d6457488ac00000000",
|
||||
"in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0:1"],
|
||||
"output_cmp": "txcreatedata_seq1.json",
|
||||
"description": "Adds a new input with sequence number to a transaction (output in json)"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-create", "outmultisig=1:2:3:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:021ac43c7ff740014c3b33737ede99c967e4764553d1b2b83db77c83b8715fa72d:02df2089105c77f266fa11a9d33f05c735234075f2e8780824c6b709415f9fb485", "nversion=1"],
|
||||
"output_cmp": "txcreatemultisig1.hex",
|
||||
"description": "Creates a new transaction with a single 2-of-3 multisig output"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-json", "-create", "outmultisig=1:2:3:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:021ac43c7ff740014c3b33737ede99c967e4764553d1b2b83db77c83b8715fa72d:02df2089105c77f266fa11a9d33f05c735234075f2e8780824c6b709415f9fb485", "nversion=1"],
|
||||
"output_cmp": "txcreatemultisig1.json",
|
||||
"description": "Creates a new transaction with a single 2-of-3 multisig output (output in json)"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-create", "outmultisig=1:2:3:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:021ac43c7ff740014c3b33737ede99c967e4764553d1b2b83db77c83b8715fa72d:02df2089105c77f266fa11a9d33f05c735234075f2e8780824c6b709415f9fb485:S", "nversion=1"],
|
||||
"output_cmp": "txcreatemultisig2.hex",
|
||||
"description": "Creates a new transaction with a single 2-of-3 multisig in a P2SH output"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-json", "-create", "outmultisig=1:2:3:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:021ac43c7ff740014c3b33737ede99c967e4764553d1b2b83db77c83b8715fa72d:02df2089105c77f266fa11a9d33f05c735234075f2e8780824c6b709415f9fb485:S", "nversion=1"],
|
||||
"output_cmp": "txcreatemultisig2.json",
|
||||
"description": "Creates a new transaction with a single 2-of-3 multisig in a P2SH output (output in json)"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-create", "outmultisig=1:2:3:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:021ac43c7ff740014c3b33737ede99c967e4764553d1b2b83db77c83b8715fa72d:02df2089105c77f266fa11a9d33f05c735234075f2e8780824c6b709415f9fb485:W", "nversion=1"],
|
||||
"output_cmp": "txcreatemultisig3.hex",
|
||||
"description": "Creates a new transaction with a single 2-of-3 multisig in a P2WSH output"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-json", "-create", "outmultisig=1:2:3:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:021ac43c7ff740014c3b33737ede99c967e4764553d1b2b83db77c83b8715fa72d:02df2089105c77f266fa11a9d33f05c735234075f2e8780824c6b709415f9fb485:W", "nversion=1"],
|
||||
"output_cmp": "txcreatemultisig3.json",
|
||||
"description": "Creates a new transaction with a single 2-of-3 multisig in a P2WSH output (output in json)"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-create", "outmultisig=1:2:3:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:021ac43c7ff740014c3b33737ede99c967e4764553d1b2b83db77c83b8715fa72d:02df2089105c77f266fa11a9d33f05c735234075f2e8780824c6b709415f9fb485:WS", "nversion=1"],
|
||||
"output_cmp": "txcreatemultisig4.hex",
|
||||
"description": "Creates a new transaction with a single 2-of-3 multisig in a P2WSH output, wrapped in P2SH"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-json", "-create", "outmultisig=1:2:3:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:021ac43c7ff740014c3b33737ede99c967e4764553d1b2b83db77c83b8715fa72d:02df2089105c77f266fa11a9d33f05c735234075f2e8780824c6b709415f9fb485:WS", "nversion=1"],
|
||||
"output_cmp": "txcreatemultisig4.json",
|
||||
"description": "Creates a new transaction with a single 2-of-3 multisig in a P2WSH output, wrapped in P2SH (output in json)"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-json", "-create", "outmultisig=1:2:3:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:021ac43c7ff740014c3b33737ede99c967e4764553d1b2b83db77c83b8715fa72d:047d1368ba7ae01c94bc32293efd70bd7e3be7aa7912d07d0b1c659c1008d179b8642f5fb90f47580feb29f045e216ff5a4716d3a0fed36da414d332046303c44a:S"],
|
||||
"output_cmp": "txcreatemultisig5.json",
|
||||
"description": "Uncompressed pubkeys should work just fine for non-witness outputs"
|
||||
},
|
||||
{ "exec": "./digibyte-tx",
|
||||
"args": ["-json", "-create", "outmultisig=1:2:3:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:021ac43c7ff740014c3b33737ede99c967e4764553d1b2b83db77c83b8715fa72d:047d1368ba7ae01c94bc32293efd70bd7e3be7aa7912d07d0b1c659c1008d179b8642f5fb90f47580feb29f045e216ff5a4716d3a0fed36da414d332046303c44a:WS"],
|
||||
"return_code": 1,
|
||||
"error_txt": "error: Uncompressed pubkeys are not useable for SegWit outputs",
|
||||
"description": "Ensure adding witness outputs with uncompressed pubkeys fails"
|
||||
}
|
||||
]
|
||||
1
test/util/data/tt-delin1-out.hex
Normal file
1
test/util/data/tt-delin1-out.hex
Normal file
File diff suppressed because one or more lines are too long
214
test/util/data/tt-delin1-out.json
Normal file
214
test/util/data/tt-delin1-out.json
Normal file
File diff suppressed because one or more lines are too long
1
test/util/data/tt-delout1-out.hex
Normal file
1
test/util/data/tt-delout1-out.hex
Normal file
File diff suppressed because one or more lines are too long
213
test/util/data/tt-delout1-out.json
Normal file
213
test/util/data/tt-delout1-out.json
Normal file
File diff suppressed because one or more lines are too long
1
test/util/data/tt-locktime317000-out.hex
Normal file
1
test/util/data/tt-locktime317000-out.hex
Normal file
File diff suppressed because one or more lines are too long
223
test/util/data/tt-locktime317000-out.json
Normal file
223
test/util/data/tt-locktime317000-out.json
Normal file
File diff suppressed because one or more lines are too long
1
test/util/data/tx394b54bb.hex
Normal file
1
test/util/data/tx394b54bb.hex
Normal file
File diff suppressed because one or more lines are too long
1
test/util/data/txcreate1.hex
Normal file
1
test/util/data/txcreate1.hex
Normal file
|
|
@ -0,0 +1 @@
|
|||
02000000031f5c38dfcf6f1a5f5a87c416076d392c87e6d41970d5ad5e477a02d66bde97580000000000ffffffff7cca453133921c50d5025878f7f738d1df891fd359763331935784cf6b9c82bf1200000000fffffffffccd319e04a996c96cfc0bf4c07539aa90bd0b1a700ef72fae535d6504f9a6220100000000ffffffff0280a81201000000001976a91440c8bdd15b97de751acfc7cfac89bf305e858aca88ac0084d717000000001976a914b9b3036866a5f5b67e77688dd1ff7af37d40599a88ac00000000
|
||||
61
test/util/data/txcreate1.json
Normal file
61
test/util/data/txcreate1.json
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
{
|
||||
"txid": "9ddf8440c33f7c782c3e50ecff51d4f514dabfea34855000273ad4b5918514dc",
|
||||
"hash": "9ddf8440c33f7c782c3e50ecff51d4f514dabfea34855000273ad4b5918514dc",
|
||||
"version": 2,
|
||||
"size": 201,
|
||||
"vsize": 201,
|
||||
"weight": 804,
|
||||
"locktime": 0,
|
||||
"vin": [
|
||||
{
|
||||
"txid": "5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f",
|
||||
"vout": 0,
|
||||
"scriptSig": {
|
||||
"asm": "",
|
||||
"hex": ""
|
||||
},
|
||||
"sequence": 4294967295
|
||||
},
|
||||
{
|
||||
"txid": "bf829c6bcf84579331337659d31f89dfd138f7f7785802d5501c92333145ca7c",
|
||||
"vout": 18,
|
||||
"scriptSig": {
|
||||
"asm": "",
|
||||
"hex": ""
|
||||
},
|
||||
"sequence": 4294967295
|
||||
},
|
||||
{
|
||||
"txid": "22a6f904655d53ae2ff70e701a0bbd90aa3975c0f40bfc6cc996a9049e31cdfc",
|
||||
"vout": 1,
|
||||
"scriptSig": {
|
||||
"asm": "",
|
||||
"hex": ""
|
||||
},
|
||||
"sequence": 4294967295
|
||||
}
|
||||
],
|
||||
"vout": [
|
||||
{
|
||||
"value": 0.18000000,
|
||||
"n": 0,
|
||||
"scriptPubKey": {
|
||||
"asm": "OP_DUP OP_HASH160 40c8bdd15b97de751acfc7cfac89bf305e858aca OP_EQUALVERIFY OP_CHECKSIG",
|
||||
"hex": "76a91440c8bdd15b97de751acfc7cfac89bf305e858aca88ac",
|
||||
"address": "DB3eGJECruhgXkb9P9iW25bqZ8Q8z6FBQq",
|
||||
"type": "pubkeyhash"
|
||||
}
|
||||
},
|
||||
{
|
||||
"value": 4.00000000,
|
||||
"n": 1,
|
||||
"scriptPubKey": {
|
||||
"asm": "OP_DUP OP_HASH160 b9b3036866a5f5b67e77688dd1ff7af37d40599a OP_EQUALVERIFY OP_CHECKSIG",
|
||||
"hex": "76a914b9b3036866a5f5b67e77688dd1ff7af37d40599a88ac",
|
||||
"address": "DN4yzowAzPbtM6Hh4HsNjFH8QjurZ4Nzhz",
|
||||
"type": "pubkeyhash"
|
||||
}
|
||||
}
|
||||
],
|
||||
"hex": "02000000031f5c38dfcf6f1a5f5a87c416076d392c87e6d41970d5ad5e477a02d66bde97580000000000ffffffff7cca453133921c50d5025878f7f738d1df891fd359763331935784cf6b9c82bf1200000000fffffffffccd319e04a996c96cfc0bf4c07539aa90bd0b1a700ef72fae535d6504f9a6220100000000ffffffff0280a81201000000001976a91440c8bdd15b97de751acfc7cfac89bf305e858aca88ac0084d717000000001976a914b9b3036866a5f5b67e77688dd1ff7af37d40599a88ac00000000"
|
||||
}
|
||||
1
test/util/data/txcreate2.hex
Normal file
1
test/util/data/txcreate2.hex
Normal file
|
|
@ -0,0 +1 @@
|
|||
02000000000100000000000000000000000000
|
||||
23
test/util/data/txcreate2.json
Normal file
23
test/util/data/txcreate2.json
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
"txid": "0481afb29931341d0d7861d8a2f6f26456fa042abf54a23e96440ed7946e0715",
|
||||
"hash": "0481afb29931341d0d7861d8a2f6f26456fa042abf54a23e96440ed7946e0715",
|
||||
"version": 2,
|
||||
"size": 19,
|
||||
"vsize": 19,
|
||||
"weight": 76,
|
||||
"locktime": 0,
|
||||
"vin": [
|
||||
],
|
||||
"vout": [
|
||||
{
|
||||
"value": 0.00000000,
|
||||
"n": 0,
|
||||
"scriptPubKey": {
|
||||
"asm": "",
|
||||
"hex": "",
|
||||
"type": "nonstandard"
|
||||
}
|
||||
}
|
||||
],
|
||||
"hex": "02000000000100000000000000000000000000"
|
||||
}
|
||||
1
test/util/data/txcreatedata1.hex
Normal file
1
test/util/data/txcreatedata1.hex
Normal file
|
|
@ -0,0 +1 @@
|
|||
02000000011f5c38dfcf6f1a5f5a87c416076d392c87e6d41970d5ad5e477a02d66bde97580000000000ffffffff0280a81201000000001976a91440c8bdd15b97de751acfc7cfac89bf305e858aca88ac0084d71700000000526a4c4f54686973204f505f52455455524e207472616e73616374696f6e206f7574707574207761732063726561746564206279206d6f646966696564206372656174657261777472616e73616374696f6e2e00000000
|
||||
42
test/util/data/txcreatedata1.json
Normal file
42
test/util/data/txcreatedata1.json
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
{
|
||||
"txid": "2382d4c6f49c16877fda85ad8599a4fcecf4ccbef4e67eb785eade64c09a92e1",
|
||||
"hash": "2382d4c6f49c16877fda85ad8599a4fcecf4ccbef4e67eb785eade64c09a92e1",
|
||||
"version": 1,
|
||||
"size": 176,
|
||||
"vsize": 176,
|
||||
"weight": 704,
|
||||
"locktime": 0,
|
||||
"vin": [
|
||||
{
|
||||
"txid": "5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f",
|
||||
"vout": 0,
|
||||
"scriptSig": {
|
||||
"asm": "",
|
||||
"hex": ""
|
||||
},
|
||||
"sequence": 4294967295
|
||||
}
|
||||
],
|
||||
"vout": [
|
||||
{
|
||||
"value": 0.18000000,
|
||||
"n": 0,
|
||||
"scriptPubKey": {
|
||||
"asm": "OP_DUP OP_HASH160 40c8bdd15b97de751acfc7cfac89bf305e858aca OP_EQUALVERIFY OP_CHECKSIG",
|
||||
"hex": "76a91440c8bdd15b97de751acfc7cfac89bf305e858aca88ac",
|
||||
"address": "DB3eGJECruhgXkb9P9iW25bqZ8Q8z6FBQq",
|
||||
"type": "pubkeyhash"
|
||||
}
|
||||
},
|
||||
{
|
||||
"value": 4.00000000,
|
||||
"n": 1,
|
||||
"scriptPubKey": {
|
||||
"asm": "OP_RETURN 54686973204f505f52455455524e207472616e73616374696f6e206f7574707574207761732063726561746564206279206d6f646966696564206372656174657261777472616e73616374696f6e2e",
|
||||
"hex": "6a4c4f54686973204f505f52455455524e207472616e73616374696f6e206f7574707574207761732063726561746564206279206d6f646966696564206372656174657261777472616e73616374696f6e2e",
|
||||
"type": "nulldata"
|
||||
}
|
||||
}
|
||||
],
|
||||
"hex": "01000000011f5c38dfcf6f1a5f5a87c416076d392c87e6d41970d5ad5e477a02d66bde97580000000000ffffffff0280a81201000000001976a91440c8bdd15b97de751acfc7cfac89bf305e858aca88ac0084d71700000000526a4c4f54686973204f505f52455455524e207472616e73616374696f6e206f7574707574207761732063726561746564206279206d6f646966696564206372656174657261777472616e73616374696f6e2e00000000"
|
||||
}
|
||||
1
test/util/data/txcreatedata2.hex
Normal file
1
test/util/data/txcreatedata2.hex
Normal file
|
|
@ -0,0 +1 @@
|
|||
02000000011f5c38dfcf6f1a5f5a87c416076d392c87e6d41970d5ad5e477a02d66bde97580000000000ffffffff0280a81201000000001976a91440c8bdd15b97de751acfc7cfac89bf305e858aca88ac0000000000000000526a4c4f54686973204f505f52455455524e207472616e73616374696f6e206f7574707574207761732063726561746564206279206d6f646966696564206372656174657261777472616e73616374696f6e2e00000000
|
||||
42
test/util/data/txcreatedata2.json
Normal file
42
test/util/data/txcreatedata2.json
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
{
|
||||
"txid": "0a543bb63e269019f9c2001e95ec437220d0fc3d72f4a94de2c0d7335c3fdd83",
|
||||
"hash": "0a543bb63e269019f9c2001e95ec437220d0fc3d72f4a94de2c0d7335c3fdd83",
|
||||
"version": 2,
|
||||
"size": 176,
|
||||
"vsize": 176,
|
||||
"weight": 704,
|
||||
"locktime": 0,
|
||||
"vin": [
|
||||
{
|
||||
"txid": "5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f",
|
||||
"vout": 0,
|
||||
"scriptSig": {
|
||||
"asm": "",
|
||||
"hex": ""
|
||||
},
|
||||
"sequence": 4294967295
|
||||
}
|
||||
],
|
||||
"vout": [
|
||||
{
|
||||
"value": 0.18000000,
|
||||
"n": 0,
|
||||
"scriptPubKey": {
|
||||
"asm": "OP_DUP OP_HASH160 40c8bdd15b97de751acfc7cfac89bf305e858aca OP_EQUALVERIFY OP_CHECKSIG",
|
||||
"hex": "76a91440c8bdd15b97de751acfc7cfac89bf305e858aca88ac",
|
||||
"address": "DB3eGJECruhgXkb9P9iW25bqZ8Q8z6FBQq",
|
||||
"type": "pubkeyhash"
|
||||
}
|
||||
},
|
||||
{
|
||||
"value": 0.00000000,
|
||||
"n": 1,
|
||||
"scriptPubKey": {
|
||||
"asm": "OP_RETURN 54686973204f505f52455455524e207472616e73616374696f6e206f7574707574207761732063726561746564206279206d6f646966696564206372656174657261777472616e73616374696f6e2e",
|
||||
"hex": "6a4c4f54686973204f505f52455455524e207472616e73616374696f6e206f7574707574207761732063726561746564206279206d6f646966696564206372656174657261777472616e73616374696f6e2e",
|
||||
"type": "nulldata"
|
||||
}
|
||||
}
|
||||
],
|
||||
"hex": "02000000011f5c38dfcf6f1a5f5a87c416076d392c87e6d41970d5ad5e477a02d66bde97580000000000ffffffff0280a81201000000001976a91440c8bdd15b97de751acfc7cfac89bf305e858aca88ac0000000000000000526a4c4f54686973204f505f52455455524e207472616e73616374696f6e206f7574707574207761732063726561746564206279206d6f646966696564206372656174657261777472616e73616374696f6e2e00000000"
|
||||
}
|
||||
1
test/util/data/txcreatedata_seq0.hex
Normal file
1
test/util/data/txcreatedata_seq0.hex
Normal file
|
|
@ -0,0 +1 @@
|
|||
02000000011f5c38dfcf6f1a5f5a87c416076d392c87e6d41970d5ad5e477a02d66bde97580000000000fdffffff0180a81201000000001976a91440c8bdd15b97de751acfc7cfac89bf305e858aca88ac00000000
|
||||
33
test/util/data/txcreatedata_seq0.json
Normal file
33
test/util/data/txcreatedata_seq0.json
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
{
|
||||
"txid": "534b6cd6623ac4b21e40c6c4f6e92ea1a22bfd9ec86eee78d93fe79f883a0e93",
|
||||
"hash": "534b6cd6623ac4b21e40c6c4f6e92ea1a22bfd9ec86eee78d93fe79f883a0e93",
|
||||
"version": 2,
|
||||
"size": 85,
|
||||
"vsize": 85,
|
||||
"weight": 340,
|
||||
"locktime": 0,
|
||||
"vin": [
|
||||
{
|
||||
"txid": "5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f",
|
||||
"vout": 0,
|
||||
"scriptSig": {
|
||||
"asm": "",
|
||||
"hex": ""
|
||||
},
|
||||
"sequence": 4294967293
|
||||
}
|
||||
],
|
||||
"vout": [
|
||||
{
|
||||
"value": 0.18000000,
|
||||
"n": 0,
|
||||
"scriptPubKey": {
|
||||
"asm": "OP_DUP OP_HASH160 40c8bdd15b97de751acfc7cfac89bf305e858aca OP_EQUALVERIFY OP_CHECKSIG",
|
||||
"hex": "76a91440c8bdd15b97de751acfc7cfac89bf305e858aca88ac",
|
||||
"address": "DB3eGJECruhgXkb9P9iW25bqZ8Q8z6FBQq",
|
||||
"type": "pubkeyhash"
|
||||
}
|
||||
}
|
||||
],
|
||||
"hex": "02000000011f5c38dfcf6f1a5f5a87c416076d392c87e6d41970d5ad5e477a02d66bde97580000000000fdffffff0180a81201000000001976a91440c8bdd15b97de751acfc7cfac89bf305e858aca88ac00000000"
|
||||
}
|
||||
1
test/util/data/txcreatedata_seq1.hex
Normal file
1
test/util/data/txcreatedata_seq1.hex
Normal file
|
|
@ -0,0 +1 @@
|
|||
01000000021f5c38dfcf6f1a5f5a87c416076d392c87e6d41970d5ad5e477a02d66bde97580000000000fdffffff1f5c38dfcf6f1a5f5a87c416076d392c87e6d41970d5ad5e477a02d66bde97580000000000010000000180a81201000000001976a9141fc11f39be1729bf973a7ab6a615ca4729d6457488ac00000000
|
||||
42
test/util/data/txcreatedata_seq1.json
Normal file
42
test/util/data/txcreatedata_seq1.json
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
{
|
||||
"txid": "c4dea671b0d7b48f8ab10bc46650e8329d3c5766931f548f513847a19f5ba75b",
|
||||
"hash": "c4dea671b0d7b48f8ab10bc46650e8329d3c5766931f548f513847a19f5ba75b",
|
||||
"version": 1,
|
||||
"size": 126,
|
||||
"vsize": 126,
|
||||
"weight": 504,
|
||||
"locktime": 0,
|
||||
"vin": [
|
||||
{
|
||||
"txid": "5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f",
|
||||
"vout": 0,
|
||||
"scriptSig": {
|
||||
"asm": "",
|
||||
"hex": ""
|
||||
},
|
||||
"sequence": 4294967293
|
||||
},
|
||||
{
|
||||
"txid": "5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f",
|
||||
"vout": 0,
|
||||
"scriptSig": {
|
||||
"asm": "",
|
||||
"hex": ""
|
||||
},
|
||||
"sequence": 1
|
||||
}
|
||||
],
|
||||
"vout": [
|
||||
{
|
||||
"value": 0.18000000,
|
||||
"n": 0,
|
||||
"scriptPubKey": {
|
||||
"asm": "OP_DUP OP_HASH160 1fc11f39be1729bf973a7ab6a615ca4729d64574 OP_EQUALVERIFY OP_CHECKSIG",
|
||||
"hex": "76a9141fc11f39be1729bf973a7ab6a615ca4729d6457488ac",
|
||||
"address": "D82zqZA4KqaTPmsGegJ1ACoTXiSJ21NcZd",
|
||||
"type": "pubkeyhash"
|
||||
}
|
||||
}
|
||||
],
|
||||
"hex": "01000000021f5c38dfcf6f1a5f5a87c416076d392c87e6d41970d5ad5e477a02d66bde97580000000000fdffffff1f5c38dfcf6f1a5f5a87c416076d392c87e6d41970d5ad5e477a02d66bde97580000000000010000000180a81201000000001976a9141fc11f39be1729bf973a7ab6a615ca4729d6457488ac00000000"
|
||||
}
|
||||
1
test/util/data/txcreatemultisig1.hex
Normal file
1
test/util/data/txcreatemultisig1.hex
Normal file
|
|
@ -0,0 +1 @@
|
|||
01000000000100e1f5050000000069522102a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff39721021ac43c7ff740014c3b33737ede99c967e4764553d1b2b83db77c83b8715fa72d2102df2089105c77f266fa11a9d33f05c735234075f2e8780824c6b709415f9fb48553ae00000000
|
||||
23
test/util/data/txcreatemultisig1.json
Normal file
23
test/util/data/txcreatemultisig1.json
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
"txid": "0d1d4edfc217d9db3ab6a9298f26a52eae3c52f55a6cb8ccbc14f7c727572894",
|
||||
"hash": "0d1d4edfc217d9db3ab6a9298f26a52eae3c52f55a6cb8ccbc14f7c727572894",
|
||||
"version": 1,
|
||||
"size": 124,
|
||||
"vsize": 124,
|
||||
"weight": 496,
|
||||
"locktime": 0,
|
||||
"vin": [
|
||||
],
|
||||
"vout": [
|
||||
{
|
||||
"value": 1.00000000,
|
||||
"n": 0,
|
||||
"scriptPubKey": {
|
||||
"asm": "2 02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397 021ac43c7ff740014c3b33737ede99c967e4764553d1b2b83db77c83b8715fa72d 02df2089105c77f266fa11a9d33f05c735234075f2e8780824c6b709415f9fb485 3 OP_CHECKMULTISIG",
|
||||
"hex": "522102a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff39721021ac43c7ff740014c3b33737ede99c967e4764553d1b2b83db77c83b8715fa72d2102df2089105c77f266fa11a9d33f05c735234075f2e8780824c6b709415f9fb48553ae",
|
||||
"type": "multisig"
|
||||
}
|
||||
}
|
||||
],
|
||||
"hex": "01000000000100e1f5050000000069522102a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff39721021ac43c7ff740014c3b33737ede99c967e4764553d1b2b83db77c83b8715fa72d2102df2089105c77f266fa11a9d33f05c735234075f2e8780824c6b709415f9fb48553ae00000000"
|
||||
}
|
||||
1
test/util/data/txcreatemultisig2.hex
Normal file
1
test/util/data/txcreatemultisig2.hex
Normal file
|
|
@ -0,0 +1 @@
|
|||
01000000000100e1f5050000000017a9141c6fbaf46d64221e80cbae182c33ddf81b9294ac8700000000
|
||||
24
test/util/data/txcreatemultisig2.json
Normal file
24
test/util/data/txcreatemultisig2.json
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"txid": "0d861f278a3b7bce7cb5a88d71e6e6a903336f95ad5a2c29b295b63835b6eee3",
|
||||
"hash": "0d861f278a3b7bce7cb5a88d71e6e6a903336f95ad5a2c29b295b63835b6eee3",
|
||||
"version": 1,
|
||||
"size": 42,
|
||||
"vsize": 42,
|
||||
"weight": 168,
|
||||
"locktime": 0,
|
||||
"vin": [
|
||||
],
|
||||
"vout": [
|
||||
{
|
||||
"value": 1.00000000,
|
||||
"n": 0,
|
||||
"scriptPubKey": {
|
||||
"asm": "OP_HASH160 1c6fbaf46d64221e80cbae182c33ddf81b9294ac OP_EQUAL",
|
||||
"hex": "a9141c6fbaf46d64221e80cbae182c33ddf81b9294ac87",
|
||||
"address": "SPtMoNQWMfJ9C6U19oDzHaY67ADQJF5rXu",
|
||||
"type": "scripthash"
|
||||
}
|
||||
}
|
||||
],
|
||||
"hex": "01000000000100e1f5050000000017a9141c6fbaf46d64221e80cbae182c33ddf81b9294ac8700000000"
|
||||
}
|
||||
1
test/util/data/txcreatemultisig3.hex
Normal file
1
test/util/data/txcreatemultisig3.hex
Normal file
|
|
@ -0,0 +1 @@
|
|||
01000000000100e1f50500000000220020e15a86a23178f433d514dbbce042e87d72662b8b5edcacfd2e37ab7a2d135f0500000000
|
||||
24
test/util/data/txcreatemultisig3.json
Normal file
24
test/util/data/txcreatemultisig3.json
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"txid": "ccc552220b46a3b5140048b03395987ce4f0fa1ddf8c635bba1fa44e0f8c1d7f",
|
||||
"hash": "ccc552220b46a3b5140048b03395987ce4f0fa1ddf8c635bba1fa44e0f8c1d7f",
|
||||
"version": 1,
|
||||
"size": 53,
|
||||
"vsize": 53,
|
||||
"weight": 212,
|
||||
"locktime": 0,
|
||||
"vin": [
|
||||
],
|
||||
"vout": [
|
||||
{
|
||||
"value": 1.00000000,
|
||||
"n": 0,
|
||||
"scriptPubKey": {
|
||||
"asm": "0 e15a86a23178f433d514dbbce042e87d72662b8b5edcacfd2e37ab7a2d135f05",
|
||||
"hex": "0020e15a86a23178f433d514dbbce042e87d72662b8b5edcacfd2e37ab7a2d135f05",
|
||||
"address": "dgb1qu9dgdg330r6r84g5mw7wqshg04exv2uttmw2elfwx74h5tgntuzsglvxkh",
|
||||
"type": "witness_v0_scripthash"
|
||||
}
|
||||
}
|
||||
],
|
||||
"hex": "01000000000100e1f50500000000220020e15a86a23178f433d514dbbce042e87d72662b8b5edcacfd2e37ab7a2d135f0500000000"
|
||||
}
|
||||
1
test/util/data/txcreatemultisig4.hex
Normal file
1
test/util/data/txcreatemultisig4.hex
Normal file
|
|
@ -0,0 +1 @@
|
|||
01000000000100e1f5050000000017a9146edf12858999f0dae74f9c692e6694ee3621b2ac8700000000
|
||||
24
test/util/data/txcreatemultisig4.json
Normal file
24
test/util/data/txcreatemultisig4.json
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"txid": "5e8b1cc73234e208d4b7ca9075f136b908c34101be7a048df4ba9ac758b61567",
|
||||
"hash": "5e8b1cc73234e208d4b7ca9075f136b908c34101be7a048df4ba9ac758b61567",
|
||||
"version": 1,
|
||||
"size": 42,
|
||||
"vsize": 42,
|
||||
"weight": 168,
|
||||
"locktime": 0,
|
||||
"vin": [
|
||||
],
|
||||
"vout": [
|
||||
{
|
||||
"value": 1.00000000,
|
||||
"n": 0,
|
||||
"scriptPubKey": {
|
||||
"asm": "OP_HASH160 6edf12858999f0dae74f9c692e6694ee3621b2ac OP_EQUAL",
|
||||
"hex": "a9146edf12858999f0dae74f9c692e6694ee3621b2ac87",
|
||||
"address": "SXQEbHJA5JVC3pZUyZQ6KHRtDAUyHWf1w8",
|
||||
"type": "scripthash"
|
||||
}
|
||||
}
|
||||
],
|
||||
"hex": "01000000000100e1f5050000000017a9146edf12858999f0dae74f9c692e6694ee3621b2ac8700000000"
|
||||
}
|
||||
24
test/util/data/txcreatemultisig5.json
Normal file
24
test/util/data/txcreatemultisig5.json
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"txid": "813cf75e1f08debd242ef7c8192b7d478fb651355209369499a0de779ba7eb2f",
|
||||
"hash": "813cf75e1f08debd242ef7c8192b7d478fb651355209369499a0de779ba7eb2f",
|
||||
"version": 2,
|
||||
"size": 42,
|
||||
"vsize": 42,
|
||||
"weight": 168,
|
||||
"locktime": 0,
|
||||
"vin": [
|
||||
],
|
||||
"vout": [
|
||||
{
|
||||
"value": 1.00000000,
|
||||
"n": 0,
|
||||
"scriptPubKey": {
|
||||
"asm": "OP_HASH160 a4051c02398868af83f28f083208fae99a769263 OP_EQUAL",
|
||||
"hex": "a914a4051c02398868af83f28f083208fae99a76926387",
|
||||
"address": "ScFFyJvzfRGoWh4vfyTzX6KM8HRadX9mNx",
|
||||
"type": "scripthash"
|
||||
}
|
||||
}
|
||||
],
|
||||
"hex": "02000000000100e1f5050000000017a914a4051c02398868af83f28f083208fae99a7692638700000000"
|
||||
}
|
||||
1
test/util/data/txcreateoutpubkey1.hex
Normal file
1
test/util/data/txcreateoutpubkey1.hex
Normal file
|
|
@ -0,0 +1 @@
|
|||
0100000000010000000000000000232102a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397ac00000000
|
||||
23
test/util/data/txcreateoutpubkey1.json
Normal file
23
test/util/data/txcreateoutpubkey1.json
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
"txid": "f42b38ac12e3fafc96ba1a9ba70cbfe326744aef75df5fb9db5d6e2855ca415f",
|
||||
"hash": "f42b38ac12e3fafc96ba1a9ba70cbfe326744aef75df5fb9db5d6e2855ca415f",
|
||||
"version": 1,
|
||||
"size": 54,
|
||||
"vsize": 54,
|
||||
"weight": 216,
|
||||
"locktime": 0,
|
||||
"vin": [
|
||||
],
|
||||
"vout": [
|
||||
{
|
||||
"value": 0.00000000,
|
||||
"n": 0,
|
||||
"scriptPubKey": {
|
||||
"asm": "02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397 OP_CHECKSIG",
|
||||
"hex": "2102a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397ac",
|
||||
"type": "pubkey"
|
||||
}
|
||||
}
|
||||
],
|
||||
"hex": "0100000000010000000000000000232102a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397ac00000000"
|
||||
}
|
||||
1
test/util/data/txcreateoutpubkey2.hex
Normal file
1
test/util/data/txcreateoutpubkey2.hex
Normal file
|
|
@ -0,0 +1 @@
|
|||
0100000000010000000000000000160014a2516e770582864a6a56ed21a102044e388c62e300000000
|
||||
24
test/util/data/txcreateoutpubkey2.json
Normal file
24
test/util/data/txcreateoutpubkey2.json
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"txid": "70f2a088cde460e677415fa1fb71895e90c231e6ed38ed203a35b6f848e9cc73",
|
||||
"hash": "70f2a088cde460e677415fa1fb71895e90c231e6ed38ed203a35b6f848e9cc73",
|
||||
"version": 1,
|
||||
"size": 41,
|
||||
"vsize": 41,
|
||||
"weight": 164,
|
||||
"locktime": 0,
|
||||
"vin": [
|
||||
],
|
||||
"vout": [
|
||||
{
|
||||
"value": 0.00000000,
|
||||
"n": 0,
|
||||
"scriptPubKey": {
|
||||
"asm": "0 a2516e770582864a6a56ed21a102044e388c62e3",
|
||||
"hex": "0014a2516e770582864a6a56ed21a102044e388c62e3",
|
||||
"address": "dgb1q5fgkuac9s2ry56jka5s6zqsyfcugcchrn0ukyp",
|
||||
"type": "witness_v0_keyhash"
|
||||
}
|
||||
}
|
||||
],
|
||||
"hex": "0100000000010000000000000000160014a2516e770582864a6a56ed21a102044e388c62e300000000"
|
||||
}
|
||||
1
test/util/data/txcreateoutpubkey3.hex
Normal file
1
test/util/data/txcreateoutpubkey3.hex
Normal file
|
|
@ -0,0 +1 @@
|
|||
010000000001000000000000000017a914a5ab14c9804d0d8bf02f1aea4e82780733ad0a838700000000
|
||||
24
test/util/data/txcreateoutpubkey3.json
Normal file
24
test/util/data/txcreateoutpubkey3.json
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"txid": "bfc7e898ee9f6a9652d7b8cca147e2da134502e2ada0f279ed634fc8cf833f8c",
|
||||
"hash": "bfc7e898ee9f6a9652d7b8cca147e2da134502e2ada0f279ed634fc8cf833f8c",
|
||||
"version": 1,
|
||||
"size": 42,
|
||||
"vsize": 42,
|
||||
"weight": 168,
|
||||
"locktime": 0,
|
||||
"vin": [
|
||||
],
|
||||
"vout": [
|
||||
{
|
||||
"value": 0.00000000,
|
||||
"n": 0,
|
||||
"scriptPubKey": {
|
||||
"asm": "OP_HASH160 a5ab14c9804d0d8bf02f1aea4e82780733ad0a83 OP_EQUAL",
|
||||
"hex": "a914a5ab14c9804d0d8bf02f1aea4e82780733ad0a8387",
|
||||
"address": "ScPyURYYsPR5ymnkYhpabekb1AzBwKE9Uw",
|
||||
"type": "scripthash"
|
||||
}
|
||||
}
|
||||
],
|
||||
"hex": "010000000001000000000000000017a914a5ab14c9804d0d8bf02f1aea4e82780733ad0a838700000000"
|
||||
}
|
||||
1
test/util/data/txcreatescript1.hex
Normal file
1
test/util/data/txcreatescript1.hex
Normal file
|
|
@ -0,0 +1 @@
|
|||
0100000000010000000000000000017500000000
|
||||
23
test/util/data/txcreatescript1.json
Normal file
23
test/util/data/txcreatescript1.json
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
"txid": "f0851b68202f736b792649cfc960259c2374badcb644ab20cac726b5f72f61c9",
|
||||
"hash": "f0851b68202f736b792649cfc960259c2374badcb644ab20cac726b5f72f61c9",
|
||||
"version": 1,
|
||||
"size": 20,
|
||||
"vsize": 20,
|
||||
"weight": 80,
|
||||
"locktime": 0,
|
||||
"vin": [
|
||||
],
|
||||
"vout": [
|
||||
{
|
||||
"value": 0.00000000,
|
||||
"n": 0,
|
||||
"scriptPubKey": {
|
||||
"asm": "OP_DROP",
|
||||
"hex": "75",
|
||||
"type": "nonstandard"
|
||||
}
|
||||
}
|
||||
],
|
||||
"hex": "0100000000010000000000000000017500000000"
|
||||
}
|
||||
1
test/util/data/txcreatescript2.hex
Normal file
1
test/util/data/txcreatescript2.hex
Normal file
|
|
@ -0,0 +1 @@
|
|||
010000000001000000000000000017a91471ed53322d470bb96657deb786b94f97dd46fb158700000000
|
||||
24
test/util/data/txcreatescript2.json
Normal file
24
test/util/data/txcreatescript2.json
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"txid": "6e07a7cc075e0703f32ee8c4e5373fe654bfbc315148fda364e1be286ff290d0",
|
||||
"hash": "6e07a7cc075e0703f32ee8c4e5373fe654bfbc315148fda364e1be286ff290d0",
|
||||
"version": 1,
|
||||
"size": 42,
|
||||
"vsize": 42,
|
||||
"weight": 168,
|
||||
"locktime": 0,
|
||||
"vin": [
|
||||
],
|
||||
"vout": [
|
||||
{
|
||||
"value": 0.00000000,
|
||||
"n": 0,
|
||||
"scriptPubKey": {
|
||||
"asm": "OP_HASH160 71ed53322d470bb96657deb786b94f97dd46fb15 OP_EQUAL",
|
||||
"hex": "a91471ed53322d470bb96657deb786b94f97dd46fb1587",
|
||||
"address": "SXgPh9WyscYTkjJKTjuqnJL1F3JWuQf25D",
|
||||
"type": "scripthash"
|
||||
}
|
||||
}
|
||||
],
|
||||
"hex": "010000000001000000000000000017a91471ed53322d470bb96657deb786b94f97dd46fb158700000000"
|
||||
}
|
||||
1
test/util/data/txcreatescript3.hex
Normal file
1
test/util/data/txcreatescript3.hex
Normal file
|
|
@ -0,0 +1 @@
|
|||
01000000000100000000000000002200200bfe935e70c321c7ca3afc75ce0d0ca2f98b5422e008bb31c00c6d7f1f1c0ad600000000
|
||||
24
test/util/data/txcreatescript3.json
Normal file
24
test/util/data/txcreatescript3.json
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"txid": "8a234037b088e987c877030efc83374a07441c321bf9dc6dd2f206bc26507df8",
|
||||
"hash": "8a234037b088e987c877030efc83374a07441c321bf9dc6dd2f206bc26507df8",
|
||||
"version": 1,
|
||||
"size": 53,
|
||||
"vsize": 53,
|
||||
"weight": 212,
|
||||
"locktime": 0,
|
||||
"vin": [
|
||||
],
|
||||
"vout": [
|
||||
{
|
||||
"value": 0.00000000,
|
||||
"n": 0,
|
||||
"scriptPubKey": {
|
||||
"asm": "0 0bfe935e70c321c7ca3afc75ce0d0ca2f98b5422e008bb31c00c6d7f1f1c0ad6",
|
||||
"hex": "00200bfe935e70c321c7ca3afc75ce0d0ca2f98b5422e008bb31c00c6d7f1f1c0ad6",
|
||||
"address": "dgb1qp0lfxhnscvsu0j36l36uurgv5tuck4pzuqytkvwqp3kh78cupttqer6dtn",
|
||||
"type": "witness_v0_scripthash"
|
||||
}
|
||||
}
|
||||
],
|
||||
"hex": "01000000000100000000000000002200200bfe935e70c321c7ca3afc75ce0d0ca2f98b5422e008bb31c00c6d7f1f1c0ad600000000"
|
||||
}
|
||||
1
test/util/data/txcreatescript4.hex
Normal file
1
test/util/data/txcreatescript4.hex
Normal file
|
|
@ -0,0 +1 @@
|
|||
010000000001000000000000000017a9146a2c482f4985f57e702f325816c90e3723ca81ae8700000000
|
||||
24
test/util/data/txcreatescript4.json
Normal file
24
test/util/data/txcreatescript4.json
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"txid": "24225cf5e9391100d6b218134b9f03383ca4c880a1f634ac12990cf28b66adbc",
|
||||
"hash": "24225cf5e9391100d6b218134b9f03383ca4c880a1f634ac12990cf28b66adbc",
|
||||
"version": 1,
|
||||
"size": 42,
|
||||
"vsize": 42,
|
||||
"weight": 168,
|
||||
"locktime": 0,
|
||||
"vin": [
|
||||
],
|
||||
"vout": [
|
||||
{
|
||||
"value": 0.00000000,
|
||||
"n": 0,
|
||||
"scriptPubKey": {
|
||||
"asm": "OP_HASH160 6a2c482f4985f57e702f325816c90e3723ca81ae OP_EQUAL",
|
||||
"hex": "a9146a2c482f4985f57e702f325816c90e3723ca81ae87",
|
||||
"address": "SWyPhwYMUm9Ac7JypGpt37k1s7gaVhBvPK",
|
||||
"type": "scripthash"
|
||||
}
|
||||
}
|
||||
],
|
||||
"hex": "010000000001000000000000000017a9146a2c482f4985f57e702f325816c90e3723ca81ae8700000000"
|
||||
}
|
||||
1
test/util/data/txcreatescript5.hex
Normal file
1
test/util/data/txcreatescript5.hex
Normal file
|
|
@ -0,0 +1 @@
|
|||
02000000000100000000000000000605ffffffff0000000000
|
||||
1
test/util/data/txcreatescript6.hex
Normal file
1
test/util/data/txcreatescript6.hex
Normal file
|
|
@ -0,0 +1 @@
|
|||
02000000000100000000000000000605ffffffff8000000000
|
||||
1
test/util/data/txcreatesignv1.hex
Normal file
1
test/util/data/txcreatesignv1.hex
Normal file
|
|
@ -0,0 +1 @@
|
|||
01000000018594c5bdcaec8f06b78b596f31cd292a294fd031e24eec716f43dac91ea7494d000000008a4730440220131432090a6af42da3e8335ff110831b41a44f4e9d18d88f5d50278380696c7202200fc2e48938f323ad13625890c0ea926c8a189c08b8efc38376b20c8a2188e96e01410479be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8ffffffff01a0860100000000001976a914b9b3036866a5f5b67e77688dd1ff7af37d40599a88ac00000000
|
||||
33
test/util/data/txcreatesignv1.json
Normal file
33
test/util/data/txcreatesignv1.json
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
{
|
||||
"txid": "999b2dbdfec4df65f7618231cc8c11efb9e40ece09c1e7246ef2486f7fb53a4d",
|
||||
"hash": "999b2dbdfec4df65f7618231cc8c11efb9e40ece09c1e7246ef2486f7fb53a4d",
|
||||
"version": 1,
|
||||
"size": 223,
|
||||
"vsize": 223,
|
||||
"weight": 892,
|
||||
"locktime": 0,
|
||||
"vin": [
|
||||
{
|
||||
"txid": "4d49a71ec9da436f71ec4ee231d04f292a29cd316f598bb7068feccabdc59485",
|
||||
"vout": 0,
|
||||
"scriptSig": {
|
||||
"asm": "30440220131432090a6af42da3e8335ff110831b41a44f4e9d18d88f5d50278380696c7202200fc2e48938f323ad13625890c0ea926c8a189c08b8efc38376b20c8a2188e96e[ALL] 0479be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",
|
||||
"hex": "4730440220131432090a6af42da3e8335ff110831b41a44f4e9d18d88f5d50278380696c7202200fc2e48938f323ad13625890c0ea926c8a189c08b8efc38376b20c8a2188e96e01410479be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8"
|
||||
},
|
||||
"sequence": 4294967295
|
||||
}
|
||||
],
|
||||
"vout": [
|
||||
{
|
||||
"value": 0.00100000,
|
||||
"n": 0,
|
||||
"scriptPubKey": {
|
||||
"asm": "OP_DUP OP_HASH160 b9b3036866a5f5b67e77688dd1ff7af37d40599a OP_EQUALVERIFY OP_CHECKSIG",
|
||||
"hex": "76a914b9b3036866a5f5b67e77688dd1ff7af37d40599a88ac",
|
||||
"address": "DN4yzowAzPbtM6Hh4HsNjFH8QjurZ4Nzhz",
|
||||
"type": "pubkeyhash"
|
||||
}
|
||||
}
|
||||
],
|
||||
"hex": "01000000018594c5bdcaec8f06b78b596f31cd292a294fd031e24eec716f43dac91ea7494d000000008a4730440220131432090a6af42da3e8335ff110831b41a44f4e9d18d88f5d50278380696c7202200fc2e48938f323ad13625890c0ea926c8a189c08b8efc38376b20c8a2188e96e01410479be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8ffffffff01a0860100000000001976a914b9b3036866a5f5b67e77688dd1ff7af37d40599a88ac00000000"
|
||||
}
|
||||
1
test/util/data/txcreatesignv2.hex
Normal file
1
test/util/data/txcreatesignv2.hex
Normal file
|
|
@ -0,0 +1 @@
|
|||
02000000018594c5bdcaec8f06b78b596f31cd292a294fd031e24eec716f43dac91ea7494d000000008a473044022079c7aa014177a2e973caf6df7c7b8f15399083b91eba370ea1e19c4caed9181e02205f8f8763505ce8e6cbdd2cd28fab3fd407a75003e7d0dc04e6bebb0a3c89e7cb01410479be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8ffffffff01a0860100000000001976a914b9b3036866a5f5b67e77688dd1ff7af37d40599a88ac00000000
|
||||
175
test/util/digibyte-util-test.py
Executable file
175
test/util/digibyte-util-test.py
Executable file
|
|
@ -0,0 +1,175 @@
|
|||
#!/usr/bin/env python3
|
||||
# Copyright 2014 BitPay Inc.
|
||||
# Copyright 2016-2017 The DigiByte Core developers
|
||||
# Distributed under the MIT software license, see the accompanying
|
||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
"""Test framework for digibyte utils.
|
||||
|
||||
Runs automatically during `make check`.
|
||||
|
||||
Can also be run manually."""
|
||||
|
||||
import argparse
|
||||
import binascii
|
||||
import configparser
|
||||
import difflib
|
||||
import json
|
||||
import logging
|
||||
import os
|
||||
import pprint
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
def main():
|
||||
config = configparser.ConfigParser()
|
||||
config.optionxform = str
|
||||
config.read_file(open(os.path.join(os.path.dirname(__file__), "../config.ini"), encoding="utf8"))
|
||||
env_conf = dict(config.items('environment'))
|
||||
|
||||
parser = argparse.ArgumentParser(description=__doc__)
|
||||
parser.add_argument('-v', '--verbose', action='store_true')
|
||||
args = parser.parse_args()
|
||||
verbose = args.verbose
|
||||
|
||||
if verbose:
|
||||
level = logging.DEBUG
|
||||
else:
|
||||
level = logging.ERROR
|
||||
formatter = '%(asctime)s - %(levelname)s - %(message)s'
|
||||
# Add the format/level to the logger
|
||||
logging.basicConfig(format=formatter, level=level)
|
||||
|
||||
bctester(os.path.join(env_conf["SRCDIR"], "test", "util", "data"), "digibyte-util-test.json", env_conf)
|
||||
|
||||
def bctester(testDir, input_basename, buildenv):
|
||||
""" Loads and parses the input file, runs all tests and reports results"""
|
||||
input_filename = os.path.join(testDir, input_basename)
|
||||
raw_data = open(input_filename, encoding="utf8").read()
|
||||
input_data = json.loads(raw_data)
|
||||
|
||||
failed_testcases = []
|
||||
|
||||
for testObj in input_data:
|
||||
try:
|
||||
bctest(testDir, testObj, buildenv)
|
||||
logging.info("PASSED: " + testObj["description"])
|
||||
except:
|
||||
logging.info("FAILED: " + testObj["description"])
|
||||
failed_testcases.append(testObj["description"])
|
||||
|
||||
if failed_testcases:
|
||||
error_message = "FAILED_TESTCASES:\n"
|
||||
error_message += pprint.pformat(failed_testcases, width=400)
|
||||
logging.error(error_message)
|
||||
sys.exit(1)
|
||||
else:
|
||||
sys.exit(0)
|
||||
|
||||
def bctest(testDir, testObj, buildenv):
|
||||
"""Runs a single test, comparing output and RC to expected output and RC.
|
||||
|
||||
Raises an error if input can't be read, executable fails, or output/RC
|
||||
are not as expected. Error is caught by bctester() and reported.
|
||||
"""
|
||||
# Get the exec names and arguments
|
||||
execprog = os.path.join(buildenv["BUILDDIR"], "src", testObj["exec"] + buildenv["EXEEXT"])
|
||||
execargs = testObj['args']
|
||||
execrun = [execprog] + execargs
|
||||
|
||||
# Read the input data (if there is any)
|
||||
stdinCfg = None
|
||||
inputData = None
|
||||
if "input" in testObj:
|
||||
filename = os.path.join(testDir, testObj["input"])
|
||||
inputData = open(filename, encoding="utf8").read()
|
||||
stdinCfg = subprocess.PIPE
|
||||
|
||||
# Read the expected output data (if there is any)
|
||||
outputFn = None
|
||||
outputData = None
|
||||
outputType = None
|
||||
if "output_cmp" in testObj:
|
||||
outputFn = testObj['output_cmp']
|
||||
outputType = os.path.splitext(outputFn)[1][1:] # output type from file extension (determines how to compare)
|
||||
try:
|
||||
outputData = open(os.path.join(testDir, outputFn), encoding="utf8").read()
|
||||
except:
|
||||
logging.error("Output file " + outputFn + " can not be opened")
|
||||
raise
|
||||
if not outputData:
|
||||
logging.error("Output data missing for " + outputFn)
|
||||
raise Exception
|
||||
if not outputType:
|
||||
logging.error("Output file %s does not have a file extension" % outputFn)
|
||||
raise Exception
|
||||
|
||||
# Run the test
|
||||
proc = subprocess.Popen(execrun, stdin=stdinCfg, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
|
||||
try:
|
||||
outs = proc.communicate(input=inputData)
|
||||
except OSError:
|
||||
logging.error("OSError, Failed to execute " + execprog)
|
||||
raise
|
||||
|
||||
if outputData:
|
||||
data_mismatch, formatting_mismatch = False, False
|
||||
# Parse command output and expected output
|
||||
try:
|
||||
a_parsed = parse_output(outs[0], outputType)
|
||||
except Exception as e:
|
||||
logging.error('Error parsing command output as %s: %s' % (outputType, e))
|
||||
raise
|
||||
try:
|
||||
b_parsed = parse_output(outputData, outputType)
|
||||
except Exception as e:
|
||||
logging.error('Error parsing expected output %s as %s: %s' % (outputFn, outputType, e))
|
||||
raise
|
||||
# Compare data
|
||||
if a_parsed != b_parsed:
|
||||
logging.error("Output data mismatch for " + outputFn + " (format " + outputType + ")")
|
||||
data_mismatch = True
|
||||
# Compare formatting
|
||||
if outs[0] != outputData:
|
||||
error_message = "Output formatting mismatch for " + outputFn + ":\n"
|
||||
error_message += "".join(difflib.context_diff(outputData.splitlines(True),
|
||||
outs[0].splitlines(True),
|
||||
fromfile=outputFn,
|
||||
tofile="returned"))
|
||||
logging.error(error_message)
|
||||
formatting_mismatch = True
|
||||
|
||||
assert not data_mismatch and not formatting_mismatch
|
||||
|
||||
# Compare the return code to the expected return code
|
||||
wantRC = 0
|
||||
if "return_code" in testObj:
|
||||
wantRC = testObj['return_code']
|
||||
if proc.returncode != wantRC:
|
||||
logging.error("Return code mismatch for " + outputFn)
|
||||
raise Exception
|
||||
|
||||
if "error_txt" in testObj:
|
||||
want_error = testObj["error_txt"]
|
||||
# Compare error text
|
||||
# TODO: ideally, we'd compare the strings exactly and also assert
|
||||
# That stderr is empty if no errors are expected. However, digibyte-tx
|
||||
# emits DISPLAY errors when running as a windows application on
|
||||
# linux through wine. Just assert that the expected error text appears
|
||||
# somewhere in stderr.
|
||||
if want_error not in outs[1]:
|
||||
logging.error("Error mismatch:\n" + "Expected: " + want_error + "\nReceived: " + outs[1].rstrip())
|
||||
raise Exception
|
||||
|
||||
def parse_output(a, fmt):
|
||||
"""Parse the output according to specified format.
|
||||
|
||||
Raise an error if the output can't be parsed."""
|
||||
if fmt == 'json': # json: compare parsed data
|
||||
return json.loads(a)
|
||||
elif fmt == 'hex': # hex: parse and compare binary data
|
||||
return binascii.a2b_hex(a.strip())
|
||||
else:
|
||||
raise NotImplementedError("Don't know how to compare %s" % fmt)
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
48
test/util/rpcauth-test.py
Executable file
48
test/util/rpcauth-test.py
Executable file
|
|
@ -0,0 +1,48 @@
|
|||
#!/usr/bin/env python3
|
||||
# Copyright (c) 2015-2018 The DigiByte Core developers
|
||||
# Distributed under the MIT software license, see the accompanying
|
||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
"""Test share/rpcauth/rpcauth.py
|
||||
"""
|
||||
import base64
|
||||
import configparser
|
||||
import hmac
|
||||
import importlib
|
||||
import os
|
||||
import sys
|
||||
import unittest
|
||||
|
||||
class TestRPCAuth(unittest.TestCase):
|
||||
def setUp(self):
|
||||
config = configparser.ConfigParser()
|
||||
config_path = os.path.abspath(
|
||||
os.path.join(os.sep, os.path.abspath(os.path.dirname(__file__)),
|
||||
"../config.ini"))
|
||||
with open(config_path, encoding="utf8") as config_file:
|
||||
config.read_file(config_file)
|
||||
sys.path.insert(0, os.path.dirname(config['environment']['RPCAUTH']))
|
||||
self.rpcauth = importlib.import_module('rpcauth')
|
||||
|
||||
def test_generate_salt(self):
|
||||
for i in range(16, 32 + 1):
|
||||
self.assertEqual(len(self.rpcauth.generate_salt(i)), i * 2)
|
||||
|
||||
def test_generate_password(self):
|
||||
password = self.rpcauth.generate_password()
|
||||
expected_password = base64.urlsafe_b64encode(
|
||||
base64.urlsafe_b64decode(password)).decode('utf-8')
|
||||
self.assertEqual(expected_password, password)
|
||||
|
||||
def test_check_password_hmac(self):
|
||||
salt = self.rpcauth.generate_salt(16)
|
||||
password = self.rpcauth.generate_password()
|
||||
password_hmac = self.rpcauth.password_to_hmac(salt, password)
|
||||
|
||||
m = hmac.new(bytearray(salt, 'utf-8'),
|
||||
bytearray(password, 'utf-8'), 'SHA256')
|
||||
expected_password_hmac = m.hexdigest()
|
||||
|
||||
self.assertEqual(expected_password_hmac, password_hmac)
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
Loading…
Reference in a new issue