1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2024-11-28 02:18:20 +00:00

refactor(test): use forged mainnet transactions

This commit is contained in:
Ondřej Vejpustek 2024-11-13 16:05:42 +01:00
parent f0ffebfc1d
commit b42ec7a5ba
4 changed files with 31 additions and 166 deletions

View File

@ -25,24 +25,15 @@ from trezorlib.tools import H_, parse_path
from ... import bip32
from ...common import MNEMONIC12, is_core
from ...input_flows import InputFlowConfirmAllWarnings
from ...tx_cache import TxCache
from .signtx import request_finished, request_input, request_meta, request_output
from .signtx import (
forge_prevtx,
request_finished,
request_input,
request_meta,
request_output,
)
B = messages.ButtonRequestType
TX_API = TxCache("Testnet")
# NOTE: This test case was migrated from Testnet to Bitcoin, because we
# disabled testnet for BIP-45 paths. So we are still using the Testnet TxCache
# here, but everything else has been changed to Bitcoin mainnet.
TXHASH_16c6c8 = bytes.fromhex(
"16c6c8471b8db7a628f2b2bb86bfeefae1766463ce8692438c7fd3fce3f43ce5"
)
TXHASH_d80c34 = bytes.fromhex(
"d80c34ee14143a8bf61125102b7ef594118a3796cad670fa8ee15080ae155318"
)
TXHASH_b0946d = bytes.fromhex(
"b0946dc27ba308a749b11afecc2018980af18f79e89ad6b080b58220d856f739"
)
pytestmark = [pytest.mark.multisig, pytest.mark.setup_client(mnemonic=MNEMONIC12)]
@ -71,24 +62,6 @@ NODE_INT = bip32.deserialize(
# m/1 => 03f91460d79e4e463d7d90cb75254bcd62b515a99a950574c721efdc5f711dff35
# m/2 => 038caebd6f753bbbd2bb1f3346a43cd32140648583673a31d62f2dfb56ad0ab9e3
# ext1 + ext2 + int
# redeemscript (2 of 3): 522102c0d0c5fee952620757c6128dbf327c996cd72ed3358d15d6518a1186099bc15e210388460dc439f4c8f5bcfc268c36e11b4375cad5c3535c336cfdf8c32c3afad5c1210338d78612e990f2eea0c426b5e48a8db70b9d7ed66282b3b26511e0b1c75515a653ae
# multisig address: 2N9W4z9AhAPaHghtqVQPbaTAGHdbrhKeBQw
# tx: 16c6c8471b8db7a628f2b2bb86bfeefae1766463ce8692438c7fd3fce3f43ce5
# input 0: 0.5 BTC
# ext1 + int + ext2
# redeemscript (2 of 3): 522102c0d0c5fee952620757c6128dbf327c996cd72ed3358d15d6518a1186099bc15e210338d78612e990f2eea0c426b5e48a8db70b9d7ed66282b3b26511e0b1c75515a6210388460dc439f4c8f5bcfc268c36e11b4375cad5c3535c336cfdf8c32c3afad5c153ae
# multisig address: 2NDBG6QXQLtnQ3jRGkrqo53BiCeXfQXLdj4
# tx: d80c34ee14143a8bf61125102b7ef594118a3796cad670fa8ee15080ae155318
# input 0: 0.345 BTC
# ext1 + ext3 + int
# redeemscript (2 of 3): 522102c0d0c5fee952620757c6128dbf327c996cd72ed3358d15d6518a1186099bc15e2102e0c21e2a7cf00b94c5421725acff97f9826598b91f2340c5ddda730caca7d648210338d78612e990f2eea0c426b5e48a8db70b9d7ed66282b3b26511e0b1c75515a653ae
# multisig address: 2MvwPWfp2XPU3S1cMwgEMKBPUw38VP5SBE4
# tx: b0946dc27ba308a749b11afecc2018980af18f79e89ad6b080b58220d856f739
# input 1: 0.555 BTC
multisig_in1 = messages.MultisigRedeemScriptType(
nodes=[NODE_EXT2, NODE_EXT1, NODE_INT],
address_n=[0, 0],
@ -110,36 +83,44 @@ multisig_in3 = messages.MultisigRedeemScriptType(
m=2,
)
# 2N9W4z9AhAPaHghtqVQPbaTAGHdbrhKeBQw
prev_hash_1, prev_tx_1 = forge_prevtx(
[("3HwrvQEfYw4wUvGHpGmixWB15HPgqrvTh1", 50_000_000)]
)
INP1 = messages.TxInputType(
address_n=[H_(45), 0, 0, 0],
amount=50_000_000,
prev_hash=TXHASH_16c6c8,
prev_index=1,
prev_hash=prev_hash_1,
prev_index=0,
script_type=messages.InputScriptType.SPENDMULTISIG,
multisig=multisig_in1,
)
# 2NDBG6QXQLtnQ3jRGkrqo53BiCeXfQXLdj4
prev_hash_2, prev_tx_2 = forge_prevtx(
[("3Md42fbNjSH3qwnj5jDvT6CSzJKVXHiXSc", 34_500_000)]
)
INP2 = messages.TxInputType(
address_n=[H_(45), 0, 0, 1],
amount=34_500_000,
prev_hash=TXHASH_d80c34,
prev_hash=prev_hash_2,
prev_index=0,
script_type=messages.InputScriptType.SPENDMULTISIG,
multisig=multisig_in2,
)
# 2MvwPWfp2XPU3S1cMwgEMKBPUw38VP5SBE4
prev_hash_3, prev_tx_3 = forge_prevtx(
[("35PBSvszuvxhEDypGYcUhEQDigvKY8C5Rc", 55_500_000)]
)
INP3 = messages.TxInputType(
address_n=[H_(45), 0, 0, 1],
amount=55_500_000,
prev_hash=TXHASH_b0946d,
prev_hash=prev_hash_3,
prev_index=0,
script_type=messages.InputScriptType.SPENDMULTISIG,
multisig=multisig_in3,
)
TX_API = {prev_hash_1: prev_tx_1, prev_hash_2: prev_tx_2, prev_hash_3: prev_tx_3}
def _responses(
client: Client,
@ -181,12 +162,10 @@ def _responses(
request_meta(INP1.prev_hash),
request_input(0, INP1.prev_hash),
request_output(0, INP1.prev_hash),
request_output(1, INP1.prev_hash),
request_input(1),
request_meta(INP2.prev_hash),
request_input(0, INP2.prev_hash),
request_output(0, INP2.prev_hash),
request_output(1, INP2.prev_hash),
request_input(0),
request_input(1),
request_output(0),
@ -218,7 +197,7 @@ def test_external_external(client: Client):
with client:
client.set_expected_responses(_responses(client, INP1, INP2))
_, serialized_tx = btc.sign_tx(
btc.sign_tx(
client,
"Bitcoin",
[INP1, INP2],
@ -226,12 +205,6 @@ def test_external_external(client: Client):
prev_txes=TX_API,
)
# Transaction does not exist on the blockchain, not using assert_tx_matches()
assert (
serialized_tx.hex()
== "0100000002e53cf4e3fcd37f8c439286ce636476e1faeebf86bbb2f228a6b78d1b47c8c61601000000b400473044022064f13801744a6c21b694f62cdb5d834e852f13ecf85ed4d0a56ba279571c24e3022010fab4cb05bdd7b24c8376dda4f62a418548eea6eb483e58675fa06e0d5c642c014c69522103dc07026aacb5918dac4e09f9da8290d0ae22161699636c22cace78082116a7792103e70db185fad69c2971f0107a42930e5d82a9ed3a11b922a96fdfc4124b63e54c2103f3fe007a1e34ac76c1a2528e9149f90f9f93739929797afab6a8e18d682fa71053aeffffffff185315ae8050e18efa70d6ca96378a1194f57e2b102511f68b3a1414ee340cd800000000b4004730440220727b2522268f913acd213c507d7801b146e5b6cef666ad44b769c26d6c762e4d022021c0c2e9e8298dee2a490d956f7ab1b2d3160c1e37a50cc6d19a5e62eb484fc9014c6952210297ad8a5df42f9e362ef37d9a4ddced89d8f7a143690649aa0d0ff049c7daca842103ed1fd93989595d7ad4b488efd05a22c0239482c9a20923f2f214a38e54f6c41a2103f91460d79e4e463d7d90cb75254bcd62b515a99a950574c721efdc5f711dff3553aeffffffff02005a6202000000001976a9149b139230e4fe91c05a37ec334dc8378f3dbe377088ac00639f02000000001976a914b0d05a10926a7925508febdbab9a5bd4cda8c8f688ac00000000"
)
# first external, second internal
def test_external_internal(client: Client):
@ -254,7 +227,7 @@ def test_external_internal(client: Client):
if is_core(client):
IF = InputFlowConfirmAllWarnings(client)
client.set_input_flow(IF.get())
_, serialized_tx = btc.sign_tx(
btc.sign_tx(
client,
"Bitcoin",
[INP1, INP2],
@ -262,12 +235,6 @@ def test_external_internal(client: Client):
prev_txes=TX_API,
)
# Transaction does not exist on the blockchain, not using assert_tx_matches()
assert (
serialized_tx.hex()
== "0100000002e53cf4e3fcd37f8c439286ce636476e1faeebf86bbb2f228a6b78d1b47c8c61601000000b400473044022064f13801744a6c21b694f62cdb5d834e852f13ecf85ed4d0a56ba279571c24e3022010fab4cb05bdd7b24c8376dda4f62a418548eea6eb483e58675fa06e0d5c642c014c69522103dc07026aacb5918dac4e09f9da8290d0ae22161699636c22cace78082116a7792103e70db185fad69c2971f0107a42930e5d82a9ed3a11b922a96fdfc4124b63e54c2103f3fe007a1e34ac76c1a2528e9149f90f9f93739929797afab6a8e18d682fa71053aeffffffff185315ae8050e18efa70d6ca96378a1194f57e2b102511f68b3a1414ee340cd800000000b4004730440220727b2522268f913acd213c507d7801b146e5b6cef666ad44b769c26d6c762e4d022021c0c2e9e8298dee2a490d956f7ab1b2d3160c1e37a50cc6d19a5e62eb484fc9014c6952210297ad8a5df42f9e362ef37d9a4ddced89d8f7a143690649aa0d0ff049c7daca842103ed1fd93989595d7ad4b488efd05a22c0239482c9a20923f2f214a38e54f6c41a2103f91460d79e4e463d7d90cb75254bcd62b515a99a950574c721efdc5f711dff3553aeffffffff02005a6202000000001976a9149b139230e4fe91c05a37ec334dc8378f3dbe377088ac00639f02000000001976a914b0d05a10926a7925508febdbab9a5bd4cda8c8f688ac00000000"
)
# first internal, second external
def test_internal_external(client: Client):
@ -290,7 +257,7 @@ def test_internal_external(client: Client):
if is_core(client):
IF = InputFlowConfirmAllWarnings(client)
client.set_input_flow(IF.get())
_, serialized_tx = btc.sign_tx(
btc.sign_tx(
client,
"Bitcoin",
[INP1, INP2],
@ -298,12 +265,6 @@ def test_internal_external(client: Client):
prev_txes=TX_API,
)
# Transaction does not exist on the blockchain, not using assert_tx_matches()
assert (
serialized_tx.hex()
== "0100000002e53cf4e3fcd37f8c439286ce636476e1faeebf86bbb2f228a6b78d1b47c8c61601000000b400473044022064f13801744a6c21b694f62cdb5d834e852f13ecf85ed4d0a56ba279571c24e3022010fab4cb05bdd7b24c8376dda4f62a418548eea6eb483e58675fa06e0d5c642c014c69522103dc07026aacb5918dac4e09f9da8290d0ae22161699636c22cace78082116a7792103e70db185fad69c2971f0107a42930e5d82a9ed3a11b922a96fdfc4124b63e54c2103f3fe007a1e34ac76c1a2528e9149f90f9f93739929797afab6a8e18d682fa71053aeffffffff185315ae8050e18efa70d6ca96378a1194f57e2b102511f68b3a1414ee340cd800000000b4004730440220727b2522268f913acd213c507d7801b146e5b6cef666ad44b769c26d6c762e4d022021c0c2e9e8298dee2a490d956f7ab1b2d3160c1e37a50cc6d19a5e62eb484fc9014c6952210297ad8a5df42f9e362ef37d9a4ddced89d8f7a143690649aa0d0ff049c7daca842103ed1fd93989595d7ad4b488efd05a22c0239482c9a20923f2f214a38e54f6c41a2103f91460d79e4e463d7d90cb75254bcd62b515a99a950574c721efdc5f711dff3553aeffffffff02005a6202000000001976a9149b139230e4fe91c05a37ec334dc8378f3dbe377088ac00639f02000000001976a914b0d05a10926a7925508febdbab9a5bd4cda8c8f688ac00000000"
)
# both outputs are external
def test_multisig_external_external(client: Client):
@ -321,7 +282,7 @@ def test_multisig_external_external(client: Client):
with client:
client.set_expected_responses(_responses(client, INP1, INP2))
_, serialized_tx = btc.sign_tx(
btc.sign_tx(
client,
"Bitcoin",
[INP1, INP2],
@ -329,17 +290,11 @@ def test_multisig_external_external(client: Client):
prev_txes=TX_API,
)
# Transaction does not exist on the blockchain, not using assert_tx_matches()
assert (
serialized_tx.hex()
== "0100000002e53cf4e3fcd37f8c439286ce636476e1faeebf86bbb2f228a6b78d1b47c8c61601000000b400473044022059394e0dfcb2d2f4a6108703f801545ca5a820c0ac6a1859d0a3854813de55fa02207b6a57d70b82932ff58163336c461653a2dc82c78ed8157159e5178ac7325390014c69522103dc07026aacb5918dac4e09f9da8290d0ae22161699636c22cace78082116a7792103e70db185fad69c2971f0107a42930e5d82a9ed3a11b922a96fdfc4124b63e54c2103f3fe007a1e34ac76c1a2528e9149f90f9f93739929797afab6a8e18d682fa71053aeffffffff185315ae8050e18efa70d6ca96378a1194f57e2b102511f68b3a1414ee340cd800000000b40047304402205a911685f5b974b2fc4a19d5ce056218773a4d20b5eaae2c2f9594929308182002201e03449f5a8813ec19f408bf1b6f4f334886d6fcf9920e300fd7678ef0724f81014c6952210297ad8a5df42f9e362ef37d9a4ddced89d8f7a143690649aa0d0ff049c7daca842103ed1fd93989595d7ad4b488efd05a22c0239482c9a20923f2f214a38e54f6c41a2103f91460d79e4e463d7d90cb75254bcd62b515a99a950574c721efdc5f711dff3553aeffffffff02005a62020000000017a91466528dd543f94d162c8111d2ec248d25ba9b90948700639f020000000017a914f1fc92c0aed1712911c70a2e09ac15ff0922652f8700000000"
)
# inputs match, change matches (first is change)
def test_multisig_change_match_first(client: Client):
multisig_out1 = messages.MultisigRedeemScriptType(
nodes=[NODE_EXT2, NODE_EXT1, NODE_INT],
nodes=[NODE_EXT1, NODE_EXT2, NODE_INT],
address_n=[1, 0],
signatures=[b"", b"", b""],
m=2,
@ -362,7 +317,7 @@ def test_multisig_change_match_first(client: Client):
client.set_expected_responses(
_responses(client, INP1, INP2, change_indices=[1])
)
_, serialized_tx = btc.sign_tx(
btc.sign_tx(
client,
"Bitcoin",
[INP1, INP2],
@ -370,12 +325,6 @@ def test_multisig_change_match_first(client: Client):
prev_txes=TX_API,
)
# Transaction does not exist on the blockchain, not using assert_tx_matches()
assert (
serialized_tx.hex()
== "0100000002e53cf4e3fcd37f8c439286ce636476e1faeebf86bbb2f228a6b78d1b47c8c61601000000b400473044022059394e0dfcb2d2f4a6108703f801545ca5a820c0ac6a1859d0a3854813de55fa02207b6a57d70b82932ff58163336c461653a2dc82c78ed8157159e5178ac7325390014c69522103dc07026aacb5918dac4e09f9da8290d0ae22161699636c22cace78082116a7792103e70db185fad69c2971f0107a42930e5d82a9ed3a11b922a96fdfc4124b63e54c2103f3fe007a1e34ac76c1a2528e9149f90f9f93739929797afab6a8e18d682fa71053aeffffffff185315ae8050e18efa70d6ca96378a1194f57e2b102511f68b3a1414ee340cd800000000b40047304402205a911685f5b974b2fc4a19d5ce056218773a4d20b5eaae2c2f9594929308182002201e03449f5a8813ec19f408bf1b6f4f334886d6fcf9920e300fd7678ef0724f81014c6952210297ad8a5df42f9e362ef37d9a4ddced89d8f7a143690649aa0d0ff049c7daca842103ed1fd93989595d7ad4b488efd05a22c0239482c9a20923f2f214a38e54f6c41a2103f91460d79e4e463d7d90cb75254bcd62b515a99a950574c721efdc5f711dff3553aeffffffff02005a62020000000017a91466528dd543f94d162c8111d2ec248d25ba9b90948700639f020000000017a914f1fc92c0aed1712911c70a2e09ac15ff0922652f8700000000"
)
# inputs match, change matches (second is change)
def test_multisig_change_match_second(client: Client):
@ -403,7 +352,7 @@ def test_multisig_change_match_second(client: Client):
client.set_expected_responses(
_responses(client, INP1, INP2, change_indices=[2])
)
_, serialized_tx = btc.sign_tx(
btc.sign_tx(
client,
"Bitcoin",
[INP1, INP2],
@ -411,12 +360,6 @@ def test_multisig_change_match_second(client: Client):
prev_txes=TX_API,
)
# Transaction does not exist on the blockchain, not using assert_tx_matches()
assert (
serialized_tx.hex()
== "0100000002e53cf4e3fcd37f8c439286ce636476e1faeebf86bbb2f228a6b78d1b47c8c61601000000b400473044022059394e0dfcb2d2f4a6108703f801545ca5a820c0ac6a1859d0a3854813de55fa02207b6a57d70b82932ff58163336c461653a2dc82c78ed8157159e5178ac7325390014c69522103dc07026aacb5918dac4e09f9da8290d0ae22161699636c22cace78082116a7792103e70db185fad69c2971f0107a42930e5d82a9ed3a11b922a96fdfc4124b63e54c2103f3fe007a1e34ac76c1a2528e9149f90f9f93739929797afab6a8e18d682fa71053aeffffffff185315ae8050e18efa70d6ca96378a1194f57e2b102511f68b3a1414ee340cd800000000b40047304402205a911685f5b974b2fc4a19d5ce056218773a4d20b5eaae2c2f9594929308182002201e03449f5a8813ec19f408bf1b6f4f334886d6fcf9920e300fd7678ef0724f81014c6952210297ad8a5df42f9e362ef37d9a4ddced89d8f7a143690649aa0d0ff049c7daca842103ed1fd93989595d7ad4b488efd05a22c0239482c9a20923f2f214a38e54f6c41a2103f91460d79e4e463d7d90cb75254bcd62b515a99a950574c721efdc5f711dff3553aeffffffff02005a62020000000017a91466528dd543f94d162c8111d2ec248d25ba9b90948700639f020000000017a914f1fc92c0aed1712911c70a2e09ac15ff0922652f8700000000"
)
# inputs match, change mismatches (second tries to be change but isn't)
def test_multisig_mismatch_multisig_change(client: Client):
@ -442,7 +385,7 @@ def test_multisig_mismatch_multisig_change(client: Client):
with client:
client.set_expected_responses(_responses(client, INP1, INP2))
_, serialized_tx = btc.sign_tx(
btc.sign_tx(
client,
"Bitcoin",
[INP1, INP2],
@ -450,12 +393,6 @@ def test_multisig_mismatch_multisig_change(client: Client):
prev_txes=TX_API,
)
# Transaction does not exist on the blockchain, not using assert_tx_matches()
assert (
serialized_tx.hex()
== "0100000002e53cf4e3fcd37f8c439286ce636476e1faeebf86bbb2f228a6b78d1b47c8c61601000000b40047304402207f9992cc0230527faf54ec6bd233307db82bc8fac039dcee418bc6feb4e96a3a02206bb4cb157ad27c123277328a877572563a45d70b844d9ab07cc42238112f8c2a014c69522103dc07026aacb5918dac4e09f9da8290d0ae22161699636c22cace78082116a7792103e70db185fad69c2971f0107a42930e5d82a9ed3a11b922a96fdfc4124b63e54c2103f3fe007a1e34ac76c1a2528e9149f90f9f93739929797afab6a8e18d682fa71053aeffffffff185315ae8050e18efa70d6ca96378a1194f57e2b102511f68b3a1414ee340cd800000000b400473044022078a41bfa87d72d6ba810d84bf568b5a29acf8b851ba6c3a8dbff079b34a7feb0022037b770c776db0b6c883c38a684a121b90a59ed1958774cbf64de70e53e29639f014c6952210297ad8a5df42f9e362ef37d9a4ddced89d8f7a143690649aa0d0ff049c7daca842103ed1fd93989595d7ad4b488efd05a22c0239482c9a20923f2f214a38e54f6c41a2103f91460d79e4e463d7d90cb75254bcd62b515a99a950574c721efdc5f711dff3553aeffffffff02005a62020000000017a91466528dd543f94d162c8111d2ec248d25ba9b90948700639f020000000017a914e6a3e2fbadb7f559f8d20c46aceae78c96fcf1d18700000000"
)
# inputs mismatch, change matches with first input
def test_multisig_mismatch_inputs(client: Client):
@ -481,16 +418,10 @@ def test_multisig_mismatch_inputs(client: Client):
with client:
client.set_expected_responses(_responses(client, INP1, INP3))
_, serialized_tx = btc.sign_tx(
btc.sign_tx(
client,
"Bitcoin",
[INP1, INP3],
[out1, out2],
prev_txes=TX_API,
)
# Transaction does not exist on the blockchain, not using assert_tx_matches()
assert (
serialized_tx.hex()
== "0100000002e53cf4e3fcd37f8c439286ce636476e1faeebf86bbb2f228a6b78d1b47c8c61601000000b500483045022100d907b9339951c96ef4515ef7aff8b3c28c4c8c5875d7421aa1de9f3a94e3508302205cdc311a6c91dfbb74f1a9a940a994a65dbfb0cf6dedcaaaeee839e0b8fd016d014c69522103dc07026aacb5918dac4e09f9da8290d0ae22161699636c22cace78082116a7792103e70db185fad69c2971f0107a42930e5d82a9ed3a11b922a96fdfc4124b63e54c2103f3fe007a1e34ac76c1a2528e9149f90f9f93739929797afab6a8e18d682fa71053aeffffffff39f756d82082b580b0d69ae8798ff10a981820ccfe1ab149a708a37bc26d94b000000000b500483045022100fdad4a47d15f47cc364fe0cbed11b1ced1f9ef210bc1bd413ec4384f630c63720220752e4f09ea4e5e6623f5ebe89b3983ec6e5702f63f9bce696f10b2d594d23532014c6952210297ad8a5df42f9e362ef37d9a4ddced89d8f7a143690649aa0d0ff049c7daca842103b6321a1194e5cc47b6b7edc3f67a096e6f71ccb72440f84f390b6e98df0ea8ec2103f91460d79e4e463d7d90cb75254bcd62b515a99a950574c721efdc5f711dff3553aeffffffff02005a62020000000017a91466528dd543f94d162c8111d2ec248d25ba9b90948740d2df030000000017a914f1fc92c0aed1712911c70a2e09ac15ff0922652f8700000000"
)

View File

@ -1,22 +0,0 @@
{
"bin_outputs": [
{
"amount": 227568531,
"script_pubkey": "76a9140889daec397047b8c6cce0080ba6c5455b443a8188ac"
},
{
"amount": 50000000,
"script_pubkey": "a914b250bcb267cf4e65a6e4614a5e344720a025286987"
}
],
"inputs": [
{
"prev_hash": "3143f555a21753fbf3f095e27823122c4107393bb388aca736bd613e91192be4",
"prev_index": 1,
"script_sig": "483045022100a2d3237b16795b10b33c19651261f9b9d1f8a0143f87f749adcc84e3d0b8f38702205ab3f80431af41091a01c946586b68fc843c8341738656cea70e25b0d0be2c970121024e6f7ddfe8c050649c7d3291f07e188c3fe779fb71954f8d00eaf1eff9af958e",
"sequence": 4294967295
}
],
"lock_time": 0,
"version": 1
}

View File

@ -1,22 +0,0 @@
{
"bin_outputs": [
{
"amount": 55500000,
"script_pubkey": "a9142880f749ea56a74031c2b222cf88937da6f58a3787"
},
{
"amount": 137566531,
"script_pubkey": "76a9146311e2d6a2180ec64969f4ca11ec4ca8dd38fcf188ac"
}
],
"inputs": [
{
"prev_hash": "d80c34ee14143a8bf61125102b7ef594118a3796cad670fa8ee15080ae155318",
"prev_index": 1,
"script_sig": "473044022004b4045313f2b9f20c3d0d7e042c1caf3ee7af0531a4a4359c1f950f9b7780e602205abf837a2fdefd3ee708f052e740e763702bb40e976cab4e243035d4d77cb3b401210228fa17826fb9632c6e36ee31b32aebf20a81ee921b3d1c627a94b4b3dba879dd",
"sequence": 4294967295
}
],
"lock_time": 0,
"version": 1
}

View File

@ -1,22 +0,0 @@
{
"bin_outputs": [
{
"amount": 34500000,
"script_pubkey": "a914daa29c05a2af12752e459dedaee1d78e459c379c87"
},
{
"amount": 193067531,
"script_pubkey": "76a9141a1c9c85a4b98f1799aae582df6c911bef2478f488ac"
}
],
"inputs": [
{
"prev_hash": "16c6c8471b8db7a628f2b2bb86bfeefae1766463ce8692438c7fd3fce3f43ce5",
"prev_index": 0,
"script_sig": "483045022100ea03d520495cd50b22b9c209f428de32aca2116c06e0fd391cf0a516a0974fff02207424a0742166fb4da9676fbfd09c8b5e7f73bdca72cd1088eb6037863448003d012102fbc883b74248b0207b22d42f591ba562db991494428adaaeb7c819ed3ac0cea9",
"sequence": 4294967295
}
],
"lock_time": 0,
"version": 1
}