Merge bitcoin/bitcoin#29022: Make bitcoin-tx replaceable value optional

98afe78661 doc: Update bitcoin-tx replaceable documentation (Kashif Smith)
94feaf2b66 tests: Add unit tests for bitcoin-tx replaceable command (Kashif Smith)
c2b836b119 bitcoin-tx: Make replaceable value optional (Kashif Smith)

Pull request description:

  This fixes #28638. The issue was originally raised by dooglus, who also suggested the patch found in this code. Additionally, test coverage has been added and documentation has been updated.

ACKs for top commit:
  achow101:
    ACK 98afe78661
  pinheadmz:
    ACK 98afe78661
  hernanmarino:
    Tested ACK 98afe78661
  instagibbs:
    untested ACK 98afe78661

Tree-SHA512: ea1384aba7b0014c8cbeb7280d66b1e617d406fb02471dff33873057132b80518c94c7caa4b0426c26d17ce8aa393107de319dde781ace8df72f0314c8c75159
This commit is contained in:
Ava Chow
2023-12-14 13:47:27 -05:00
7 changed files with 92 additions and 4 deletions

View File

@@ -163,7 +163,85 @@
"replaceable=0foo"],
"return_code": 1,
"error_txt": "error: Invalid TX input index",
"description": "Tests the check for an invalid input index with replaceable"
"description": "Tests the check for an invalid string input index with replaceable"
},
{
"exec": "./bitcoin-tx",
"args":
["-create",
"in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0",
"replaceable=-1"],
"return_code": 1,
"error_txt": "error: Invalid TX input index",
"description": "Tests the check for an invalid negative input index with replaceable"
},
{
"exec": "./bitcoin-tx",
"args":
["-create",
"in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0",
"replaceable=1"],
"return_code": 1,
"error_txt": "error: Invalid TX input index",
"description": "Tests the check for an invalid positive out-of-bounds input index with replaceable"
},
{
"exec": "./bitcoin-tx",
"args":
["-create",
"in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0",
"replaceable=0"],
"output_cmp": "txreplacesingleinput.hex",
"description": "Tests that the 'SEQUENCE' value for a single input is set to fdffffff for single input"
},
{
"exec": "./bitcoin-tx",
"args":
["-create",
"in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0",
"replaceable="],
"output_cmp": "txreplacesingleinput.hex",
"description": "Tests that the 'SEQUENCE' value for a single input is set to fdffffff when N omitted"
},
{
"exec": "./bitcoin-tx",
"args":
["-create",
"in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0",
"in=bf829c6bcf84579331337659d31f89dfd138f7f7785802d5501c92333145ca7c:18",
"in=22a6f904655d53ae2ff70e701a0bbd90aa3975c0f40bfc6cc996a9049e31cdfc:1",
"replaceable=1"],
"output_cmp": "txreplace1.hex",
"description": "Tests that only the 'SEQUENCE' value of input[1] is set to fdffffff"
},
{
"exec": "./bitcoin-tx",
"args":
["-create",
"in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0",
"in=bf829c6bcf84579331337659d31f89dfd138f7f7785802d5501c92333145ca7c:18",
"in=22a6f904655d53ae2ff70e701a0bbd90aa3975c0f40bfc6cc996a9049e31cdfc:1",
"replaceable="],
"output_cmp": "txreplaceomittedn.hex",
"description": "Tests that the 'SEQUENCE' value for each input is set to fdffffff when N omitted"
},
{
"exec": "./bitcoin-tx",
"args":
["-create",
"replaceable="],
"output_cmp": "txreplacenoinputs.hex",
"description": "Tests behavior when no inputs are provided in the transaction"
},
{
"exec": "./bitcoin-tx",
"args":
["-create",
"in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0:abcdef00",
"replaceable="],
"return_code": 1,
"error_txt": "error: invalid TX sequence id 'abcdef00'",
"description": "Try to make invalid input replaceable"
},
{ "exec": "./bitcoin-tx",
"args":

View File

@@ -0,0 +1 @@
02000000031f5c38dfcf6f1a5f5a87c416076d392c87e6d41970d5ad5e477a02d66bde97580000000000ffffffff7cca453133921c50d5025878f7f738d1df891fd359763331935784cf6b9c82bf1200000000fdfffffffccd319e04a996c96cfc0bf4c07539aa90bd0b1a700ef72fae535d6504f9a6220100000000ffffffff0000000000

View File

@@ -0,0 +1 @@
02000000000000000000

View File

@@ -0,0 +1 @@
02000000031f5c38dfcf6f1a5f5a87c416076d392c87e6d41970d5ad5e477a02d66bde97580000000000fdffffff7cca453133921c50d5025878f7f738d1df891fd359763331935784cf6b9c82bf1200000000fdfffffffccd319e04a996c96cfc0bf4c07539aa90bd0b1a700ef72fae535d6504f9a6220100000000fdffffff0000000000

View File

@@ -0,0 +1 @@
02000000011f5c38dfcf6f1a5f5a87c416076d392c87e6d41970d5ad5e477a02d66bde97580000000000fdffffff0000000000