aboutsummaryrefslogtreecommitdiff
path: root/qa/rpc-tests/txn_clone.py
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2016-01-22 16:56:50 +0100
committerWladimir J. van der Laan <laanwj@gmail.com>2016-01-22 16:57:47 +0100
commit02676c57ce21553f56a9ee916ae056efd4e019cd (patch)
treece1cbe44a61278702028044c1a557343ea39691f /qa/rpc-tests/txn_clone.py
parentfc0899400082496bf2b3e061105e1e6a13399889 (diff)
parente279038e84035e0477886183495c2d9c132b6773 (diff)
downloadbitcoin-02676c57ce21553f56a9ee916ae056efd4e019cd.tar.xz
Merge #7236: Use createrawtx locktime parm in txn_clone
e279038 Use createrawtx locktime parm in txn_clone (Tom Harding)
Diffstat (limited to 'qa/rpc-tests/txn_clone.py')
-rwxr-xr-xqa/rpc-tests/txn_clone.py17
1 files changed, 3 insertions, 14 deletions
diff --git a/qa/rpc-tests/txn_clone.py b/qa/rpc-tests/txn_clone.py
index 3092f09ecb..b132aec4b6 100755
--- a/qa/rpc-tests/txn_clone.py
+++ b/qa/rpc-tests/txn_clone.py
@@ -53,16 +53,10 @@ class TxnMallTest(BitcoinTestFramework):
clone_inputs = [{"txid":rawtx1["vin"][0]["txid"],"vout":rawtx1["vin"][0]["vout"]}]
clone_outputs = {rawtx1["vout"][0]["scriptPubKey"]["addresses"][0]:rawtx1["vout"][0]["value"],
rawtx1["vout"][1]["scriptPubKey"]["addresses"][0]:rawtx1["vout"][1]["value"]}
- clone_raw = self.nodes[0].createrawtransaction(clone_inputs, clone_outputs)
+ clone_locktime = rawtx1["locktime"]
+ clone_raw = self.nodes[0].createrawtransaction(clone_inputs, clone_outputs, clone_locktime)
- # 3 hex manipulations on the clone are required
-
- # manipulation 1. sequence is at version+#inputs+input+sigstub
- posseq = 2*(4+1+36+1)
- seqbe = '%08x' % rawtx1["vin"][0]["sequence"]
- clone_raw = clone_raw[:posseq] + seqbe[6:8] + seqbe[4:6] + seqbe[2:4] + seqbe[0:2] + clone_raw[posseq + 8:]
-
- # manipulation 2. createrawtransaction randomizes the order of its outputs, so swap them if necessary.
+ # createrawtransaction randomizes the order of its outputs, so swap them if necessary.
# output 0 is at version+#inputs+input+sigstub+sequence+#outputs
# 40 BTC serialized is 00286bee00000000
pos0 = 2*(4+1+36+1+4+1)
@@ -74,11 +68,6 @@ class TxnMallTest(BitcoinTestFramework):
output1 = clone_raw[pos0 + output_len : pos0 + 2 * output_len]
clone_raw = clone_raw[:pos0] + output1 + output0 + clone_raw[pos0 + 2 * output_len:]
- # manipulation 3. locktime is after outputs
- poslt = pos0 + 2 * output_len
- ltbe = '%08x' % rawtx1["locktime"]
- clone_raw = clone_raw[:poslt] + ltbe[6:8] + ltbe[4:6] + ltbe[2:4] + ltbe[0:2] + clone_raw[poslt + 8:]
-
# Use a different signature hash type to sign. This creates an equivalent but malleated clone.
# Don't send the clone anywhere yet
tx1_clone = self.nodes[0].signrawtransaction(clone_raw, None, None, "ALL|ANYONECANPAY")