From d4390f78a4797f67b8431091cbe3853dfe3bda35 Mon Sep 17 00:00:00 2001 From: matejcik Date: Thu, 26 Mar 2020 16:07:04 +0100 Subject: [PATCH] tests: add request_meta queries (needed for transaction streaming) --- tests/device_tests/test_msg_signtx_bcash.py | 109 ++++++------------ tests/device_tests/test_msg_signtx_bgold.py | 42 ++++++- tests/device_tests/test_msg_signtx_grs.py | 29 ++++- tests/device_tests/test_msg_signtx_komodo.py | 16 ++- tests/device_tests/test_msg_signtx_segwit.py | 39 ++++++- .../test_msg_signtx_segwit_native.py | 59 +++++++++- tests/device_tests/test_msg_signtx_zcash.py | 19 ++- tests/device_tests/test_multisig.py | 10 +- ...1ab0c63321b1be7a8cad7bf5c5c216fcf062c.json | 22 ++++ ...b484fc32b96f89c3c39f98d86f90db16076a0.json | 18 +++ ...f752a3977d7e5337915071bb4151e6b711a78.json | 18 +++ ...a6856c6edcbf4d05ebef3486510ae1c293d5f.json | 22 ++++ ...27cdd5f1b3cd0b9907dd7ff1a07e14addc985.json | 22 ++++ ...3184a98e020d9795c1b65cb7cef2551a8fb18.json | 24 ++++ ...2d0891855e8acfe5334f9ebd72b9ad2de60cf.json | 22 ++++ ...0be865a387446e32fc876d086203f483f61d1.json | 22 ++++ ...4c8b4ce1d7724905f8ebef8dca26b0c8e0f1d.json | 21 ++++ ...70165818a829bbf4477cd1afe5149dbcd34b1.json | 21 ++++ ...0e3684e948709c5cdcaf12da3bb079c99448a.json | 22 ++++ ...c8cb4fc301961c5988cba56902d8ffb61c337.json | 22 ++++ ...5bad0b561ad1dfc047d0a7fbb8814668f91e5.json | 18 +++ ...6c5a7f19bf66b1b1253c2c51cb4ae5f0c017b.json | 22 ++++ ...c8dc83bb553bf386a3f478ae65b5c021002be.json | 22 ++++ ...aa77e8161a65009dc009489b48aa6587ce348.json | 18 +++ ...06b0398646b91acf314da028c3f03dd0179fc.json | 18 +++ ...4cb40896d9bb459951bdf590ca6a495293a02.json | 9 ++ ...aa665125464547db5c7a6cd28f21639fe1228.json | 18 +++ ...5efb8ad839953376ae5eceaf92774102c6e39.json | 22 ++++ ...e4cf1539c5172684721e38e69f4ef634d75dc.json | 25 ++++ ...8aea8c63e5ae29293991e7bfa80c126930368.json | 31 +++++ 30 files changed, 693 insertions(+), 89 deletions(-) create mode 100644 tests/txcache/bcash/502e8577b237b0152843a416f8f1ab0c63321b1be7a8cad7bf5c5c216fcf062c.json create mode 100644 tests/txcache/bcash/8b6db9b8ba24235d86b053ea2ccb484fc32b96f89c3c39f98d86f90db16076a0.json create mode 100644 tests/txcache/bcash/bc37c28dfb467d2ecb50261387bf752a3977d7e5337915071bb4151e6b711a78.json create mode 100644 tests/txcache/bcash/f68caf10df12d5b07a34601d88fa6856c6edcbf4d05ebef3486510ae1c293d5f.json create mode 100644 tests/txcache/bgold/25526bf06c76ad3082bba930cf627cdd5f1b3cd0b9907dd7ff1a07e14addc985.json create mode 100644 tests/txcache/bgold/db77c2461b840e6edbe7f9280043184a98e020d9795c1b65cb7cef2551a8fb18.json create mode 100644 tests/txcache/groestlcoin_testnet/09a48bce2f9d5c6e4f0cb9ea1b32d0891855e8acfe5334f9ebd72b9ad2de60cf.json create mode 100644 tests/txcache/groestlcoin_testnet/4f2f857f39ed1afe05542d058fb0be865a387446e32fc876d086203f483f61d1.json create mode 100644 tests/txcache/komodo/2807c5b126ec8e2b078cab0f12e4c8b4ce1d7724905f8ebef8dca26b0c8e0f1d.json create mode 100644 tests/txcache/komodo/7b28bd91119e9776f0d4ebd80e570165818a829bbf4477cd1afe5149dbcd34b1.json create mode 100644 tests/txcache/testnet/09144602765ce3dd8f4329445b20e3684e948709c5cdcaf12da3bb079c99448a.json create mode 100644 tests/txcache/testnet/20912f98ea3ed849042efed0fdac8cb4fc301961c5988cba56902d8ffb61c337.json create mode 100644 tests/txcache/testnet/31bc1c88ce6ae337a6b3057a16d5bad0b561ad1dfc047d0a7fbb8814668f91e5.json create mode 100644 tests/txcache/testnet/65b811d3eca0fe6915d9f2d77c86c5a7f19bf66b1b1253c2c51cb4ae5f0c017b.json create mode 100644 tests/txcache/testnet/9c31922be756c06d02167656465c8dc83bb553bf386a3f478ae65b5c021002be.json create mode 100644 tests/txcache/testnet/a345b85759b385c6446055e4c3baa77e8161a65009dc009489b48aa6587ce348.json create mode 100644 tests/txcache/testnet/c9348040bbc2024e12dcb4a0b4806b0398646b91acf314da028c3f03dd0179fc.json create mode 100644 tests/txcache/testnet/dee13c469e7ab28108a1ce470d74cb40896d9bb459951bdf590ca6a495293a02.json create mode 100644 tests/txcache/testnet/f41cbedd8becee05a830f418d13aa665125464547db5c7a6cd28f21639fe1228.json create mode 100644 tests/txcache/testnet/fbbff7f3c85f8067453d7c062bd5efb8ad839953376ae5eceaf92774102c6e39.json create mode 100644 tests/txcache/zcash_testnet/aaf51e4606c264e47e5c42c958fe4cf1539c5172684721e38e69f4ef634d75dc.json create mode 100644 tests/txcache/zcash_testnet/e3820602226974b1dd87b7113cc8aea8c63e5ae29293991e7bfa80c126930368.json diff --git a/tests/device_tests/test_msg_signtx_bcash.py b/tests/device_tests/test_msg_signtx_bcash.py index 9b20be92e..ea46a0be6 100644 --- a/tests/device_tests/test_msg_signtx_bcash.py +++ b/tests/device_tests/test_msg_signtx_bcash.py @@ -21,7 +21,7 @@ from trezorlib.exceptions import TrezorFailure from trezorlib.tools import H_, parse_path from ..tx_cache import TxCache -from .signtx import request_finished, request_input, request_output +from .signtx import request_finished, request_input, request_meta, request_output B = proto.ButtonRequestType TX_API = TxCache("Bcash") @@ -65,6 +65,9 @@ class TestMsgSigntxBch: client.set_expected_responses( [ request_input(0), + request_meta(TXHASH_bc37c2), + request_input(0, TXHASH_bc37c2), + request_output(0, TXHASH_bc37c2), request_output(0), request_output(1), proto.ButtonRequest(code=B.ConfirmOutput), @@ -110,7 +113,15 @@ class TestMsgSigntxBch: client.set_expected_responses( [ request_input(0), + request_meta(TXHASH_502e85), + request_input(0, TXHASH_502e85), + request_output(0, TXHASH_502e85), + request_output(1, TXHASH_502e85), request_input(1), + request_meta(TXHASH_502e85), + request_input(0, TXHASH_502e85), + request_output(0, TXHASH_502e85), + request_output(1, TXHASH_502e85), request_output(0), proto.ButtonRequest(code=B.ConfirmOutput), proto.ButtonRequest(code=B.SignTx), @@ -155,7 +166,15 @@ class TestMsgSigntxBch: client.set_expected_responses( [ request_input(0), + request_meta(TXHASH_502e85), + request_input(0, TXHASH_502e85), + request_output(0, TXHASH_502e85), + request_output(1, TXHASH_502e85), request_input(1), + request_meta(TXHASH_502e85), + request_input(0, TXHASH_502e85), + request_output(0, TXHASH_502e85), + request_output(1, TXHASH_502e85), request_output(0), proto.ButtonRequest(code=B.ConfirmOutput), proto.ButtonRequest(code=B.SignTx), @@ -174,81 +193,6 @@ class TestMsgSigntxBch: == "01000000022c06cf6f215c5cbfd7caa8e71b1b32630cabf1f816a4432815b037b277852e50000000006a47304402207a2a955f1cb3dc5f03f2c82934f55654882af4e852e5159639f6349e9386ec4002205fb8419dce4e648eae8f67bc4e369adfb130a87d2ea2d668f8144213b12bb457412103174c61e9c5362507e8061e28d2c0ce3d4df4e73f3535ae0b12f37809e0f92d2dffffffff2c06cf6f215c5cbfd7caa8e71b1b32630cabf1f816a4432815b037b277852e50010000006a473044022062151cf960b71823bbe68c7ed2c2a93ad1b9706a30255fddb02fcbe056d8c26102207bad1f0872bc5f0cfaf22e45c925c35d6c1466e303163b75cb7688038f1a5541412102595caf9aeb6ffdd0e82b150739a83297358b9a77564de382671056ad9e5b8c58ffffffff0170861d00000000001976a91434e9cec317896e818619ab7dc99d2305216ff4af88ac00000000" ) - def test_attack_amount(self, client): - inp1 = proto.TxInputType( - address_n=parse_path("44'/145'/0'/1/0"), - # bitcoincash:qzc5q87w069lzg7g3gzx0c8dz83mn7l02scej5aluw - amount=300, - prev_hash=TXHASH_502e85, - prev_index=0, - script_type=proto.InputScriptType.SPENDADDRESS, - ) - inp2 = proto.TxInputType( - address_n=parse_path("44'/145'/0'/0/1"), - # bitcoincash:qr23ajjfd9wd73l87j642puf8cad20lfmqdgwvpat4 - amount=70, - prev_hash=TXHASH_502e85, - prev_index=1, - script_type=proto.InputScriptType.SPENDADDRESS, - ) - out1 = proto.TxOutputType( - address="bitcoincash:qq6wnnkrz7ykaqvxrx4hmjvayvzjzml54uyk76arx4", - amount=200, - script_type=proto.OutputScriptType.PAYTOADDRESS, - ) - - # test if passes without modifications - with client: - client.set_expected_responses( - [ - request_input(0), - request_input(1), - request_output(0), - proto.ButtonRequest(code=B.ConfirmOutput), - proto.ButtonRequest(code=B.SignTx), - request_input(0), - request_input(1), - request_output(0), - request_finished(), - ] - ) - btc.sign_tx(client, "Bcash", [inp1, inp2], [out1], prev_txes=TX_API) - - run_attack = True - - def attack_processor(msg): - nonlocal run_attack - - if run_attack and msg.tx.inputs and msg.tx.inputs[0] == inp1: - # 300 is lowered to 280 at the first run - # the user confirms 280 but the transaction - # is spending 300 => larger fee without the user knowing - msg.tx.inputs[0].amount = 280 - run_attack = False - - return msg - - # now fails - client.set_filter(proto.TxAck, attack_processor) - with client: - client.set_expected_responses( - [ - request_input(0), - request_input(1), - request_output(0), - proto.ButtonRequest(code=B.ConfirmOutput), - proto.ButtonRequest(code=B.SignTx), - request_input(0), - request_input(1), - proto.Failure(), - ] - ) - - with pytest.raises( - TrezorFailure, match="Transaction has changed during signing" - ): - btc.sign_tx(client, "Bcash", [inp1, inp2], [out1], prev_txes=TX_API) - def test_attack_change_input(self, client): inp1 = proto.TxInputType( address_n=parse_path("44'/145'/10'/0/0"), @@ -287,6 +231,9 @@ class TestMsgSigntxBch: client.set_expected_responses( [ request_input(0), + request_meta(TXHASH_bc37c2), + request_input(0, TXHASH_bc37c2), + request_output(0, TXHASH_bc37c2), request_output(0), request_output(1), proto.ButtonRequest(code=B.ConfirmOutput), @@ -353,6 +300,10 @@ class TestMsgSigntxBch: client.set_expected_responses( [ request_input(0), + request_meta(TXHASH_f68caf), + request_input(0, TXHASH_f68caf), + request_output(0, TXHASH_f68caf), + request_output(1, TXHASH_f68caf), request_output(0), proto.ButtonRequest(code=B.ConfirmOutput), proto.ButtonRequest(code=B.SignTx), @@ -410,6 +361,9 @@ class TestMsgSigntxBch: client.set_expected_responses( [ request_input(0), + request_meta(TXHASH_8b6db9), + request_input(0, TXHASH_8b6db9), + request_output(0, TXHASH_8b6db9), request_output(0), proto.ButtonRequest(code=B.ConfirmOutput), request_output(1), @@ -444,6 +398,9 @@ class TestMsgSigntxBch: client.set_expected_responses( [ request_input(0), + request_meta(TXHASH_8b6db9), + request_input(0, TXHASH_8b6db9), + request_output(0, TXHASH_8b6db9), request_output(0), proto.ButtonRequest(code=B.ConfirmOutput), request_output(1), diff --git a/tests/device_tests/test_msg_signtx_bgold.py b/tests/device_tests/test_msg_signtx_bgold.py index 8a620b31d..cb783a186 100644 --- a/tests/device_tests/test_msg_signtx_bgold.py +++ b/tests/device_tests/test_msg_signtx_bgold.py @@ -21,7 +21,7 @@ from trezorlib.exceptions import TrezorFailure from trezorlib.tools import H_, btc_hash, parse_path from ..tx_cache import TxCache -from .signtx import request_finished, request_input, request_output +from .signtx import request_finished, request_input, request_meta, request_output B = proto.ButtonRequestType TX_API = TxCache("Bgold") @@ -59,6 +59,10 @@ class TestMsgSigntxBitcoinGold: client.set_expected_responses( [ request_input(0), + request_meta(TXHASH_25526b), + request_input(0, TXHASH_25526b), + request_output(0, TXHASH_25526b), + request_output(1, TXHASH_25526b), request_output(0), request_output(1), proto.ButtonRequest(code=B.ConfirmOutput), @@ -103,7 +107,15 @@ class TestMsgSigntxBitcoinGold: client.set_expected_responses( [ request_input(0), + request_meta(TXHASH_25526b), + request_input(0, TXHASH_25526b), + request_output(0, TXHASH_25526b), + request_output(1, TXHASH_25526b), request_input(1), + request_meta(TXHASH_db77c2), + request_input(0, TXHASH_db77c2), + request_input(1, TXHASH_db77c2), + request_output(0, TXHASH_db77c2), request_output(0), proto.ButtonRequest(code=B.ConfirmOutput), proto.ButtonRequest(code=B.SignTx), @@ -159,6 +171,10 @@ class TestMsgSigntxBitcoinGold: client.set_expected_responses( [ request_input(0), + request_meta(TXHASH_25526b), + request_input(0, TXHASH_25526b), + request_output(0, TXHASH_25526b), + request_output(1, TXHASH_25526b), request_output(0), request_output(1), proto.ButtonRequest(code=B.ConfirmOutput), @@ -208,6 +224,10 @@ class TestMsgSigntxBitcoinGold: client.set_expected_responses( [ request_input(0), + request_meta(TXHASH_25526b), + request_input(0, TXHASH_25526b), + request_output(0, TXHASH_25526b), + request_output(1, TXHASH_25526b), request_output(0), proto.ButtonRequest(code=B.ConfirmOutput), request_output(1), @@ -241,6 +261,10 @@ class TestMsgSigntxBitcoinGold: client.set_expected_responses( [ request_input(0), + request_meta(TXHASH_25526b), + request_input(0, TXHASH_25526b), + request_output(0, TXHASH_25526b), + request_output(1, TXHASH_25526b), request_output(0), proto.ButtonRequest(code=B.ConfirmOutput), request_output(1), @@ -286,6 +310,10 @@ class TestMsgSigntxBitcoinGold: client.set_expected_responses( [ request_input(0), + request_meta(TXHASH_25526b), + request_input(0, TXHASH_25526b), + request_output(0, TXHASH_25526b), + request_output(1, TXHASH_25526b), request_output(0), proto.ButtonRequest(code=B.ConfirmOutput), request_output(1), @@ -329,6 +357,10 @@ class TestMsgSigntxBitcoinGold: client.set_expected_responses( [ request_input(0), + request_meta(TXHASH_25526b), + request_input(0, TXHASH_25526b), + request_output(0, TXHASH_25526b), + request_output(1, TXHASH_25526b), request_output(0), proto.ButtonRequest(code=B.ConfirmOutput), request_output(1), @@ -380,6 +412,10 @@ class TestMsgSigntxBitcoinGold: client.set_expected_responses( [ request_input(0), + request_meta(TXHASH_25526b), + request_input(0, TXHASH_25526b), + request_output(0, TXHASH_25526b), + request_output(1, TXHASH_25526b), request_output(0), proto.ButtonRequest(code=B.ConfirmOutput), proto.ButtonRequest(code=B.SignTx), @@ -399,6 +435,10 @@ class TestMsgSigntxBitcoinGold: client.set_expected_responses( [ request_input(0), + request_meta(TXHASH_25526b), + request_input(0, TXHASH_25526b), + request_output(0, TXHASH_25526b), + request_output(1, TXHASH_25526b), request_output(0), proto.ButtonRequest(code=B.ConfirmOutput), proto.ButtonRequest(code=B.SignTx), diff --git a/tests/device_tests/test_msg_signtx_grs.py b/tests/device_tests/test_msg_signtx_grs.py index 0ac3b9dce..27e75d44c 100644 --- a/tests/device_tests/test_msg_signtx_grs.py +++ b/tests/device_tests/test_msg_signtx_grs.py @@ -23,6 +23,7 @@ from ..tx_cache import TxCache B = proto.ButtonRequestType TX_API = TxCache("Groestlcoin") +TX_API_TESTNET = TxCache("Groestlcoin Testnet") TXHASH_cb74c8 = bytes.fromhex( "cb74c8478c5814742c87cffdb4a21231869888f8042fb07a90e015a9db1f9d4a" @@ -101,7 +102,12 @@ class TestMsgSigntxGRS: ) details = proto.SignTx(lock_time=650756) _, serialized_tx = btc.sign_tx( - client, "Groestlcoin Testnet", [inp1], [out1, out2], details=details + client, + "Groestlcoin Testnet", + [inp1], + [out1, out2], + details=details, + prev_txes=TX_API_TESTNET, ) assert ( serialized_tx.hex() @@ -130,7 +136,12 @@ class TestMsgSigntxGRS: ) details = proto.SignTx(lock_time=650756) _, serialized_tx = btc.sign_tx( - client, "Groestlcoin Testnet", [inp1], [out1, out2], details=details + client, + "Groestlcoin Testnet", + [inp1], + [out1, out2], + details=details, + prev_txes=TX_API_TESTNET, ) assert ( serialized_tx.hex() @@ -158,7 +169,12 @@ class TestMsgSigntxGRS: ) details = proto.SignTx(lock_time=650713) _, serialized_tx = btc.sign_tx( - client, "Groestlcoin Testnet", [inp1], [out1, out2], details=details + client, + "Groestlcoin Testnet", + [inp1], + [out1, out2], + details=details, + prev_txes=TX_API_TESTNET, ) assert ( serialized_tx.hex() @@ -186,7 +202,12 @@ class TestMsgSigntxGRS: ) details = proto.SignTx(lock_time=650713) _, serialized_tx = btc.sign_tx( - client, "Groestlcoin Testnet", [inp1], [out1, out2], details=details + client, + "Groestlcoin Testnet", + [inp1], + [out1, out2], + details=details, + prev_txes=TX_API_TESTNET, ) assert ( serialized_tx.hex() diff --git a/tests/device_tests/test_msg_signtx_komodo.py b/tests/device_tests/test_msg_signtx_komodo.py index 0897d09b8..aa086d9c8 100644 --- a/tests/device_tests/test_msg_signtx_komodo.py +++ b/tests/device_tests/test_msg_signtx_komodo.py @@ -20,7 +20,13 @@ from trezorlib import btc, messages as proto from trezorlib.tools import parse_path from ..tx_cache import TxCache -from .signtx import request_finished, request_input, request_output +from .signtx import ( + request_extra_data, + request_finished, + request_input, + request_meta, + request_output, +) B = proto.ButtonRequestType TX_API = TxCache("Komodo") @@ -59,6 +65,10 @@ class TestMsgSigntxKomodo: client.set_expected_responses( [ request_input(0), + request_meta(TXHASH_2807c), + request_input(0, TXHASH_2807c), + request_output(0, TXHASH_2807c), + request_extra_data(0, 11, TXHASH_2807c), request_output(0), proto.ButtonRequest(code=B.ConfirmOutput), (trezor_core, proto.ButtonRequest(code=B.SignTx)), @@ -115,6 +125,10 @@ class TestMsgSigntxKomodo: client.set_expected_responses( [ request_input(0), + request_meta(TXHASH_7b28bd), + request_input(0, TXHASH_7b28bd), + request_output(0, TXHASH_7b28bd), + request_extra_data(0, 11, TXHASH_7b28bd), request_output(0), proto.ButtonRequest(code=B.ConfirmOutput), request_output(1), diff --git a/tests/device_tests/test_msg_signtx_segwit.py b/tests/device_tests/test_msg_signtx_segwit.py index 7c1bccdc9..67b8dce7a 100644 --- a/tests/device_tests/test_msg_signtx_segwit.py +++ b/tests/device_tests/test_msg_signtx_segwit.py @@ -21,7 +21,7 @@ from trezorlib.exceptions import TrezorFailure from trezorlib.tools import H_, parse_path from ..tx_cache import TxCache -from .signtx import request_finished, request_input, request_output +from .signtx import request_finished, request_input, request_meta, request_output B = proto.ButtonRequestType TX_API = TxCache("Testnet") @@ -32,6 +32,9 @@ TXHASH_20912f = bytes.fromhex( TXHASH_9c3192 = bytes.fromhex( "9c31922be756c06d02167656465c8dc83bb553bf386a3f478ae65b5c021002be" ) +TXHASH_dee13c = bytes.fromhex( + "dee13c469e7ab28108a1ce470d74cb40896d9bb459951bdf590ca6a495293a02" +) TXHASH_e5040e = bytes.fromhex( "e5040e1bc1ae7667ffb9e5248e90b2fb93cd9150234151ce90e14ab2f5933bcd" ) @@ -86,6 +89,10 @@ class TestMsgSigntxSegwit: client.set_expected_responses( [ request_input(0), + request_meta(TXHASH_20912f), + request_input(0, TXHASH_20912f), + request_output(0, TXHASH_20912f), + request_output(1, TXHASH_20912f), request_output(0), proto.ButtonRequest(code=B.ConfirmOutput), request_output(1), @@ -130,6 +137,10 @@ class TestMsgSigntxSegwit: client.set_expected_responses( [ request_input(0), + request_meta(TXHASH_20912f), + request_input(0, TXHASH_20912f), + request_output(0, TXHASH_20912f), + request_output(1, TXHASH_20912f), request_output(0), proto.ButtonRequest(code=B.ConfirmOutput), request_output(1), @@ -156,7 +167,7 @@ class TestMsgSigntxSegwit: inp1 = proto.TxInputType( address_n=parse_path("m/49'/1'/0'/0/0"), amount=2 ** 32 + 1, - prev_hash=b"\xff" * 32, + prev_hash=TXHASH_dee13c, prev_index=0, script_type=proto.InputScriptType.SPENDP2SHWITNESS, ) @@ -169,6 +180,8 @@ class TestMsgSigntxSegwit: client.set_expected_responses( [ request_input(0), + request_meta(TXHASH_dee13c), + request_output(0, TXHASH_dee13c), request_output(0), proto.ButtonRequest(code=B.ConfirmOutput), proto.ButtonRequest(code=B.SignTx), @@ -178,10 +191,12 @@ class TestMsgSigntxSegwit: request_finished(), ] ) - _, serialized_tx = btc.sign_tx(client, "Testnet", [inp1], [out1]) + _, serialized_tx = btc.sign_tx( + client, "Testnet", [inp1], [out1], prev_txes=TX_API + ) assert ( serialized_tx.hex() - == "01000000000101ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000171600140099a7ecbd938ed1839f5f6bf6d50933c6db9d5cffffffff01010000000100000017a914097c569095163e84475d07aa95a1f736df895b7b8702483045022100cb9d3aa7a8064702e6b61c20c7fb9cb672c69d3786cf5efef8ad6d90136ca7d8022065119ff6c6e6e6960e6508fc5360359bb269bb25ef8d90019decaa0a050cc45a0121033add1f0e8e3c3136f7428dd4a4de1057380bd311f5b0856e2269170b4ffa65bf00000000" + == "01000000000101023a2995a4a60c59df1b9559b49b6d8940cb740d47cea10881b27a9e463ce1de00000000171600140099a7ecbd938ed1839f5f6bf6d50933c6db9d5cffffffff01010000000100000017a914097c569095163e84475d07aa95a1f736df895b7b8702483045022100965aa8897c7cd5f0bff830481ed5259bf662ed0415ab497a6a152a3c335eb0a1022060acbbbada909b6575ac6f19382a6bdf4cab2fa1c5421aa66677806f380ddb870121033add1f0e8e3c3136f7428dd4a4de1057380bd311f5b0856e2269170b4ffa65bf00000000" ) @pytest.mark.multisig @@ -216,6 +231,10 @@ class TestMsgSigntxSegwit: client.set_expected_responses( [ request_input(0), + request_meta(TXHASH_9c3192), + request_input(0, TXHASH_9c3192), + request_output(0, TXHASH_9c3192), + request_output(1, TXHASH_9c3192), request_output(0), proto.ButtonRequest(code=B.ConfirmOutput), proto.ButtonRequest(code=B.SignTx), @@ -235,6 +254,10 @@ class TestMsgSigntxSegwit: client.set_expected_responses( [ request_input(0), + request_meta(TXHASH_9c3192), + request_input(0, TXHASH_9c3192), + request_output(0, TXHASH_9c3192), + request_output(1, TXHASH_9c3192), request_output(0), proto.ButtonRequest(code=B.ConfirmOutput), proto.ButtonRequest(code=B.SignTx), @@ -278,6 +301,10 @@ class TestMsgSigntxSegwit: client.set_expected_responses( [ request_input(0), + request_meta(TXHASH_20912f), + request_input(0, TXHASH_20912f), + request_output(0, TXHASH_20912f), + request_output(1, TXHASH_20912f), request_output(0), proto.ButtonRequest(code=B.ConfirmOutput), request_output(1), @@ -316,6 +343,10 @@ class TestMsgSigntxSegwit: client.set_expected_responses( [ request_input(0), + request_meta(TXHASH_20912f), + request_input(0, TXHASH_20912f), + request_output(0, TXHASH_20912f), + request_output(1, TXHASH_20912f), request_output(0), proto.ButtonRequest(code=B.ConfirmOutput), request_output(1), diff --git a/tests/device_tests/test_msg_signtx_segwit_native.py b/tests/device_tests/test_msg_signtx_segwit_native.py index 1e9714986..47e1e1ded 100644 --- a/tests/device_tests/test_msg_signtx_segwit_native.py +++ b/tests/device_tests/test_msg_signtx_segwit_native.py @@ -21,7 +21,7 @@ from trezorlib.tools import H_, parse_path from ..bip32 import deserialize from ..tx_cache import TxCache -from .signtx import request_finished, request_input, request_output +from .signtx import request_finished, request_input, request_meta, request_output B = proto.ButtonRequestType TX_API = TxCache("Testnet") @@ -79,6 +79,10 @@ class TestMsgSigntxSegwitNative: client.set_expected_responses( [ request_input(0), + request_meta(TXHASH_20912f), + request_input(0, TXHASH_20912f), + request_output(0, TXHASH_20912f), + request_output(1, TXHASH_20912f), request_output(0), proto.ButtonRequest(code=B.ConfirmOutput), request_output(1), @@ -123,6 +127,10 @@ class TestMsgSigntxSegwitNative: client.set_expected_responses( [ request_input(0), + request_meta(TXHASH_20912f), + request_input(0, TXHASH_20912f), + request_output(0, TXHASH_20912f), + request_output(1, TXHASH_20912f), request_output(0), proto.ButtonRequest(code=B.ConfirmOutput), request_output(1), @@ -165,6 +173,10 @@ class TestMsgSigntxSegwitNative: client.set_expected_responses( [ request_input(0), + request_meta(TXHASH_091446), + request_input(0, TXHASH_091446), + request_output(0, TXHASH_091446), + request_output(1, TXHASH_091446), request_output(0), proto.ButtonRequest(code=B.ConfirmOutput), request_output(1), @@ -208,6 +220,10 @@ class TestMsgSigntxSegwitNative: client.set_expected_responses( [ request_input(0), + request_meta(TXHASH_091446), + request_input(0, TXHASH_091446), + request_output(0, TXHASH_091446), + request_output(1, TXHASH_091446), request_output(0), proto.ButtonRequest(code=B.ConfirmOutput), request_output(1), @@ -266,7 +282,15 @@ class TestMsgSigntxSegwitNative: client.set_expected_responses( [ request_input(0), + request_meta(TXHASH_091446), + request_input(0, TXHASH_091446), + request_output(0, TXHASH_091446), + request_output(1, TXHASH_091446), request_input(1), + request_meta(TXHASH_65b811), + request_input(0, TXHASH_65b811), + request_output(0, TXHASH_65b811), + request_output(1, TXHASH_65b811), request_output(0), proto.ButtonRequest(code=B.ConfirmOutput), request_output(1), @@ -327,6 +351,10 @@ class TestMsgSigntxSegwitNative: client.set_expected_responses( [ request_input(0), + request_meta(TXHASH_9c3192), + request_input(0, TXHASH_9c3192), + request_output(0, TXHASH_9c3192), + request_output(1, TXHASH_9c3192), request_output(0), proto.ButtonRequest(code=B.ConfirmOutput), proto.ButtonRequest(code=B.SignTx), @@ -346,6 +374,10 @@ class TestMsgSigntxSegwitNative: client.set_expected_responses( [ request_input(0), + request_meta(TXHASH_9c3192), + request_input(0, TXHASH_9c3192), + request_output(0, TXHASH_9c3192), + request_output(1, TXHASH_9c3192), request_output(0), proto.ButtonRequest(code=B.ConfirmOutput), proto.ButtonRequest(code=B.SignTx), @@ -398,6 +430,9 @@ class TestMsgSigntxSegwitNative: client.set_expected_responses( [ request_input(0), + request_meta(TXHASH_f41cbe), + request_input(0, TXHASH_f41cbe), + request_output(0, TXHASH_f41cbe), request_output(0), proto.ButtonRequest(code=B.ConfirmOutput), proto.ButtonRequest(code=B.SignTx), @@ -417,6 +452,9 @@ class TestMsgSigntxSegwitNative: client.set_expected_responses( [ request_input(0), + request_meta(TXHASH_f41cbe), + request_input(0, TXHASH_f41cbe), + request_output(0, TXHASH_f41cbe), request_output(0), proto.ButtonRequest(code=B.ConfirmOutput), proto.ButtonRequest(code=B.SignTx), @@ -476,6 +514,9 @@ class TestMsgSigntxSegwitNative: client.set_expected_responses( [ request_input(0), + request_meta(TXHASH_c93480), + request_input(0, TXHASH_c93480), + request_output(0, TXHASH_c93480), request_output(0), proto.ButtonRequest(code=B.SignTx), request_input(0), @@ -495,6 +536,9 @@ class TestMsgSigntxSegwitNative: client.set_expected_responses( [ request_input(0), + request_meta(TXHASH_c93480), + request_input(0, TXHASH_c93480), + request_output(0, TXHASH_c93480), request_output(0), proto.ButtonRequest(code=B.SignTx), request_input(0), @@ -553,6 +597,9 @@ class TestMsgSigntxSegwitNative: client.set_expected_responses( [ request_input(0), + request_meta(TXHASH_31bc1c), + request_input(0, TXHASH_31bc1c), + request_output(0, TXHASH_31bc1c), request_output(0), proto.ButtonRequest(code=B.SignTx), request_input(0), @@ -572,6 +619,9 @@ class TestMsgSigntxSegwitNative: client.set_expected_responses( [ request_input(0), + request_meta(TXHASH_31bc1c), + request_input(0, TXHASH_31bc1c), + request_output(0, TXHASH_31bc1c), request_output(0), proto.ButtonRequest(code=B.SignTx), request_input(0), @@ -645,7 +695,14 @@ class TestMsgSigntxSegwitNative: client.set_expected_responses( [ request_input(0), + request_meta(TXHASH_091446), + request_input(0, TXHASH_091446), + request_output(0, TXHASH_091446), + request_output(1, TXHASH_091446), request_input(1), + request_meta(TXHASH_a345b8), + request_input(0, TXHASH_a345b8), + request_output(0, TXHASH_a345b8), request_output(0), proto.ButtonRequest(code=B.ConfirmOutput), request_output(1), diff --git a/tests/device_tests/test_msg_signtx_zcash.py b/tests/device_tests/test_msg_signtx_zcash.py index 103f820fe..c02e75da9 100644 --- a/tests/device_tests/test_msg_signtx_zcash.py +++ b/tests/device_tests/test_msg_signtx_zcash.py @@ -21,7 +21,13 @@ from trezorlib.exceptions import TrezorFailure from trezorlib.tools import parse_path from ..tx_cache import TxCache -from .signtx import request_finished, request_input, request_output +from .signtx import ( + request_extra_data, + request_finished, + request_input, + request_meta, + request_output, +) B = proto.ButtonRequestType TX_API = TxCache("Zcash Testnet") @@ -59,6 +65,11 @@ class TestMsgSigntxZcash: client.set_expected_responses( [ request_input(0), + request_meta(TXHASH_aaf51e), + request_input(0, TXHASH_aaf51e), + request_output(0, TXHASH_aaf51e), + request_output(1, TXHASH_aaf51e), + request_extra_data(0, 1, TXHASH_aaf51e), request_output(0), proto.ButtonRequest(code=B.ConfirmOutput), proto.ButtonRequest(code=B.SignTx), @@ -108,6 +119,12 @@ class TestMsgSigntxZcash: client.set_expected_responses( [ request_input(0), + request_meta(TXHASH_e38206), + request_input(0, TXHASH_e38206), + request_input(1, TXHASH_e38206), + request_output(0, TXHASH_e38206), + request_output(1, TXHASH_e38206), + request_extra_data(0, 1, TXHASH_e38206), request_output(0), proto.ButtonRequest(code=B.ConfirmOutput), proto.ButtonRequest(code=B.SignTx), diff --git a/tests/device_tests/test_multisig.py b/tests/device_tests/test_multisig.py index d534aee85..4f186edd0 100644 --- a/tests/device_tests/test_multisig.py +++ b/tests/device_tests/test_multisig.py @@ -293,6 +293,10 @@ class TestMultisig: client.set_expected_responses( [ request_input(0), + request_meta(TXHASH_fbbff7), + request_input(0, TXHASH_fbbff7), + request_output(0, TXHASH_fbbff7), + request_output(1, TXHASH_fbbff7), request_output(0), proto.ButtonRequest(code=B.ConfirmOutput), request_output(1), @@ -307,7 +311,11 @@ class TestMultisig: with pytest.raises(TrezorFailure) as exc: btc.sign_tx( - client, "Testnet", [input_real], [output_payee, output_change] + client, + "Testnet", + [input_real], + [output_payee, output_change], + prev_txes=TxCache("Testnet"), ) # must not produce this tx: # 01000000000101396e2c107427f9eaece56a37539983adb8efd52b067c3d4567805fc8f3f7bffb01000000171600147a876a07b366f79000b441335f2907f777a0280bffffffff02e8030000000000001976a914e7c1345fc8f87c68170b3aa798a956c2fe6a9eff88ac703a0f000000000017a914a1261837f1b40e84346b1504ffe294e402965f2687024830450221009ff835e861be4e36ca1f2b6224aee2f253dfb9f456b13e4b1724bb4aaff4c9c802205e10679c2ead85743119f468cba5661f68b7da84dd2d477a7215fef98516f1f9012102af12ddd0d55e4fa2fcd084148eaf5b0b641320d0431d63d1e9a90f3cbd0d540700000000 diff --git a/tests/txcache/bcash/502e8577b237b0152843a416f8f1ab0c63321b1be7a8cad7bf5c5c216fcf062c.json b/tests/txcache/bcash/502e8577b237b0152843a416f8f1ab0c63321b1be7a8cad7bf5c5c216fcf062c.json new file mode 100644 index 000000000..299ae1009 --- /dev/null +++ b/tests/txcache/bcash/502e8577b237b0152843a416f8f1ab0c63321b1be7a8cad7bf5c5c216fcf062c.json @@ -0,0 +1,22 @@ +{ + "bin_outputs": [ + { + "amount": 1896050, + "script_pubkey": "76a914b1401fce7e8bf123c88a0467e0ed11e3b9fbef5488ac" + }, + { + "amount": 73452, + "script_pubkey": "76a914d51eca49695cdf47e7f4b55507893e3ad53fe9d888ac" + } + ], + "inputs": [ + { + "prev_hash": "bc37c28dfb467d2ecb50261387bf752a3977d7e5337915071bb4151e6b711a78", + "prev_index": 0, + "script_sig": "473044022061aee4f17abe044d5df8c52c9ffd3b84e5a29743517e488b20ecf1ae0b3e4d3a02206bb84c55e407f3b684ff8d9bea0a3409cfd865795a19d10b3d3c31f12795c34a412103a020b36130021a0f037c1d1a02042e325c0cb666d6478c1afdcd9d913b9ef080", + "sequence": 4294967295 + } + ], + "lock_time": 0, + "version": 1 +} diff --git a/tests/txcache/bcash/8b6db9b8ba24235d86b053ea2ccb484fc32b96f89c3c39f98d86f90db16076a0.json b/tests/txcache/bcash/8b6db9b8ba24235d86b053ea2ccb484fc32b96f89c3c39f98d86f90db16076a0.json new file mode 100644 index 000000000..f80dbd426 --- /dev/null +++ b/tests/txcache/bcash/8b6db9b8ba24235d86b053ea2ccb484fc32b96f89c3c39f98d86f90db16076a0.json @@ -0,0 +1,18 @@ +{ + "bin_outputs": [ + { + "amount": 48490, + "script_pubkey": "a91411c1566006ab2b8e8c8d981055b090ecdefa977187" + } + ], + "inputs": [ + { + "prev_hash": "5f72ec264d961dfdd460a9cc22743c795127b129d40be8087244d93b3f7eee11", + "prev_index": 0, + "script_sig": "00483045022100e87e3ae6ac22ccbaa8a5800b2bbd81aad9ff56e0fc6993953635fd9ee85e49f102204922bebd2ebdb4f80099c22dd9cb8f99961df8b768cc3cb834cffe1cf11777d14147304402206d134d84bbb865b48b901eb22dc1b653a0c2a1614035a6fe30885620edca4f280220256aeaa7efdc7449faaebf4f022a281b8c1ac8335e2292e13e9244baeb04787f414c69522102c5b28669799aba9cd3b6e3fadd9f15009c82a00b3bbf070741de4666b898ee0c21033b8b5f77354be75eba4c98cf4a32d471a827261228aa2ed7d32c67eec7e150562103cfe16448d9d112d5b965dbe338eec6221006a386727512c3a1f704d4604c494653ae", + "sequence": 4294967294 + } + ], + "lock_time": 0, + "version": 1 +} diff --git a/tests/txcache/bcash/bc37c28dfb467d2ecb50261387bf752a3977d7e5337915071bb4151e6b711a78.json b/tests/txcache/bcash/bc37c28dfb467d2ecb50261387bf752a3977d7e5337915071bb4151e6b711a78.json new file mode 100644 index 000000000..e4b271a6e --- /dev/null +++ b/tests/txcache/bcash/bc37c28dfb467d2ecb50261387bf752a3977d7e5337915071bb4151e6b711a78.json @@ -0,0 +1,18 @@ +{ + "bin_outputs": [ + { + "amount": 1995344, + "script_pubkey": "76a914de701ce12e576395c863e9377c76dd7efe0c55c188ac" + } + ], + "inputs": [ + { + "prev_hash": "8d566ad80d5f1d3887d3acddb35b980641919e6efa7c3a3a78413e56f95ea516", + "prev_index": 1, + "script_sig": "483045022100860b4c43649f86ee603c13791646af4736c50b532e1fc905c53d73ddd3754f3902206a301113f27b0d10622b333eb914751eed8af7f5534e0e4ee01176668674f259412102e227a30cc2aa732090af6667086b1665cbe6dbde71aab95ada5a518a4c2fdb6e", + "sequence": 4294967295 + } + ], + "lock_time": 0, + "version": 1 +} diff --git a/tests/txcache/bcash/f68caf10df12d5b07a34601d88fa6856c6edcbf4d05ebef3486510ae1c293d5f.json b/tests/txcache/bcash/f68caf10df12d5b07a34601d88fa6856c6edcbf4d05ebef3486510ae1c293d5f.json new file mode 100644 index 000000000..e27a61cd9 --- /dev/null +++ b/tests/txcache/bcash/f68caf10df12d5b07a34601d88fa6856c6edcbf4d05ebef3486510ae1c293d5f.json @@ -0,0 +1,22 @@ +{ + "bin_outputs": [ + { + "amount": 24000, + "script_pubkey": "76a91400741952f6a6eab5394f366db5cc5a54b0c2429f88ac" + }, + { + "amount": 24000, + "script_pubkey": "a914756c06d7e77de3950a6124f026d8e1a2464b3ecf87" + } + ], + "inputs": [ + { + "prev_hash": "8b6db9b8ba24235d86b053ea2ccb484fc32b96f89c3c39f98d86f90db16076a0", + "prev_index": 0, + "script_sig": "00483045022100f1153636371ba1f84389460e1265a8fa296569bc18e117c31f4e8f0fc0650c01022022932cc84766ff0c0f65ed9633ad311ae90d4c8fe71f5e1890b1e8f74dd516fa41483045022100bcb1a7134a13025a06052546ee1c6ac3640a0abd2d130190ed13ed7fcb43e9cd02207c381478e2ee123c850425bfbf6d3c691230eb37e333832cb32a1ed3f2cd9e85414c69522102fcf63419c319ce1a42d69120a3599d6da8c5dd4caf2888220eccde5a1ff7c5d021036d7d5ef79370b7fabe2c058698a20219e97fc70868e65ecdd6b37cc18e8a88bd2103505dc649dab8cd1655a4c0daf0ec5f955881c9d7011478ea881fac11cab1e49953ae", + "sequence": 4294967295 + } + ], + "lock_time": 0, + "version": 1 +} diff --git a/tests/txcache/bgold/25526bf06c76ad3082bba930cf627cdd5f1b3cd0b9907dd7ff1a07e14addc985.json b/tests/txcache/bgold/25526bf06c76ad3082bba930cf627cdd5f1b3cd0b9907dd7ff1a07e14addc985.json new file mode 100644 index 000000000..73635e969 --- /dev/null +++ b/tests/txcache/bgold/25526bf06c76ad3082bba930cf627cdd5f1b3cd0b9907dd7ff1a07e14addc985.json @@ -0,0 +1,22 @@ +{ + "bin_outputs": [ + { + "amount": 1252382934, + "script_pubkey": "76a9140cb60a52559620e5de9a297612d49f55f7fd14ea88ac" + }, + { + "amount": 0, + "script_pubkey": "6a24aa21a9eddb3ac2bba12721c8db157ba6b522196093d3a27a8083591a2b785a230a1d254f" + } + ], + "inputs": [ + { + "prev_hash": "0000000000000000000000000000000000000000000000000000000000000000", + "prev_index": 4294967295, + "script_sig": "03b4e407005a2d4e4f4d50212068747470733a2f2f6769746875622e636f6d2f6a6f7368756179616275742f7a2d6e6f6d70", + "sequence": 4294967295 + } + ], + "lock_time": 0, + "version": 1 +} diff --git a/tests/txcache/bgold/db77c2461b840e6edbe7f9280043184a98e020d9795c1b65cb7cef2551a8fb18.json b/tests/txcache/bgold/db77c2461b840e6edbe7f9280043184a98e020d9795c1b65cb7cef2551a8fb18.json new file mode 100644 index 000000000..1bb1a0e3a --- /dev/null +++ b/tests/txcache/bgold/db77c2461b840e6edbe7f9280043184a98e020d9795c1b65cb7cef2551a8fb18.json @@ -0,0 +1,24 @@ +{ + "bin_outputs": [ + { + "amount": 38448607, + "script_pubkey": "76a914b79bbff2766286a99129642d70912c6a4223c62b88ac" + } + ], + "inputs": [ + { + "prev_hash": "52fb172f86926a89a16edf55bc9baec3929149b7cd2d2389be3c7d08d744d300", + "prev_index": 1, + "script_sig": "4830450221008bff524a092086372a19b924f41fa7fa2a5523bf42a4801b9503fcdfff2094e8022000f223a032bd0d7fee31d5663cd5cf86b82533bda6871366d519a68deae1042341210222c6760cc54de6fd7f2a40207a13137d497c7cdb472376523700d8ea88275a96", + "sequence": 4294967295 + }, + { + "prev_hash": "371eb4feaa4085b378bb825f3c1b457867c24211ee838584b1adac226bba654b", + "prev_index": 0, + "script_sig": "47304402206aee1d853479782029755dd3c360dbd963e6390da12ddf2c2c38314692510385022040c9c01253a77bc33ac11ce0e8c187ab4f2d78346c0b222a87b1f00fea6b212941210222c6760cc54de6fd7f2a40207a13137d497c7cdb472376523700d8ea88275a96", + "sequence": 4294967295 + } + ], + "lock_time": 0, + "version": 1 +} diff --git a/tests/txcache/groestlcoin_testnet/09a48bce2f9d5c6e4f0cb9ea1b32d0891855e8acfe5334f9ebd72b9ad2de60cf.json b/tests/txcache/groestlcoin_testnet/09a48bce2f9d5c6e4f0cb9ea1b32d0891855e8acfe5334f9ebd72b9ad2de60cf.json new file mode 100644 index 000000000..eb7ad9b54 --- /dev/null +++ b/tests/txcache/groestlcoin_testnet/09a48bce2f9d5c6e4f0cb9ea1b32d0891855e8acfe5334f9ebd72b9ad2de60cf.json @@ -0,0 +1,22 @@ +{ + "bin_outputs": [ + { + "amount": 123456789, + "script_pubkey": "a91458b53ea7f832e8f096e896b8713a8c6df0e892ca87" + }, + { + "amount": 9764242764, + "script_pubkey": "76a91435528b20e9a793cf2c3a1cf9cff1f2127ad377da88ac" + } + ], + "inputs": [ + { + "prev_hash": "4f2f857f39ed1afe05542d058fb0be865a387446e32fc876d086203f483f61d1", + "prev_index": 1, + "script_sig": "47304402201f8f57f708144c3a11da322546cb37bd385aa825d940c37e8016f0efd6ec3e9402202a41bc02c29e4f3f13efd4bededbcd4308a6393279111d614ee1f7635cf3e65701210371546a36bdf6bc82087301b3f6e759736dc8790150673d2e7e2715d2ad72f3a4", + "sequence": 4294967294 + } + ], + "lock_time": 650749, + "version": 1 +} diff --git a/tests/txcache/groestlcoin_testnet/4f2f857f39ed1afe05542d058fb0be865a387446e32fc876d086203f483f61d1.json b/tests/txcache/groestlcoin_testnet/4f2f857f39ed1afe05542d058fb0be865a387446e32fc876d086203f483f61d1.json new file mode 100644 index 000000000..ab29fbe3f --- /dev/null +++ b/tests/txcache/groestlcoin_testnet/4f2f857f39ed1afe05542d058fb0be865a387446e32fc876d086203f483f61d1.json @@ -0,0 +1,22 @@ +{ + "bin_outputs": [ + { + "amount": 12300000, + "script_pubkey": "0014b31dc2a236505a6cb9201fa0411ca38a254a7bf1" + }, + { + "amount": 9887699777, + "script_pubkey": "76a91438cc090e4a4b2e458c33fe35af1c5c0094699ac288ac" + } + ], + "inputs": [ + { + "prev_hash": "1c92508b38239e5c10b23fb46dcf765ee2f3a95b835edbf0943ec21b21711160", + "prev_index": 1, + "script_sig": "483045022100d9615361c044e91f6dd7bb4455f3ad686cd5a663d7800bb74c448b2706500ccb022026bed24b81a501e8398411c5a9a793741d9bfe39617d51c363dde0a84f44f4f9012102659a6eefcc72d6f2eff92e57095388b17db0b06034946ecd44120e5e7a830ff4", + "sequence": 4294967293 + } + ], + "lock_time": 650645, + "version": 1 +} diff --git a/tests/txcache/komodo/2807c5b126ec8e2b078cab0f12e4c8b4ce1d7724905f8ebef8dca26b0c8e0f1d.json b/tests/txcache/komodo/2807c5b126ec8e2b078cab0f12e4c8b4ce1d7724905f8ebef8dca26b0c8e0f1d.json new file mode 100644 index 000000000..3b8cfb2f9 --- /dev/null +++ b/tests/txcache/komodo/2807c5b126ec8e2b078cab0f12e4c8b4ce1d7724905f8ebef8dca26b0c8e0f1d.json @@ -0,0 +1,21 @@ +{ + "bin_outputs": [ + { + "amount": 1099980000, + "script_pubkey": "76a91400178fa0b6fc253a3a402ee2cadd8a7bfec08f6388ac" + } + ], + "branch_id": 1991772603, + "inputs": [ + { + "prev_hash": "340d478f0c5750057d5f5028db8c10993578849e63f5cf8500e33ddefcd5334f", + "prev_index": 0, + "script_sig": "483045022100d29433faed373d23883ace59acda117a67d6e8e3e99bc767b96a183a840b4aec0220258baef0d63360324f2a455299b2695ae2fa727a5969a25a604c22086e36c6e9012102a87aef7b1a8f676e452d6240767699719cd58b0261c822472c25df146938bca5", + "sequence": 4294967295 + } + ], + "extra_data": "0000000000000000000000", + "lock_time": 0, + "version": 4, + "version_group_id": 2301567109 +} diff --git a/tests/txcache/komodo/7b28bd91119e9776f0d4ebd80e570165818a829bbf4477cd1afe5149dbcd34b1.json b/tests/txcache/komodo/7b28bd91119e9776f0d4ebd80e570165818a829bbf4477cd1afe5149dbcd34b1.json new file mode 100644 index 000000000..8d34ffb0c --- /dev/null +++ b/tests/txcache/komodo/7b28bd91119e9776f0d4ebd80e570165818a829bbf4477cd1afe5149dbcd34b1.json @@ -0,0 +1,21 @@ +{ + "bin_outputs": [ + { + "amount": 1099970000, + "script_pubkey": "76a91400178fa0b6fc253a3a402ee2cadd8a7bfec08f6388ac" + } + ], + "branch_id": 1991772603, + "inputs": [ + { + "prev_hash": "2807c5b126ec8e2b078cab0f12e4c8b4ce1d7724905f8ebef8dca26b0c8e0f1d", + "prev_index": 0, + "script_sig": "4730440220158c970ca2fc6bcc33026eb5366f0342f63b35d178f7efb334b1df78fe90b67202207bc4ff69f67cf843b08564a5adc77bf5593e28ab4d5104911824ac13fe885d8f012102a87aef7b1a8f676e452d6240767699719cd58b0261c822472c25df146938bca5", + "sequence": 4294967295 + } + ], + "extra_data": "0000000000000000000000", + "lock_time": 1563046072, + "version": 4, + "version_group_id": 2301567109 +} diff --git a/tests/txcache/testnet/09144602765ce3dd8f4329445b20e3684e948709c5cdcaf12da3bb079c99448a.json b/tests/txcache/testnet/09144602765ce3dd8f4329445b20e3684e948709c5cdcaf12da3bb079c99448a.json new file mode 100644 index 000000000..34731eb2a --- /dev/null +++ b/tests/txcache/testnet/09144602765ce3dd8f4329445b20e3684e948709c5cdcaf12da3bb079c99448a.json @@ -0,0 +1,22 @@ +{ + "bin_outputs": [ + { + "amount": 12300000, + "script_pubkey": "00140099a7ecbd938ed1839f5f6bf6d50933c6db9d5c" + }, + { + "amount": 111145789, + "script_pubkey": "a91458b53ea7f832e8f096e896b8713a8c6df0e892ca87" + } + ], + "inputs": [ + { + "prev_hash": "20912f98ea3ed849042efed0fdac8cb4fc301961c5988cba56902d8ffb61c337", + "prev_index": 0, + "script_sig": "160014d16b8c0680c61fc6ed2e407455715055e41052f5", + "sequence": 4294967295 + } + ], + "lock_time": 0, + "version": 1 +} diff --git a/tests/txcache/testnet/20912f98ea3ed849042efed0fdac8cb4fc301961c5988cba56902d8ffb61c337.json b/tests/txcache/testnet/20912f98ea3ed849042efed0fdac8cb4fc301961c5988cba56902d8ffb61c337.json new file mode 100644 index 000000000..4ca9d24cd --- /dev/null +++ b/tests/txcache/testnet/20912f98ea3ed849042efed0fdac8cb4fc301961c5988cba56902d8ffb61c337.json @@ -0,0 +1,22 @@ +{ + "bin_outputs": [ + { + "amount": 123456789, + "script_pubkey": "a91458b53ea7f832e8f096e896b8713a8c6df0e892ca87" + }, + { + "amount": 865519308, + "script_pubkey": "76a914b84bacdcd8f4cc59274a5bfb73f804ca10f7fd1488ac" + } + ], + "inputs": [ + { + "prev_hash": "802cabf0843b945eabe136d7fc7c89f41021658abf56cba000acbce88c41143a", + "prev_index": 0, + "script_sig": "4730440220548e087d0426b20b8a571b03b9e05829f7558b80c53c12143e342f56ab29e51d02205b68cb7fb223981d4c999725ac1485a982c4259c4f50b8280f137878c232998a012102794a25b254a268e59a5869da57fbae2fadc6727cb3309321dab409b12b2fa17c", + "sequence": 4294967295 + } + ], + "lock_time": 0, + "version": 1 +} diff --git a/tests/txcache/testnet/31bc1c88ce6ae337a6b3057a16d5bad0b561ad1dfc047d0a7fbb8814668f91e5.json b/tests/txcache/testnet/31bc1c88ce6ae337a6b3057a16d5bad0b561ad1dfc047d0a7fbb8814668f91e5.json new file mode 100644 index 000000000..0530ad4a9 --- /dev/null +++ b/tests/txcache/testnet/31bc1c88ce6ae337a6b3057a16d5bad0b561ad1dfc047d0a7fbb8814668f91e5.json @@ -0,0 +1,18 @@ +{ + "bin_outputs": [ + { + "amount": 1603000, + "script_pubkey": "a914a8655acf68f785125561158b0f4db9b5d004404787" + } + ], + "inputs": [ + { + "prev_hash": "c9348040bbc2024e12dcb4a0b4806b0398646b91acf314da028c3f03dd0179fc", + "prev_index": 0, + "script_sig": "", + "sequence": 4294967295 + } + ], + "lock_time": 0, + "version": 1 +} diff --git a/tests/txcache/testnet/65b811d3eca0fe6915d9f2d77c86c5a7f19bf66b1b1253c2c51cb4ae5f0c017b.json b/tests/txcache/testnet/65b811d3eca0fe6915d9f2d77c86c5a7f19bf66b1b1253c2c51cb4ae5f0c017b.json new file mode 100644 index 000000000..a6d82b759 --- /dev/null +++ b/tests/txcache/testnet/65b811d3eca0fe6915d9f2d77c86c5a7f19bf66b1b1253c2c51cb4ae5f0c017b.json @@ -0,0 +1,22 @@ +{ + "bin_outputs": [ + { + "amount": 5000000, + "script_pubkey": "a9147a55d61848e77ca266e79a39bfc85c580a6426c987" + }, + { + "amount": 7289000, + "script_pubkey": "0014d16b8c0680c61fc6ed2e407455715055e41052f5" + } + ], + "inputs": [ + { + "prev_hash": "09144602765ce3dd8f4329445b20e3684e948709c5cdcaf12da3bb079c99448a", + "prev_index": 0, + "script_sig": "", + "sequence": 4294967295 + } + ], + "lock_time": 0, + "version": 1 +} diff --git a/tests/txcache/testnet/9c31922be756c06d02167656465c8dc83bb553bf386a3f478ae65b5c021002be.json b/tests/txcache/testnet/9c31922be756c06d02167656465c8dc83bb553bf386a3f478ae65b5c021002be.json new file mode 100644 index 000000000..ce6c36afc --- /dev/null +++ b/tests/txcache/testnet/9c31922be756c06d02167656465c8dc83bb553bf386a3f478ae65b5c021002be.json @@ -0,0 +1,22 @@ +{ + "bin_outputs": [ + { + "amount": 11924164, + "script_pubkey": "76a914b6fc54e2f7c490ba20c686f532bfb02230656dbf88ac" + }, + { + "amount": 1610436, + "script_pubkey": "a91463ff81a0110ab929bd1d44befa32b081839bbece87" + } + ], + "inputs": [ + { + "prev_hash": "fbbf0824193fc4e4bb410276345cc235d530563d0da63ecc8d0fecf483c01e5e", + "prev_index": 1, + "script_sig": "47304402206d881393370f90ed0d74121b840794c62701a3fb98f2b14c45cbdc3869f7085802201a884b10eb1a5af026635d266e9b4514a9639b78d0a25cf7ebc579bca254fc7301210307c080981397c49589f3a8eb61e58d654ed1c2aa2fe049149c9757e4ba2a6ba8", + "sequence": 4294967295 + } + ], + "lock_time": 0, + "version": 1 +} diff --git a/tests/txcache/testnet/a345b85759b385c6446055e4c3baa77e8161a65009dc009489b48aa6587ce348.json b/tests/txcache/testnet/a345b85759b385c6446055e4c3baa77e8161a65009dc009489b48aa6587ce348.json new file mode 100644 index 000000000..96b81e66a --- /dev/null +++ b/tests/txcache/testnet/a345b85759b385c6446055e4c3baa77e8161a65009dc009489b48aa6587ce348.json @@ -0,0 +1,18 @@ +{ + "bin_outputs": [ + { + "amount": 100, + "script_pubkey": "002008b681071cd896cd879102bce735080758ad48ad45a05505939e55f115391991" + } + ], + "inputs": [ + { + "prev_hash": "5a67c3318c1636e192924c30ca849dec057892acdce5931b504dc453248d681e", + "prev_index": 0, + "script_sig": "", + "sequence": 4294967293 + } + ], + "lock_time": 1583125, + "version": 2 +} diff --git a/tests/txcache/testnet/c9348040bbc2024e12dcb4a0b4806b0398646b91acf314da028c3f03dd0179fc.json b/tests/txcache/testnet/c9348040bbc2024e12dcb4a0b4806b0398646b91acf314da028c3f03dd0179fc.json new file mode 100644 index 000000000..c847c31b3 --- /dev/null +++ b/tests/txcache/testnet/c9348040bbc2024e12dcb4a0b4806b0398646b91acf314da028c3f03dd0179fc.json @@ -0,0 +1,18 @@ +{ + "bin_outputs": [ + { + "amount": 1604000, + "script_pubkey": "00201e8dda334f11171190b3da72e526d441491464769679a319a2f011da5ad312a1" + } + ], + "inputs": [ + { + "prev_hash": "f41cbedd8becee05a830f418d13aa665125464547db5c7a6cd28f21639fe1228", + "prev_index": 0, + "script_sig": "", + "sequence": 4294967295 + } + ], + "lock_time": 0, + "version": 1 +} diff --git a/tests/txcache/testnet/dee13c469e7ab28108a1ce470d74cb40896d9bb459951bdf590ca6a495293a02.json b/tests/txcache/testnet/dee13c469e7ab28108a1ce470d74cb40896d9bb459951bdf590ca6a495293a02.json new file mode 100644 index 000000000..582d0d6c6 --- /dev/null +++ b/tests/txcache/testnet/dee13c469e7ab28108a1ce470d74cb40896d9bb459951bdf590ca6a495293a02.json @@ -0,0 +1,9 @@ +{ + "bin_outputs": [ + { + "amount": 4294967297, + "script_pubkey": "4d7920686f76657263726166742069732066756c6c206f662065656c732e" + } + ], + "version": 1 +} diff --git a/tests/txcache/testnet/f41cbedd8becee05a830f418d13aa665125464547db5c7a6cd28f21639fe1228.json b/tests/txcache/testnet/f41cbedd8becee05a830f418d13aa665125464547db5c7a6cd28f21639fe1228.json new file mode 100644 index 000000000..6e70f9f3c --- /dev/null +++ b/tests/txcache/testnet/f41cbedd8becee05a830f418d13aa665125464547db5c7a6cd28f21639fe1228.json @@ -0,0 +1,18 @@ +{ + "bin_outputs": [ + { + "amount": 1605000, + "script_pubkey": "0020c5f4a0a4ea7c0392efe0a9670a73264cffa90b19107cd8a8e9750ff93c77fdfb" + } + ], + "inputs": [ + { + "prev_hash": "9c31922be756c06d02167656465c8dc83bb553bf386a3f478ae65b5c021002be", + "prev_index": 1, + "script_sig": "2200201e8dda334f11171190b3da72e526d441491464769679a319a2f011da5ad312a1", + "sequence": 4294967295 + } + ], + "lock_time": 0, + "version": 1 +} diff --git a/tests/txcache/testnet/fbbff7f3c85f8067453d7c062bd5efb8ad839953376ae5eceaf92774102c6e39.json b/tests/txcache/testnet/fbbff7f3c85f8067453d7c062bd5efb8ad839953376ae5eceaf92774102c6e39.json new file mode 100644 index 000000000..4dfff4559 --- /dev/null +++ b/tests/txcache/testnet/fbbff7f3c85f8067453d7c062bd5efb8ad839953376ae5eceaf92774102c6e39.json @@ -0,0 +1,22 @@ +{ + "bin_outputs": [ + { + "amount": 3199834, + "script_pubkey": "a9146794cf0b05c69d8e1942a8f9eeaf59a0847dafda87" + }, + { + "amount": 1000000, + "script_pubkey": "a914bbc6a47c8984cf60fd1f0eb753291458b5b42aa687" + } + ], + "inputs": [ + { + "prev_hash": "0e4194441d68c26d3bbc3646d7ad7bc0435cc7c85ac7f39d22587cb4f6959a69", + "prev_index": 15, + "script_sig": "160014e09c199e2cbcd552f0e58acfb933b3f4f426781f", + "sequence": 4294967294 + } + ], + "lock_time": 1667005, + "version": 2 +} diff --git a/tests/txcache/zcash_testnet/aaf51e4606c264e47e5c42c958fe4cf1539c5172684721e38e69f4ef634d75dc.json b/tests/txcache/zcash_testnet/aaf51e4606c264e47e5c42c958fe4cf1539c5172684721e38e69f4ef634d75dc.json new file mode 100644 index 000000000..02227bb5e --- /dev/null +++ b/tests/txcache/zcash_testnet/aaf51e4606c264e47e5c42c958fe4cf1539c5172684721e38e69f4ef634d75dc.json @@ -0,0 +1,25 @@ +{ + "bin_outputs": [ + { + "amount": 417937001, + "script_pubkey": "76a914f5ea91f798002a6520f19da514f354b1c37b30d188ac" + }, + { + "amount": 300000000, + "script_pubkey": "76a914a579388225827d9f2fe9014add644487808c695d88ac" + } + ], + "inputs": [ + { + "prev_hash": "01d175a5421206439525542f83d168577e92d59e8283e8862e236a1461d5938a", + "prev_index": 2, + "script_sig": "473044022053a63f730e449f2d6c687ac53e9be627c4241614c041f458da2c4f91143179c802206ade1de030fc5fc77c4a88ccc79daedd28a79bfaf9e24533727a6fb81cbe4bd801210201d494a45f36f545443bafd1a9050b02f448dd236bb4ce2602f83978980b98f2", + "sequence": 4294967294 + } + ], + "expiry": 234352, + "extra_data": "00", + "lock_time": 234321, + "version": 3, + "version_group_id": 63210096 +} diff --git a/tests/txcache/zcash_testnet/e3820602226974b1dd87b7113cc8aea8c63e5ae29293991e7bfa80c126930368.json b/tests/txcache/zcash_testnet/e3820602226974b1dd87b7113cc8aea8c63e5ae29293991e7bfa80c126930368.json new file mode 100644 index 000000000..d467d2fde --- /dev/null +++ b/tests/txcache/zcash_testnet/e3820602226974b1dd87b7113cc8aea8c63e5ae29293991e7bfa80c126930368.json @@ -0,0 +1,31 @@ +{ + "bin_outputs": [ + { + "amount": 300000000, + "script_pubkey": "76a914a579388225827d9f2fe9014add644487808c695d88ac" + }, + { + "amount": 1251648, + "script_pubkey": "76a91474374446b18916decd3292384ea73006ebd268ba88ac" + } + ], + "inputs": [ + { + "prev_hash": "4e8e8c5a5524cb8b20d05aefd5b1fd004d6c8c584e3e314876f13edb5ba0eead", + "prev_index": 0, + "script_sig": "473044022064e1e5f957308fcc91f7b174113c8e3cb8060b1404ae823ab3f77f313d5b557b02204b2afcde9ef8b61f5e85192c38fb82307d077ec91d2c8249aa69e19967df8c0c01210201d494a45f36f545443bafd1a9050b02f448dd236bb4ce2602f83978980b98f2", + "sequence": 4294967294 + }, + { + "prev_hash": "7afab9216fee6763ffbd6a412d46d68c480220af093c9becee6f79d41b954b13", + "prev_index": 0, + "script_sig": "47304402207f63a484ee75900ce2b0e2a5f0d52f2cfb5d1475588576f645c20ecf5e04659a02205c9b614ca846b0cb9ff4a72ca8482c9aed542282b9ee8eaa70a5f472408f3f04012103e974b89ace172f24bb25f8137d19c4205c5cf6bb6505454230ea172f54152d08", + "sequence": 4294967294 + } + ], + "expiry": 261318, + "extra_data": "00", + "lock_time": 261287, + "version": 3, + "version_group_id": 63210096 +}