feat(core): Improve Bitcoin signing progress display.

pull/2552/merge
Andrew Kozlik 2 years ago committed by Andrew Kozlik
parent 8ef5e5120a
commit cc054050a5

@ -140,8 +140,12 @@ def decode_bech32_address(prefix: str, address: str) -> tuple[int, bytes]:
def input_is_segwit(txi: TxInput) -> bool:
# Note that we don't investigate whether external inputs that are not presigned
# are SegWit or not. For practical purposes we count them as SegWit, because
# they behave as such, i.e. they don't use get_legacy_tx_digest().
return txi.script_type in SEGWIT_INPUT_SCRIPT_TYPES or (
txi.script_type == InputScriptType.EXTERNAL and txi.witness is not None
txi.script_type == InputScriptType.EXTERNAL
and bool(txi.witness or not txi.script_sig)
)

@ -50,6 +50,8 @@ _SERIALIZED_TX_BUFFER = empty_bytearray(_MAX_SERIALIZED_CHUNK_SIZE)
class Bitcoin:
async def signer(self) -> None:
progress.init(self.tx_info.tx)
# Add inputs to sig_hasher and h_tx_check and compute the sum of input amounts.
await self.step1_process_inputs()
@ -63,6 +65,17 @@ class Bitcoin:
# Check fee, approve lock_time and total.
await self.approver.approve_tx(self.tx_info, self.orig_txs)
progress.init_signing(
len(self.external),
len(self.segwit),
self.taproot_only,
self.has_presigned,
self.serialize,
self.coin,
self.tx_info.tx,
self.orig_txs,
)
# Verify the transaction input amounts by requesting each previous transaction
# and checking its output amount. Verify external inputs which have already
# been signed or which come with a proof of non-ownership.
@ -133,8 +146,6 @@ class Bitcoin:
# The index of the payment request being processed.
self.payment_req_index: int | None = None
progress.init(tx.inputs_count, tx.outputs_count)
def create_hash_writer(self) -> HashWriter:
return HashWriter(sha256())
@ -146,6 +157,7 @@ class Bitcoin:
for i in range(self.tx_info.tx.inputs_count):
# STAGE_REQUEST_1_INPUT in legacy
progress.advance()
txi = await helpers.request_tx_input(self.tx_req, i, self.coin)
script_pubkey = self.input_derive_script(txi)
self.tx_info.add_input(txi, script_pubkey)
@ -182,6 +194,7 @@ class Bitcoin:
async def step2_approve_outputs(self) -> None:
for i in range(self.tx_info.tx.outputs_count):
# STAGE_REQUEST_2_OUTPUT in legacy
progress.advance()
txo = await helpers.request_tx_output(self.tx_req, i, self.coin)
script_pubkey = self.output_derive_script(txo)
orig_txo: TxOutput | None = None
@ -209,8 +222,8 @@ class Bitcoin:
if self.has_presigned:
expected_digest = self.h_external_inputs
for i in range(self.tx_info.tx.inputs_count):
progress.advance()
if i in self.external:
progress.advance()
txi = await helpers.request_tx_input(self.tx_req, i, self.coin)
writers.write_tx_input_check(h_check, txi)
if txi.witness or txi.script_sig:
@ -230,7 +243,6 @@ class Bitcoin:
# multiple rounds of the attack.
expected_digest = self.tx_info.h_inputs_check
for i in range(self.tx_info.tx.inputs_count):
progress.advance()
txi = await helpers.request_tx_input(self.tx_req, i, self.coin)
writers.write_tx_input_check(h_check, txi)
@ -259,14 +271,16 @@ class Bitcoin:
write_compact_size(self.serialized_tx, self.tx_info.tx.inputs_count)
for i in range(self.tx_info.tx.inputs_count):
progress.advance()
if i in self.external:
if self.serialize:
progress.advance()
await self.serialize_external_input(i)
elif i in self.segwit:
if self.serialize:
progress.advance()
await self.serialize_segwit_input(i)
else:
progress.advance()
await self.sign_nonsegwit_input(i)
async def step5_serialize_outputs(self) -> None:
@ -280,17 +294,17 @@ class Bitcoin:
async def step6_sign_segwit_inputs(self) -> None:
if not self.segwit:
progress.advance(self.tx_info.tx.inputs_count)
return
for i in range(self.tx_info.tx.inputs_count):
progress.advance()
if i in self.segwit:
if i in self.external:
if self.serialize:
progress.advance()
txi = await helpers.request_tx_input(self.tx_req, i, self.coin)
self.serialized_tx.extend(txi.witness or b"\0")
else:
progress.advance()
await self.sign_segwit_input(i)
else:
# add empty witness for non-segwit inputs
@ -300,6 +314,8 @@ class Bitcoin:
async def step7_finish(self) -> None:
if self.serialize:
self.write_tx_footer(self.serialized_tx, self.tx_info.tx)
if __debug__:
progress.assert_finished()
await helpers.request_tx_finish(self.tx_req)
async def process_internal_input(self, txi: TxInput) -> None:
@ -440,6 +456,7 @@ class Bitcoin:
h_check = HashWriter(sha256())
for i in range(orig.tx.inputs_count):
progress.advance()
txi = await helpers.request_tx_input(
self.tx_req, i, self.coin, orig.orig_hash
)
@ -664,6 +681,7 @@ class Bitcoin:
node = None
for i in range(tx_info.tx.inputs_count):
# STAGE_REQUEST_4_INPUT in legacy
progress.advance()
txi = await helpers.request_tx_input(self.tx_req, i, self.coin, tx_hash)
writers.write_tx_input_check(h_check, txi)
# Only the previous UTXO's scriptPubKey is included in h_sign.
@ -700,6 +718,7 @@ class Bitcoin:
for i in range(tx_info.tx.outputs_count):
# STAGE_REQUEST_4_OUTPUT in legacy
progress.advance()
txo = await helpers.request_tx_output(self.tx_req, i, self.coin, tx_hash)
script_pubkey = self.output_derive_script(txo)
self.write_tx_output(h_check, txo, script_pubkey)
@ -747,6 +766,7 @@ class Bitcoin:
# STAGE_REQUEST_3_PREV_META in legacy
tx = await helpers.request_tx_meta(self.tx_req, self.coin, prev_hash)
progress.init_prev_tx(tx.inputs_count, tx.outputs_count)
if tx.outputs_count <= prev_index:
raise wire.ProcessError("Not enough outputs in previous transaction.")
@ -759,6 +779,7 @@ class Bitcoin:
for i in range(tx.inputs_count):
# STAGE_REQUEST_3_PREV_INPUT in legacy
progress.advance_prev_tx()
txi = await helpers.request_tx_prev_input(
self.tx_req, i, self.coin, prev_hash
)
@ -769,6 +790,7 @@ class Bitcoin:
script_pubkey: bytes | None = None
for i in range(tx.outputs_count):
# STAGE_REQUEST_3_PREV_OUTPUT in legacy
progress.advance_prev_tx()
txo_bin = await helpers.request_tx_prev_output(
self.tx_req, i, self.coin, prev_hash
)

@ -280,6 +280,9 @@ class Decred(Bitcoin):
pass
async def step7_finish(self) -> None:
if __debug__:
progress.assert_finished()
await helpers.request_tx_finish(self.tx_req)
def check_prevtx_output(self, txo_bin: PrevOutput) -> None:
@ -328,6 +331,7 @@ class Decred(Bitcoin):
raise wire.DataError("Ticket has wrong number of outputs.")
# SSTX submission
progress.advance()
txo = await helpers.request_tx_output(self.tx_req, 0, self.coin)
if txo.address is None:
raise wire.DataError("Missing address.")
@ -338,6 +342,7 @@ class Decred(Bitcoin):
self.write_tx_output(self.serialized_tx, txo, script_pubkey)
# SSTX commitment
progress.advance()
txo = await helpers.request_tx_output(self.tx_req, 1, self.coin)
if txo.amount != self.approver.total_in:
raise wire.DataError("Wrong sstxcommitment amount.")
@ -348,6 +353,7 @@ class Decred(Bitcoin):
self.write_tx_output(self.serialized_tx, txo, script_pubkey)
# SSTX change
progress.advance()
txo = await helpers.request_tx_output(self.tx_req, 2, self.coin)
if txo.address is None:
raise wire.DataError("Missing address.")

@ -1,31 +1,134 @@
from trezor import ui, utils, workflow
from typing import TYPE_CHECKING
from trezor import ui
if TYPE_CHECKING:
from trezor.messages import SignTx
from apps.common.coininfo import CoinInfo
from .tx_info import OriginalTxInfo
# Checking previous transactions typically requires the following pieces of
# information to be fetched for each input:
# the input, prevtx metadata, prevtx input, prevtx output, prevtx change-output
_PREV_TX_MULTIPLIER = 5
_progress = 0
_steps = 0
_signing = False
_prev_tx_step = 0
def init(inputs: int, outputs: int) -> None:
global _progress, _steps
def init(tx: SignTx) -> None:
global _progress, _steps, _signing
_progress = 0
_steps = inputs + inputs + outputs + inputs
_signing = False
# Step 1 and 2 - load inputs and outputs
_steps = tx.inputs_count + tx.outputs_count
report_init()
report()
def init_signing(
external: int,
segwit: int,
taproot_only: bool,
has_presigned: bool,
serialize: bool,
coin: CoinInfo,
tx: SignTx,
orig_txs: list[OriginalTxInfo],
) -> None:
if __debug__:
assert_finished()
global _progress, _steps, _signing
_progress = 0
_steps = 0
_signing = True
# Step 3 - verify inputs
if taproot_only or (coin.overwintered and tx.version == 5):
if has_presigned:
_steps += external
else:
_steps = tx.inputs_count * _PREV_TX_MULTIPLIER
for orig in orig_txs:
_steps += orig.tx.inputs_count
# Steps 3 and 4 - get_legacy_tx_digest() for each legacy input.
if not (coin.force_bip143 or coin.overwintered or coin.decred):
_steps += (tx.inputs_count - segwit) * (tx.inputs_count + tx.outputs_count)
if segwit != tx.inputs_count:
# The transaction has a legacy input.
# Simplification: We assume that all original transaction inputs
# are legacy, since mixed script types are not supported in Suite.
for orig in orig_txs:
_steps += orig.tx.inputs_count * (
orig.tx.inputs_count + orig.tx.outputs_count
)
# Steps 4 and 6 - serialize and sign inputs
if serialize:
_steps += tx.inputs_count + segwit
else:
_steps += tx.inputs_count - external
# Step 5 - serialize outputs
if serialize and not coin.decred:
_steps += tx.outputs_count
report_init()
report()
def advance(i: int = 1) -> None:
def init_prev_tx(inputs: int, outputs: int) -> None:
global _prev_tx_step
_prev_tx_step = _PREV_TX_MULTIPLIER / (inputs + outputs)
def advance() -> None:
global _progress
_progress += i
_progress += 1
report()
def advance_prev_tx() -> None:
global _progress
_progress += _prev_tx_step
report()
def report_init() -> None:
from trezor import workflow
workflow.close_others()
ui.display.clear()
ui.header("Signing transaction")
if _signing:
ui.header("Signing transaction")
else:
ui.header("Loading transaction")
def report() -> None:
from trezor import utils
if utils.DISABLE_ANIMATION:
return
p = 1000 * _progress // _steps
p = int(1000 * _progress / _steps)
ui.display.loader(p, False, 18, ui.WHITE, ui.BG)
if __debug__:
def assert_finished() -> None:
if abs(_progress - _steps) > 0.5:
operation = "signing" if _signing else "loading"
from trezor import wire
raise wire.FirmwareError(
f"Transaction {operation} progress finished at {_progress}/{_steps}."
)

@ -624,6 +624,7 @@ def test_p2wpkh_with_proof(client: Client):
request_input(1),
request_output(0),
request_output(1),
request_input(0),
request_input(1),
request_finished(),
]
@ -701,6 +702,7 @@ def test_p2tr_with_proof(client: Client):
request_input(0),
request_input(1),
request_output(0),
request_input(0),
request_input(1),
request_finished(),
]

@ -623,33 +623,34 @@
"TT_bitcoin-test_authorize_coinjoin.py::test_get_address": "6874f2f758936d7f21fbcf941e0953a74133650307d5c5c559eec2eef3438f1d",
"TT_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "b1b4b17120b7131e7be00e59254e7afaf43afde1e547c5b0cc1ecd105e802654",
"TT_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "65c9435e10e3dede19169a9b02d373bd5acb22eba0ba3b31324271025d65d5a7",
"TT_bitcoin-test_authorize_coinjoin.py::test_sign_tx": "87b81a29fe6e27fdfedfdbb1953b3d0178786749eadbb0fe01509c1af8075de5",
"TT_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "dc1ae93408d2c0956f9824011167045124de5a7e871b36cfc22fdfc71032f3f6",
"TT_bitcoin-test_authorize_coinjoin.py::test_sign_tx": "83859a6429f212c1fb72ce3248ddf7eb04a76eae830808298a02b7def8534889",
"TT_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "80d576289c53da7e18e8f18f13a054cdb048968ae1f3938f63e93c35cbee7308",
"TT_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "0f4f7f2c41f9945e9c55e2be39f6ccffb7bfd40ffd4098ab18d4ca2c8c58115f",
"TT_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "2e5cffe7bd0dc6034852d21612fba8cf1ee3c45a14e76140a4c2786f360f54f0",
"TT_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "2e5cffe7bd0dc6034852d21612fba8cf1ee3c45a14e76140a4c2786f360f54f0",
"TT_bitcoin-test_bcash.py::test_attack_change_input": "9d0012dd39987cc13cb2b15da0b58068782b7c2267ea6d214881325a449516bb",
"TT_bitcoin-test_bcash.py::test_send_bch_change": "9d0012dd39987cc13cb2b15da0b58068782b7c2267ea6d214881325a449516bb",
"TT_bitcoin-test_bcash.py::test_send_bch_external_presigned": "4ea82258a094d49829ab7240465de9cb06198d7b0bb1a56b66bfbda5ccc676c1",
"TT_bitcoin-test_bcash.py::test_send_bch_multisig_change": "ebcc1cc22bf3c1f039d8d665a81c4a5eb17ddc16afa1b0c3cd2d38f8f10969e5",
"TT_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "abc79adcbf4509993bb3e87165343604aae43994af9bacbf75357368727be934",
"TT_bitcoin-test_bcash.py::test_send_bch_nochange": "16e99f3b96f69376198fa8d082ccf60f4eb694feec37e86add77983fe2465af1",
"TT_bitcoin-test_bcash.py::test_send_bch_oldaddr": "170560168cec379249617b12c31b225639d8c4628f67ff747850ace6cc187cc5",
"TT_bitcoin-test_bgold.py::test_attack_change_input": "e1bf4a90cd9f2d53894300f4200ff50c40e76859681708e6b58b93af422e79d8",
"TT_bitcoin-test_bgold.py::test_send_bitcoin_gold_change": "e1bf4a90cd9f2d53894300f4200ff50c40e76859681708e6b58b93af422e79d8",
"TT_bitcoin-test_bgold.py::test_send_bitcoin_gold_nochange": "78747589773bd75c8c7ff102b816f0648dc1ca6f9aeae11b32dcc86165daa99f",
"TT_bitcoin-test_bgold.py::test_send_btg_external_presigned": "26edf762cee23502a3f09ed99a27f77e7a94d95ac6d1fddabba9c36b708157f8",
"TT_bitcoin-test_bgold.py::test_send_btg_multisig_change": "5b9bf3ea996abe56f1b1dfd578556105abff59d6e4cecfbcd9a59e20247338f0",
"TT_bitcoin-test_bgold.py::test_send_mixed_inputs": "a4664cbbdcc339fd883d8078045219bc5810cd08352063d3c0e3c88487a060f6",
"TT_bitcoin-test_bgold.py::test_send_multisig_1": "a210e861315c6c2020fccfe6560d3c8f2a5f51e00bacbccee54fcf654b891b50",
"TT_bitcoin-test_bgold.py::test_send_p2sh": "c1cd6a0592e07ed267c818283a0b9b8853c322035346f879e2ee689ef1e5baf7",
"TT_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "5a91bc516db4ddead42892d3ae72277c076246e3033c0dd80c3d4d769077f6a0",
"TT_bitcoin-test_dash.py::test_send_dash": "bd2fbd3b7ef6ac2c54627365ba434c0e5ce6473dc65e7ba9f3e5b7587c5327c1",
"TT_bitcoin-test_dash.py::test_send_dash_dip2_input": "aec5a54a638ad5f5033027849096b71b5d26919fcea53b8bd1dd7912d22ba11a",
"TT_bitcoin-test_decred.py::test_decred_multisig_change": "792f91c7ffa37c4eaab8e0e837fd28c5eaff2b9d47b7bc50e98d99f46a355d57",
"TT_bitcoin-test_decred.py::test_purchase_ticket_decred": "16b7fd6d4b88711b0932768432288df5357d16030de45c8520238322ab1d6a66",
"TT_bitcoin-test_decred.py::test_send_decred": "3e0a562192cd7bd1222ba4d54e33233684c35b02f3fc8bd238b33bbee82d4318",
"TT_bitcoin-test_decred.py::test_send_decred_change": "4c677314faf2f11925d41502d34994a2d788e03eb65539e8e668de381227e17a",
"TT_bitcoin-test_decred.py::test_spend_from_stake_generation_and_revocation_decred": "679342fafab0b37b394b28648327696edde4b47389ea35635197928fb02e2ea3",
"TT_bitcoin-test_bcash.py::test_attack_change_input": "a7b230e002cc350c3e94b81cd730f9ba39e3e59ecd4bce264348af4304422ade",
"TT_bitcoin-test_bcash.py::test_send_bch_change": "a7b230e002cc350c3e94b81cd730f9ba39e3e59ecd4bce264348af4304422ade",
"TT_bitcoin-test_bcash.py::test_send_bch_external_presigned": "3b9b05f284da4af74552c552524ddd54be96bff8968b71f519bc684f1fda2d01",
"TT_bitcoin-test_bcash.py::test_send_bch_multisig_change": "ebb941b05a9766ae31056ab597bcada9c830d8a5ceaa4d8a0ff2fbc4ee77b6d2",
"TT_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "a17426d9821531b01ac37aa8ba69d45ea8a393183e865b81aa0da7d4525b315a",
"TT_bitcoin-test_bcash.py::test_send_bch_nochange": "db8c6074f17f77fb3cd323cf93fbc70ddccd5fd30f5c960d559fa253ade51f89",
"TT_bitcoin-test_bcash.py::test_send_bch_oldaddr": "20d56adcf4ecc9734e705b208a3b848f6d3d1d2819078aa9f9aa7e9276572609",
"TT_bitcoin-test_bgold.py::test_attack_change_input": "91e8d54402e680fa12637831a4a715e3c95fc2445e528e928783cf6dc0128bf5",
"TT_bitcoin-test_bgold.py::test_send_bitcoin_gold_change": "91e8d54402e680fa12637831a4a715e3c95fc2445e528e928783cf6dc0128bf5",
"TT_bitcoin-test_bgold.py::test_send_bitcoin_gold_nochange": "fb68ccee3b295f8e5cb7841f9b71815b2b8019a12cd22dbaa77c4c06ae777990",
"TT_bitcoin-test_bgold.py::test_send_btg_external_presigned": "ff873b4fcb2887fdcfc0d2c7972b294dd2d99c5d35e1b3d634197b479ec2b487",
"TT_bitcoin-test_bgold.py::test_send_btg_multisig_change": "568c62418c2b6343cf6df67bfd49a6694b618c2f70864a45aee6da486ec723e1",
"TT_bitcoin-test_bgold.py::test_send_mixed_inputs": "218a831642be4fd6b359866814ef058a2e6a19c7d663936f5f8f731889c0cb4c",
"TT_bitcoin-test_bgold.py::test_send_multisig_1": "24af23c0ae8a38d837d1c726a194ba5def375e0b7edfc76778f46c8d0ebf731e",
"TT_bitcoin-test_bgold.py::test_send_p2sh": "92ed15a5efac339ba64d759307d52ae87a8b2c215dcd9c489e3591b4c075b817",
"TT_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "9e9c0bd4de361a9d4e7193061e5a2e3037d75111c9cf849b9b86188441634a61",
"TT_bitcoin-test_dash.py::test_send_dash": "f2d54c85d4feb8bbf6d9f9b616802ac68f70d1344213a66ab42f91f693f1136e",
"TT_bitcoin-test_dash.py::test_send_dash_dip2_input": "0a672126c2ad90d1d57f96be52185731cca980fa662e6e09ba15a5273b2a582e",
"TT_bitcoin-test_decred.py::test_decred_multisig_change": "415096928f666da8667973bbf967e375c893fbafd740d91661c7f35bf95fba7c",
"TT_bitcoin-test_decred.py::test_purchase_ticket_decred": "14fffaa74166fbb57cc7e02fe9fa6a89ec1f9ddf823d570dfff48d42956d7b48",
"TT_bitcoin-test_decred.py::test_send_decred": "f38c64d5d4653b514e9b01242a1cf023cca2f102f1aa8fc890cbfb855509733a",
"TT_bitcoin-test_decred.py::test_send_decred_change": "868236318cba493363305ab254e24c460a268ec66912d8f7415a4ff94fbabb2e",
"TT_bitcoin-test_decred.py::test_spend_from_stake_generation_and_revocation_decred": "86d7482d5fbdec7dba2128b986d17432365be6cd78105887d90fed6febf02cda",
"TT_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-InputScriptType.SPENDADDRESS-pkh([5-7a80e3db": "24290396b20f26b49204a5551676d6f3c831009e30582d92d5b44fcc3c12fdb7",
"TT_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-InputScriptType.SPENDP2SHWITNESS-sh-03d56ac2": "8977c539f5680a5196ad0a4c6e16c44ca1bbdb79235dbf97e33aad8d47fe5d0c",
"TT_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-InputScriptType.SPENDTAPROOT-tr([5c-22751b2f": "3c31e8f9e396a1313c22480aac32f901086df23d8edf3f808d2f46a0d063034b",
@ -666,8 +667,8 @@
"TT_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-InputScriptType.SPENDP2SHWITNESS-sh-e8c5303c": "6261537d1445ce1fb637760f8ec77aae8650ee4f0f5ab919ba1a41f039a02b1f",
"TT_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-InputScriptType.SPENDTAPROOT-tr([5c-ddc924d3": "fe4691af27c7221ac650927a4ee64aeb17ba323f746a03763d053a8311f6633b",
"TT_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-InputScriptType.SPENDWITNESS-wpkh([-996ae319": "3181b25e844eb1047d2904abb1099029c5f5ae4ba4d333be21336d1a745aafe0",
"TT_bitcoin-test_firo.py::test_spend_lelantus": "de199320e37e0a9d41e228138f674f2139744b9fa5b85bcace947e3458d8b794",
"TT_bitcoin-test_fujicoin.py::test_send_p2tr": "ab2358502425ae446202ff00b52f31d692c3c7f3a9bf77e549406991aba19d36",
"TT_bitcoin-test_firo.py::test_spend_lelantus": "91263b1668f91a15049ececb4ad4de9b8275dca147ead64442b2c87f0f377041",
"TT_bitcoin-test_fujicoin.py::test_send_p2tr": "8eb51946a4e662e920cf644ecaa63791d39039c0dfcf64e78541c39f6d05c3f2",
"TT_bitcoin-test_getaddress.py::test_address_mac": "c09de07fbbf1e047442180e2facb5482d06a1a428891b875b7dd93c9e4704ae1",
"TT_bitcoin-test_getaddress.py::test_altcoin_address_mac": "c09de07fbbf1e047442180e2facb5482d06a1a428891b875b7dd93c9e4704ae1",
"TT_bitcoin-test_getaddress.py::test_bch": "c09de07fbbf1e047442180e2facb5482d06a1a428891b875b7dd93c9e4704ae1",
@ -776,27 +777,27 @@
"TT_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "c09de07fbbf1e047442180e2facb5482d06a1a428891b875b7dd93c9e4704ae1",
"TT_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "c09de07fbbf1e047442180e2facb5482d06a1a428891b875b7dd93c9e4704ae1",
"TT_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "c09de07fbbf1e047442180e2facb5482d06a1a428891b875b7dd93c9e4704ae1",
"TT_bitcoin-test_grs.py::test_legacy": "0684f69e7dcee2df0638164fd8572a4229ebdc04f50a749b7d7f8c76be030fc3",
"TT_bitcoin-test_grs.py::test_legacy_change": "03137135974aa423ab0c108fa8b4061c13709ee98f5df839ff7cdb21e4010e5b",
"TT_bitcoin-test_grs.py::test_send_p2tr": "afa031c73b3aaf82bd83edf9732bc518ce91963df444764f7eb8846a0dfd6ef5",
"TT_bitcoin-test_grs.py::test_send_segwit_native": "ffe10b37c7cebacf941fba76c33191a921b739d7fd14c71c080664d141681602",
"TT_bitcoin-test_grs.py::test_send_segwit_native_change": "7c1af889bd313c56fa19ec4cbae246787f7d7200ef3640f9483585f3039068af",
"TT_bitcoin-test_grs.py::test_send_segwit_p2sh": "dec2bea31da18b25aa31e30d78fe2cb06c2780b81c3108b470a9efeccb7718ed",
"TT_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "5316a5056a46e655d8feb72bf9bf5f8831016f0b1fc22a9b108ca84589790e20",
"TT_bitcoin-test_komodo.py::test_one_one_fee_sapling": "b03a9f054193f234211cb4c10bbbdcb18f1f0c576db96ab173f7df8fdad20a1d",
"TT_bitcoin-test_komodo.py::test_one_one_rewards_claim": "b3c056df25d639927faaf16dc18c281c1a36b790ea4e77f954f681fb27d3fa1a",
"TT_bitcoin-test_multisig.py::test_15_of_15": "f14896f55015c4a3a00911d1d4ed11b5e0e45a4b82ad9f03e7089cb451bac516",
"TT_bitcoin-test_multisig.py::test_2_of_3": "19cf0914dde0573be031763473eb191ddb172a18d79dc888a7fd8eef32344540",
"TT_bitcoin-test_multisig.py::test_attack_change_input": "27739120850d31c8de2638bf156ec79472d872ac64c93ed9a09e78103afbf4e2",
"TT_bitcoin-test_multisig.py::test_missing_pubkey": "1c100ce4b7c1e47e72428f390de0846c1ff933e9f07894872644a369a9422738",
"TT_bitcoin-test_multisig_change.py::test_external_external": "bb5c5e48c67e8e67613ec70198cab434ef609903f0bf163c8a95dba814224a5b",
"TT_bitcoin-test_multisig_change.py::test_external_internal": "7bbe5acedb002a703f4451f82f53fd06ac2da1a5d0198aa1308892c966c234df",
"TT_bitcoin-test_multisig_change.py::test_internal_external": "ea764dd63fb5b14b4fb009b7b45999780557fb7669acfa510ba6963ff81f0775",
"TT_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "b26b6e6ce81c7a993a364d56e00cb82971773850f53e1689944ac7c2e4bc63d8",
"TT_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "9414230d0402801e45696d75c5e94583d026fd151f8c5c44bfb95d778d0f8687",
"TT_bitcoin-test_multisig_change.py::test_multisig_external_external": "c5e72c7a393a1bdf0d00d5224ac428a03618065e7ee08de1abe9e030c8c17bba",
"TT_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "c5a1c3a7e75e15a5a8ffc2bbcf244058ed3348226c2e7d88bb37df7ef67ebeed",
"TT_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "059c84ac76627ea82f7a8199ea18156ab010339f3c4aeeecc1c6c354abe6c5ba",
"TT_bitcoin-test_grs.py::test_legacy": "7e2423a338e496c74756ae67ab3d5489551540297e943d5371f08fb709cf0838",
"TT_bitcoin-test_grs.py::test_legacy_change": "8868db1bf7b1944170637b8ca8ed17d8483329e30b34650fdc330e260be14166",
"TT_bitcoin-test_grs.py::test_send_p2tr": "5f78504b631c4625fddc8bf3bc662b8fd2bca1a567acbb00c7c65580aa8297ab",
"TT_bitcoin-test_grs.py::test_send_segwit_native": "cd02f6794a814541efc633666cd04f7d598f9632c92b6e1241cc03cdafd64d87",
"TT_bitcoin-test_grs.py::test_send_segwit_native_change": "691298c25648ecb1325ed7b5c3423208f0b03dc5ca3c499c74863f82325223e4",
"TT_bitcoin-test_grs.py::test_send_segwit_p2sh": "629c56f057d16408606f66998abd7b4d1bb9fbf6227170c1e0f7bad5eb74ea17",
"TT_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "af5ed656720c72df30f5e1a69f96bd34e1edf246dd68418eda242e2104d0c886",
"TT_bitcoin-test_komodo.py::test_one_one_fee_sapling": "b242766ea938f2c28d7009313423537736fcedc65d7e973a5efcd2722a90601b",
"TT_bitcoin-test_komodo.py::test_one_one_rewards_claim": "aca6cc1035de32b7530fe54e9f51191fc44b5e92e0a68d246756b1532a076df2",
"TT_bitcoin-test_multisig.py::test_15_of_15": "6670b0bc877c565f2f8e5c1c006fd8750d6a0a4ea93cdfd09035485dbbe2db85",
"TT_bitcoin-test_multisig.py::test_2_of_3": "f8149c147f877775276aeb6552596aec85f7885f4637547a3964e87f7ede4a4b",
"TT_bitcoin-test_multisig.py::test_attack_change_input": "a27b6364f73f907adcd0cff0ecb19688f834d945702acac02f31b4045b0694c9",
"TT_bitcoin-test_multisig.py::test_missing_pubkey": "2f4ce27cb15b1188099e005499209e19ddc34187555600842d368f69c59448f1",
"TT_bitcoin-test_multisig_change.py::test_external_external": "c2642ad729bd7af556f7ccc1f374274b1fb35c0b86e7ed1bb9839d5c24266d38",
"TT_bitcoin-test_multisig_change.py::test_external_internal": "a9f25240618349c80326cdaf6ab04843b30fa7bad49f6649625a511459d91393",
"TT_bitcoin-test_multisig_change.py::test_internal_external": "f77ec768dece008582e4264fa113e54161745d6337ca3f4e374119ad4bd91eb2",
"TT_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "a4fbadb0c2b37a5054265311938f18ffda8504ea7dd28bfd6e4bcffb43099799",
"TT_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "9628dddcd9ebd26306bbc65ffd99daa5fe80d2be7b1946d01f04cd69f42087fe",
"TT_bitcoin-test_multisig_change.py::test_multisig_external_external": "e92f6b004913df4b28e58bfc43a26f85ef93cc343f73ba4d02b33ba5c7fd4b13",
"TT_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "d1930ec373873b01a5471217074ddb2b93a89a0e50de02633129f871954af0d9",
"TT_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "60a3ab7036f823d9166fa717d9804d0c4f23b9391284491bbb25afbcd4315fa1",
"TT_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3]": "7914107977c576bdf24120466a7f6c4dccef31ee24bd8133657cc8310a89891b",
"TT_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2]": "756a9cfc6b6c1c70859737ed1466d0495c0a0b148fb16f60e193e5b4784df66e",
"TT_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1]": "b1f2a522eec51325ede3d518fc177e4ded3e15409aa5b1374067a05ab5a60bde",
@ -819,24 +820,24 @@
"TT_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "4f73135d2ec9add695e0a22d855816558b4ba9329a2828f9c9930be6245bdc2d",
"TT_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "0988cc8bdc5879744bd33190fddc5b5aa137fdd7214abb003c8000a871d98f14",
"TT_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "540df94c73a4eed8fe88cdb475e2b31df752dca9e47b102792c01064ee432752",
"TT_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "a90506a9d9407beb378962f1b68faaa1c383e94de825d2bed61b8b35f2d96ac5",
"TT_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "443d46f758a63964ebf436dd5e8f83d8c7109a9f267c4de369b297f4a73648fe",
"TT_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "c18c460564ed22cac67963e312d5382cc3a6b972b15a2215299bcb3ab88feb23",
"TT_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "c18c460564ed22cac67963e312d5382cc3a6b972b15a2215299bcb3ab88feb23",
"TT_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "287f07da3ea9f2bc42292a8923f1b0e4e93e401ad2ebb7a18a322bb938fbbd7d",
"TT_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "5b7f75a4766304722ff86f5cbf555d7e1b932f76a425a606da3107ea574f7f34",
"TT_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "5b7f75a4766304722ff86f5cbf555d7e1b932f76a425a606da3107ea574f7f34",
"TT_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "d14e7cae0ec7a1f1a1e1d7cd17e98a5faca2f441e7ddca1f3052ff4c641c7d75",
"TT_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "8b50d4650d7670f71535ac484f605425047976466955cfd17bc23b6331ecd64f",
"TT_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "5b7f75a4766304722ff86f5cbf555d7e1b932f76a425a606da3107ea574f7f34",
"TT_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "5b7f75a4766304722ff86f5cbf555d7e1b932f76a425a606da3107ea574f7f34",
"TT_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "5b7f75a4766304722ff86f5cbf555d7e1b932f76a425a606da3107ea574f7f34",
"TT_bitcoin-test_op_return.py::test_nonzero_opreturn": "1c100ce4b7c1e47e72428f390de0846c1ff933e9f07894872644a369a9422738",
"TT_bitcoin-test_op_return.py::test_opreturn": "870cb6fa52df98754e54e7191dd66a1009890880b42846234ce332613205be91",
"TT_bitcoin-test_op_return.py::test_opreturn_address": "1c100ce4b7c1e47e72428f390de0846c1ff933e9f07894872644a369a9422738",
"TT_bitcoin-test_peercoin.py::test_timestamp_included": "648edcbafd3a27b8ed36a2f4314de029d7a821ce6670ca2f6629eb8fb450700f",
"TT_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "f51bf2a826bf2ae791296e3417ce9ee9b807fc9d3bd692293d29ec6c3f200a1c",
"TT_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "9947c715ee1231b02dad2d0c741960c041463b7436438632d6beec8770062af5",
"TT_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "a74c0ed4d4ad2804093ebdac4c0fd354a152f5261893b0d7e3dccbb49ce390b3",
"TT_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "a74c0ed4d4ad2804093ebdac4c0fd354a152f5261893b0d7e3dccbb49ce390b3",
"TT_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "220eb73b788c8caf51dd5eb204b53235f9c164e54682a6ff93dec54d119b04d1",
"TT_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "d81c987c98f00a8482a5adfc8dc187a77264d086ae0a8d00543afe0c6218848a",
"TT_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "d81c987c98f00a8482a5adfc8dc187a77264d086ae0a8d00543afe0c6218848a",
"TT_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "da070d42b59f3a64a303a33ea9358d5b1254293835101ca8470bec5638c5be43",
"TT_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "95123fab2c4d8e3e328ed3b521a0f2ba40aa750d26db9fd5aed223bee7c1b624",
"TT_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "d81c987c98f00a8482a5adfc8dc187a77264d086ae0a8d00543afe0c6218848a",
"TT_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "d81c987c98f00a8482a5adfc8dc187a77264d086ae0a8d00543afe0c6218848a",
"TT_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "d81c987c98f00a8482a5adfc8dc187a77264d086ae0a8d00543afe0c6218848a",
"TT_bitcoin-test_op_return.py::test_nonzero_opreturn": "2f4ce27cb15b1188099e005499209e19ddc34187555600842d368f69c59448f1",
"TT_bitcoin-test_op_return.py::test_opreturn": "4a0ae478adfe6c8c1c64a56cac944d6c6182f5351bd17b0d701175d99c321bde",
"TT_bitcoin-test_op_return.py::test_opreturn_address": "2f4ce27cb15b1188099e005499209e19ddc34187555600842d368f69c59448f1",
"TT_bitcoin-test_peercoin.py::test_timestamp_included": "2a4ce745ab43fa137a57cf6da9441711c8899a2c7eab7a9e25b283b53747a908",
"TT_bitcoin-test_peercoin.py::test_timestamp_missing": "c09de07fbbf1e047442180e2facb5482d06a1a428891b875b7dd93c9e4704ae1",
"TT_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "3d1cb78590e69c5772d21405fc3f904730862b3a47b7762596be66fcede52c7c",
"TT_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "a1d21219b7c39acdb22f626b8e26c23c4d8a35189a6aaba01f108c5a5ec9f209",
"TT_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "4c41515a7f5fe9ffd5805ed060cb9e3ca8e578c92fefa79479df738ca1636235",
"TT_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "4c41515a7f5fe9ffd5805ed060cb9e3ca8e578c92fefa79479df738ca1636235",
"TT_bitcoin-test_signmessage.py::test_signmessage[bcash]": "096a2d5f0c75af22be673fd1550e86987a61bb348b0102eec4913fe9cc8fbcf7",
@ -866,144 +867,144 @@
"TT_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "4ac1d8e2491164d442b700ea65e430867d74a941ac0d0dc8d4f51f4494fd0bb0",
"TT_bitcoin-test_signmessage.py::test_signmessage_pagination_trailing_newline": "3ecd60468981b8c59cae21ae1189ad42b9d69b87e86c17e51b40185e31a5c52d",
"TT_bitcoin-test_signmessage.py::test_signmessage_path_warning": "2c8369a05493ccdd6a368f3428050f22fc5aa42cf5c34e4995c47c3c7bf764fc",
"TT_bitcoin-test_signtx.py::test_attack_change_input_address": "9ceadd6997aed08445e9878a6ec657ca6aaa7f765296e423889afbc1ce2ebc70",
"TT_bitcoin-test_signtx.py::test_attack_change_outputs": "bee8876d696520edaa48847d062e0707576d9e3b14f3c0289ec0b5ecdba2c93f",
"TT_bitcoin-test_signtx.py::test_attack_modify_change_address": "0ba8136fb2078c08f1059ad099fe2ca69a49d76c8aa846367b605f9f42493663",
"TT_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "0ba8136fb2078c08f1059ad099fe2ca69a49d76c8aa846367b605f9f42493663",
"TT_bitcoin-test_signtx.py::test_fee_high_hardfail": "d3eb72c019aa6394f2eda31a04ee17dcfadb412fc8ef036a9e0be42cb7c84f42",
"TT_bitcoin-test_signtx.py::test_fee_high_warning": "994effa78332e480271a57f951c68cd1b0d88874de6d169ccd6adc1e310a180f",
"TT_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "1c100ce4b7c1e47e72428f390de0846c1ff933e9f07894872644a369a9422738",
"TT_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "1c100ce4b7c1e47e72428f390de0846c1ff933e9f07894872644a369a9422738",
"TT_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "1c100ce4b7c1e47e72428f390de0846c1ff933e9f07894872644a369a9422738",
"TT_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "1c100ce4b7c1e47e72428f390de0846c1ff933e9f07894872644a369a9422738",
"TT_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "4e31e5f4598791802e40708adda1a2c34b7ab8231feafe99e46b17600ff3d4bc",
"TT_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "dbb82aa1fb38ccac0cf3b44a6f8b5b17872ec4dd4c2e4eaefa5179979f2ee867",
"TT_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "dad909c8f1ba3eaafde963dfff56756f860509f9d22d89ff3551a6934dce96b6",
"TT_bitcoin-test_signtx.py::test_lock_time_blockheight": "dbb82aa1fb38ccac0cf3b44a6f8b5b17872ec4dd4c2e4eaefa5179979f2ee867",
"TT_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "dad909c8f1ba3eaafde963dfff56756f860509f9d22d89ff3551a6934dce96b6",
"TT_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "d5ca55c91edc5a6c08565d2961d3b1597bdbc01fda5cb9f097484f19e99ca978",
"TT_bitcoin-test_signtx.py::test_lots_of_change": "1ece8f608dbdebdda95a448c7baba7c6c72e35a219dae60655e7312497cd98e7",
"TT_bitcoin-test_signtx.py::test_lots_of_inputs": "66318a6e48ef0ca2cf06ea1512bea3461bd5e5d8487183f2b756997ae8d6e857",
"TT_bitcoin-test_signtx.py::test_lots_of_outputs": "6ab1c0fc57839bbf2f1d25ddbbd27e99cd0f713a184fc703b9c6ec3c8734a6cb",
"TT_bitcoin-test_signtx.py::test_not_enough_funds": "615ee88f8293754c8c58d2ce021d534045e8583628e8270baf41e7124c29c4cb",
"TT_bitcoin-test_signtx.py::test_not_enough_vouts": "e3997702eceed8e0f0807104e301e03630d0cbdc109d09dfa99a13c7f32825c4",
"TT_bitcoin-test_signtx.py::test_one_one_fee": "f227fdd9ff1c5a266ad6aa876321325cda3c8be1939c757b4c67dd7d5467c9cf",
"TT_bitcoin-test_signtx.py::test_one_three_fee": "7b0f4b0308604e3eb8eebf83a3c5ae2be4a382f53ee86677a4cf13313befea03",
"TT_bitcoin-test_signtx.py::test_one_two_fee": "edb48791ac8685a63288dea53e80d4af7fbeee99921514cb528676811f0e4f8e",
"TT_bitcoin-test_signtx.py::test_p2sh": "912e70232f20d358ea9a7d6fa585251c3887c402929e305569b2e94ec0e667e5",
"TT_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "279776ffe9f9ebc4f3b354c5c69b97d31817b43ad6b1dba67a44c791cd6d6f24",
"TT_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "279776ffe9f9ebc4f3b354c5c69b97d31817b43ad6b1dba67a44c791cd6d6f24",
"TT_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "279776ffe9f9ebc4f3b354c5c69b97d31817b43ad6b1dba67a44c791cd6d6f24",
"TT_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "279776ffe9f9ebc4f3b354c5c69b97d31817b43ad6b1dba67a44c791cd6d6f24",
"TT_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "279776ffe9f9ebc4f3b354c5c69b97d31817b43ad6b1dba67a44c791cd6d6f24",
"TT_bitcoin-test_signtx.py::test_attack_change_input_address": "4c8b0a21771c7141eb8d9af6c71dcee9da417570e5842bf6a410f32521eee868",
"TT_bitcoin-test_signtx.py::test_attack_change_outputs": "f081488f69d7ffd97079e65ae8bd64475d43ecdbf4da70ca16f0cac12ddb7094",
"TT_bitcoin-test_signtx.py::test_attack_modify_change_address": "287109384810cabb7c28adb7ddb4aa3ce28a410ae5cc959d62ad93624f73dbe5",
"TT_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "287109384810cabb7c28adb7ddb4aa3ce28a410ae5cc959d62ad93624f73dbe5",
"TT_bitcoin-test_signtx.py::test_fee_high_hardfail": "8ec1eefccd3e616ae07753e038c70323a03de323664cc87139ac4e3b5ad7d9b6",
"TT_bitcoin-test_signtx.py::test_fee_high_warning": "fcef68718fa6b1243e7f2e7a2d61f3d14756980c1f0f44eb53bf21530bcdd436",
"TT_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "2f4ce27cb15b1188099e005499209e19ddc34187555600842d368f69c59448f1",
"TT_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "2f4ce27cb15b1188099e005499209e19ddc34187555600842d368f69c59448f1",
"TT_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "2f4ce27cb15b1188099e005499209e19ddc34187555600842d368f69c59448f1",
"TT_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "2f4ce27cb15b1188099e005499209e19ddc34187555600842d368f69c59448f1",
"TT_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "f29e8db0876f867070e08fd2dbbee3f09d3e1c4f2f2f6a6f72dc7b5c3bfd95fa",
"TT_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "831a42db4e87b776bba0842d7c94347e41fc8b6a4fe4192bc5060b2a9464ab80",
"TT_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "b0cc567cd0322883ab69445d116562cb415576c815e02e490fcabda42cb497a8",
"TT_bitcoin-test_signtx.py::test_lock_time_blockheight": "831a42db4e87b776bba0842d7c94347e41fc8b6a4fe4192bc5060b2a9464ab80",
"TT_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "b0cc567cd0322883ab69445d116562cb415576c815e02e490fcabda42cb497a8",
"TT_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "3ca6dd6fd502a8972df731badf131f66f3dd2e13be72f46e66465ecab44b5705",
"TT_bitcoin-test_signtx.py::test_lots_of_change": "45671814b0374f4636e36ea9570205bba926357cb38bdf9f4a1ad7b0c9e6d009",
"TT_bitcoin-test_signtx.py::test_lots_of_inputs": "37d82299f8242edae674cf79ddbfc873c5f8d0c64c11c3bf6cbb7f881da8bace",
"TT_bitcoin-test_signtx.py::test_lots_of_outputs": "15aced0e211fa1cbdb3f2b6c4513748049c94dded816a3c7eed833650ccbb7ee",
"TT_bitcoin-test_signtx.py::test_not_enough_funds": "2d40ece741bda82c2b78f05832e30244f29753b78e030ce599faa74b80b5b2f7",
"TT_bitcoin-test_signtx.py::test_not_enough_vouts": "3eeab480843b766d4c0748b92f9e001b759fecfc81adae5a4a1d6deab41c6f9f",
"TT_bitcoin-test_signtx.py::test_one_one_fee": "ac51cff6c69149abdaaabecfed9d27df996e4237f57870563aa4b4e516513535",
"TT_bitcoin-test_signtx.py::test_one_three_fee": "f7fc5094e9fac2aba50269846deee6107de8ca1e1c67e907786b7d218affb279",
"TT_bitcoin-test_signtx.py::test_one_two_fee": "e1b2e3758c58e7c014d54639d08e64881242c9b8476151ea150a442560454901",
"TT_bitcoin-test_signtx.py::test_p2sh": "760ef7b2304613be4ce1317b06ad8cc13b0baa45322e925c61b70b2ac5a7b446",
"TT_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "44bd3a6cfd533d5682f44bd4f4f9c19bec78392c22152e3c4358f8dc5c9c556b",
"TT_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "44bd3a6cfd533d5682f44bd4f4f9c19bec78392c22152e3c4358f8dc5c9c556b",
"TT_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "44bd3a6cfd533d5682f44bd4f4f9c19bec78392c22152e3c4358f8dc5c9c556b",
"TT_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "44bd3a6cfd533d5682f44bd4f4f9c19bec78392c22152e3c4358f8dc5c9c556b",
"TT_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "44bd3a6cfd533d5682f44bd4f4f9c19bec78392c22152e3c4358f8dc5c9c556b",
"TT_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "c09de07fbbf1e047442180e2facb5482d06a1a428891b875b7dd93c9e4704ae1",
"TT_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "c09de07fbbf1e047442180e2facb5482d06a1a428891b875b7dd93c9e4704ae1",
"TT_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "c09de07fbbf1e047442180e2facb5482d06a1a428891b875b7dd93c9e4704ae1",
"TT_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "c09de07fbbf1e047442180e2facb5482d06a1a428891b875b7dd93c9e4704ae1",
"TT_bitcoin-test_signtx.py::test_spend_coinbase": "5eb21da7f0df53e1cb91090d6cb199e01bb03facde95e57ae3d8aa3df9da3ca4",
"TT_bitcoin-test_signtx.py::test_testnet_big_amount": "66bc8b4f94383017a6c348ee7efcc6c82e4703ff3542cdaa46fd578adee2d9f2",
"TT_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "3dcebbed8d63089624e19d859a6acfb2aca368d03797144873b4206b5d82b5f8",
"TT_bitcoin-test_signtx.py::test_testnet_one_two_fee": "0ba8136fb2078c08f1059ad099fe2ca69a49d76c8aa846367b605f9f42493663",
"TT_bitcoin-test_signtx.py::test_two_changes": "0b9072f425c58bb12f7eb96bf99da624fc1fb0bca4927385489fe93717c52b1b",
"TT_bitcoin-test_signtx.py::test_two_two": "422ee61e55fb4132d4900f9ac10ea27e45b56e1f36b7df533b320f86d7ca886f",
"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "f227fdd9ff1c5a266ad6aa876321325cda3c8be1939c757b4c67dd7d5467c9cf",
"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "54bec4d63f211bfe76c89e48ddee5ad277af3e9b4b2d28c1e42ae4144453537b",
"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "e56cc3ebebe34637fdfa543f422bfe964b2d695c0bbac1c11ae04327772f54ba",
"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "30dd433c586eef18e5e4134f3243ad8222b2d0ea093b18559043ba5e756aed33",
"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "f227fdd9ff1c5a266ad6aa876321325cda3c8be1939c757b4c67dd7d5467c9cf",
"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "6be7e3871f03fe7c8c34b2d20a43a2650595c938e7ccc4169f173bef3de677d8",
"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "00e46e724ada6a9622868fd0bc7e493587b3fd280b10423a708684483a26d7ad",
"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "2950f443980e934672fcc11d9be5128282446466e3d0b6d0b1a754cf16295721",
"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "99189ac7a561ded344b460216680d326bb0486dfe27adf40b8c570dd9e0dbdb9",
"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "6be7e3871f03fe7c8c34b2d20a43a2650595c938e7ccc4169f173bef3de677d8",
"TT_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "8dd8089941ceb0d82c9425c69d54240f99e3ae7932ef24acd49313d28389b683",
"TT_bitcoin-test_signtx.py::test_spend_coinbase": "a479805cd7cdf662d608efe1d9be381871400f0cbe18ecd61d8dcf06c0d9368d",
"TT_bitcoin-test_signtx.py::test_testnet_big_amount": "3e228386362f4cce36333866eed8c6180c85af5cd3014e38ced4b91a8d0a4ff5",
"TT_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "1f75a5f02cf68c7a9fe8c2ceacd803435cccbd21d1995b1ec92e05b502efeed1",
"TT_bitcoin-test_signtx.py::test_testnet_one_two_fee": "287109384810cabb7c28adb7ddb4aa3ce28a410ae5cc959d62ad93624f73dbe5",
"TT_bitcoin-test_signtx.py::test_two_changes": "28967a67bbe4fee263aebb2d2b11eeab55ff28017b59e01de44123f2521550de",
"TT_bitcoin-test_signtx.py::test_two_two": "f26bff4732775e2172d8bf808940ff81c5cf64b40c40acbcd7423ecdd7e52557",
"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "ac51cff6c69149abdaaabecfed9d27df996e4237f57870563aa4b4e516513535",
"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "a8ecc8b689d9b5d6c15ae894b82fc654a6e7ba311709d14375906f6a5f237976",
"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "14313301c554e47b405d8e9bbe15281e4c3fdd8864d679aae140dccd0e80722b",
"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "48db1695c971530094ffba6fa875c125db8d5c11a43a7bd308ac3e7082b47ec0",
"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "ac51cff6c69149abdaaabecfed9d27df996e4237f57870563aa4b4e516513535",
"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "f7f52edeb114096c7db09a4754193ed022413eedec16ead8c2cbcc8f46ce0ef7",
"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "9d226a7ba5cd32725610125046c9b545b381a6861c99b386fba42de25e4e8cf7",
"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "3a00cd4c12f37a50c813b5e71822ad341fa4248330a5b205cc3786b2eebb5e01",
"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "e3300d92255e187d777521fe33e84313feb02db47cc3df0fa539fa78e032efc8",
"TT_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "f7f52edeb114096c7db09a4754193ed022413eedec16ead8c2cbcc8f46ce0ef7",
"TT_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "2b82b72b0b98bcdf89835c844883831e4c02f7e454f419c824de0e2a1ba8d08c",
"TT_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "c09de07fbbf1e047442180e2facb5482d06a1a428891b875b7dd93c9e4704ae1",
"TT_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "c714c4a4ea8b98dfbdd8185925adafbafc62570f415688972d6003a19d7b4d23",
"TT_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "57938429cc9af038841d10303300ad09db765f2b56fc36bd7331fa148ed2f361",
"TT_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "d6723e2243bc38231ec4eb9ed63afd39610460c0d859b4c576b12db1f7915d02",
"TT_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "a59d4430bf2e3be91ee7810e93b9a0550b694a59e054ab8c7c5ec40bc7b09e5b",
"TT_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "8313bff77e41aef142c3b25818ab58dcc7e9d658d38e2e8fc50629ebbe05869b",
"TT_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "cc9b10f8cf136cae5b500f605f7a2fb5b725c8a34fbee2e6d6b8a7792ab8668f",
"TT_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "03c36e192bc278e8c033a47fb168ea93a35de6055f6f1a52277eecef26e27e52",
"TT_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "a1b26afe79dc892adb4b9cdbdae4ef7c8c3d3eeb459082e5cd79392f48c28106",
"TT_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "a34ed066862ffc9288b1d181ddc0f4996acdf362b6b15776d5857641a34ec006",
"TT_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "4152594dc357c64a682af26a3c9c750dcd15b944bcc0a869e01fd2f2a06e8678",
"TT_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "c09de07fbbf1e047442180e2facb5482d06a1a428891b875b7dd93c9e4704ae1",
"TT_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "4608478b1d61415cf0ec93a0ea4397c35d17a91d4b6d25e9c024b77330e398eb",
"TT_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "ca3bdc82d0ddd668d50635ddbc91019095311e0c165094a89b9ae6eda53abdd6",
"TT_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "f5f2f9bc3c50908ce41046096586387b0db86796c54cb70216e4fedbb68995c6",
"TT_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "cd1a603df8ce086697c290aa63b9d922f8360ee5b34ff0dbe5eec4f9c4dd8636",
"TT_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "f58bd4cdcf02be59294ac238913bbd4068f728ac9c2d2adb5cd03cced413ba18",
"TT_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "1c100ce4b7c1e47e72428f390de0846c1ff933e9f07894872644a369a9422738",
"TT_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "1c100ce4b7c1e47e72428f390de0846c1ff933e9f07894872644a369a9422738",
"TT_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "35765c453a575f613f31270c512b788303397039a5b2e65b62406012712999b8",
"TT_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "b26a5148b20ec841a8682ceae46277d6901a17b90235d010c0d9d4376ad16428",
"TT_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "46e8ee40952b104555a1db7757c3b57991ad5d72893c5b15136f3dd322946df7",
"TT_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "df1de5d365652b452cb8f671119d71024ef199849b7c245253c1884e3aae0a4c",
"TT_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "46e8ee40952b104555a1db7757c3b57991ad5d72893c5b15136f3dd322946df7",
"TT_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "e40b2422bfada0bfe14c8d33a7f5f2e1ba2093c5d7270c8b987a6856e76ffbcb",
"TT_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "1d0da9c044d6aa5523f94e91e882f8839457d51097093fc2e5938285341a1949",
"TT_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_purchase": "1c100ce4b7c1e47e72428f390de0846c1ff933e9f07894872644a369a9422738",
"TT_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "1c100ce4b7c1e47e72428f390de0846c1ff933e9f07894872644a369a9422738",
"TT_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "887f26b4ddbb365d903b27fb9c2fab54760b2ba6f5f5252a82d8e5b4fc611fbf",
"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "f59fb2256eab6a23e9d1ac3e0226da69798e255d97d2e59161bec9d0253d9936",
"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "8ddeb8d1bd29e033a87516c98cfc5b21992430ebd9fe3cb6f725b5ad86bf7b0a",
"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "c88b654d2e632b56728aeffcad018530237fcdb6e51e6ddcea30bc9167ed630d",
"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out0]": "1115ce17c5a51a57fc4ca1a4ce599d9ee8281f5d7f7913f3d3290ceb14cf7898",
"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "d84df1ee9d39aa1919ea57fe6734f848e93f157a1aeb8c69a9b3cbd1e5bba9bd",
"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out1]": "44703c8dc2ded69d704d7ae2ab65a905b0c41b4e09f71c33e1294ad794a4a15d",
"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "b641cbb16c414081f7f9e8fc6d813175aceaff4439fb089917aef4a489e1da80",
"TT_bitcoin-test_signtx_payreq.py::test_payment_request_details": "0ed8ad1c727cca770469b4984d2a183e9c218ee7f594e32c1c0cb6889454105d",
"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "1c100ce4b7c1e47e72428f390de0846c1ff933e9f07894872644a369a9422738",
"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "1c100ce4b7c1e47e72428f390de0846c1ff933e9f07894872644a369a9422738",
"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "1c100ce4b7c1e47e72428f390de0846c1ff933e9f07894872644a369a9422738",
"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "1c100ce4b7c1e47e72428f390de0846c1ff933e9f07894872644a369a9422738",
"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "b3218467fd32af13d056ecaf1252cfd280aee25e9319dffb3e86e65c0e6b3a15",
"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "b3218467fd32af13d056ecaf1252cfd280aee25e9319dffb3e86e65c0e6b3a15",
"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "b3218467fd32af13d056ecaf1252cfd280aee25e9319dffb3e86e65c0e6b3a15",
"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "b3218467fd32af13d056ecaf1252cfd280aee25e9319dffb3e86e65c0e6b3a15",
"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "8bd57f4a2f7ebb388810b224cd17f00a248894e1e4926984e7453161fd044a9e",
"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "8bd57f4a2f7ebb388810b224cd17f00a248894e1e4926984e7453161fd044a9e",
"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "8bd57f4a2f7ebb388810b224cd17f00a248894e1e4926984e7453161fd044a9e",
"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "8bd57f4a2f7ebb388810b224cd17f00a248894e1e4926984e7453161fd044a9e",
"TT_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "1c100ce4b7c1e47e72428f390de0846c1ff933e9f07894872644a369a9422738",
"TT_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "1c100ce4b7c1e47e72428f390de0846c1ff933e9f07894872644a369a9422738",
"TT_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "1c100ce4b7c1e47e72428f390de0846c1ff933e9f07894872644a369a9422738",
"TT_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "04ba3e05862eef616957f9f0c67f7a1d841a3bc7278c5fd999dfba4ebeee5314",
"TT_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "cfd258bfda629705ce055428b7a6d296d4a96eccf26dee516de2a40efbbb6937",
"TT_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "5c6b7cf766476c68455bbbabf8cfff24ac053efca9d2d43d7e47ad241436bea0",
"TT_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "5c6b7cf766476c68455bbbabf8cfff24ac053efca9d2d43d7e47ad241436bea0",
"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "ad3e62fe3fffae576b98ebafaca19f870271a4af0f47791f5061a97398d60bdf",
"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "2e1986726c176efa569ad7a2b5b81b4ee1dea6f8ddf87c15789df81909a5ba2b",
"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "93bd24bb6fc24c8bb43222d83536ee3557a661635eac6b23d898f93e7329cbba",
"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "ad3e62fe3fffae576b98ebafaca19f870271a4af0f47791f5061a97398d60bdf",
"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "a65bb3df6ba4f68c6060efe5eef5fd1e66d6e9457becf6c4e8112fec028d153b",
"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "da3ec44de0435cca3828752a0ba44483b2f087d1ae02c99530be4bcd01b80e57",
"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "da3ec44de0435cca3828752a0ba44483b2f087d1ae02c99530be4bcd01b80e57",
"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "da3ec44de0435cca3828752a0ba44483b2f087d1ae02c99530be4bcd01b80e57",
"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "dd877653d915f04f7da7370ebe3b166773eb8c04ba50f332b2dbbb307907d48b",
"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "da3ec44de0435cca3828752a0ba44483b2f087d1ae02c99530be4bcd01b80e57",
"TT_bitcoin-test_signtx_replacement.py::test_tx_meld": "8c7644e2b3622cde70069716a9669772ab2add220204bd4e468a84fb9fd75c89",
"TT_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "f2096a8da153a61cef11be2e5935b20d8dc94c15ea14fad9bce2e4eefaf6ea9d",
"TT_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "5d5cd7ad1a8bcefbd0f9b82fd0223ad63d6436c730e6c42be742bcaa00f9d508",
"TT_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "5627e49c098d18deccb59b74c1a8bc8e32eb36941f03c24cf3cd3b4d99b60d30",
"TT_bitcoin-test_signtx_segwit.py::test_send_p2sh": "18cefbb8625b157646c80546c599ca8d0f12a2cb096e7cf4f002de9a44021fbb",
"TT_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "025e46a381adbeaef4b6b7b86f8ef16c80760ad2371a92f4a85174548e3d9782",
"TT_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "9db6c35162b766dd828aa996473bfb07376a5d9705ac9de65d992d7a4a8108d3",
"TT_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "e0de5489dc73eeb177cc69024386a39812af9ba8fb3730384bed80f7fa76bb1c",
"TT_bitcoin-test_signtx_segwit_native.py::test_send_both": "3d2415f2175000db1b48e2f6b94a539dce9fe6f59ea626dd0f58726bb134a003",
"TT_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "a0ce76c011921a4c743e84f1feb65aff4fc026892d21e6b936858fcdcee25675",
"TT_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "08143b5a47b2c519e239cda6431a0b5e84fbc447e11f1151048aaf6ed62f1438",
"TT_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "e1e6d3e1f2c99838dabe637b52e00f2a1ad03371b7d99d49a5dba506b7712e18",
"TT_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "437e30f86f9af2865f5b504323235ffc7c7a4e62487e4044971a61d2603ddfdb",
"TT_bitcoin-test_signtx_segwit_native.py::test_send_native": "6be7e3871f03fe7c8c34b2d20a43a2650595c938e7ccc4169f173bef3de677d8",
"TT_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "79eb1830a852268418860175c9e4d7e710d37fc17233cbca0a64f319c2883f49",
"TT_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "c867407a437f21cdcb7fe963deb696fb0ef3e156b97e0c41f0b8c4dc5210965e",
"TT_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "14b3a2a82930d478cebd66a27ad632e5b331d339e591f28daf8d177af092e2d0",
"TT_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "2e444f1ac369e8c0dc3e634f7f535148f9de91721734ac83678aff27af816c48",
"TT_bitcoin-test_signtx_taproot.py::test_attack_script_type": "4b9c6147c3340b0a9e810990df7e8429d31b1925b35dfcb67025a2be31a945df",
"TT_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "1c100ce4b7c1e47e72428f390de0846c1ff933e9f07894872644a369a9422738",
"TT_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "1c100ce4b7c1e47e72428f390de0846c1ff933e9f07894872644a369a9422738",
"TT_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "1c100ce4b7c1e47e72428f390de0846c1ff933e9f07894872644a369a9422738",
"TT_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "1c100ce4b7c1e47e72428f390de0846c1ff933e9f07894872644a369a9422738",
"TT_bitcoin-test_signtx_taproot.py::test_send_mixed": "6e664f837b805f06a329810449af860fc247672bdc637ad67280041944af7b6b",
"TT_bitcoin-test_signtx_taproot.py::test_send_p2tr": "1c4df7e736815d063f729cab0e214fd0dac1e670f5471f7ee8cd30ac5b33e1b4",
"TT_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "6c09c8bed294c912e4f504ce9ec6d786ca933a6e652b288d9c2140ccbfbe83a3",
"TT_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "06d4094a9c00ad4d2bdbb735c5d5a2fef2699ff14370f0713b1fe0f604207a2a",
"TT_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "2f4ce27cb15b1188099e005499209e19ddc34187555600842d368f69c59448f1",
"TT_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "3b74434a1ac9d09f3b69cc550884045d01c052953d8b0c9104ac277877d0d679",
"TT_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "65b82c2725a5a7e7e34d77b61b5904e5575400f99c4c0a678502bb4d1d91c993",
"TT_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "cca98d2f9f922f362a7257d7bd2904dcd4b02030c80a74126e6cd57718df2d49",
"TT_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "2f4ce27cb15b1188099e005499209e19ddc34187555600842d368f69c59448f1",
"TT_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "2f4ce27cb15b1188099e005499209e19ddc34187555600842d368f69c59448f1",
"TT_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "1f8bb7df08d50b14e39991d9373e6aaf6a79f630c62a001d6096b3bfde0e73a7",
"TT_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "fc45b70974f42d3f4a5f2aeb4fdb52349a4266e86c5a909dae1a5702245c383c",
"TT_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "757c96d6add55da1af05d3bded30fef435e6fab3af5de9b527b21663944a3639",
"TT_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "dca292364a171956959f3ee13135da6c8749de9a53c7aeeb9d92382d88feab3c",
"TT_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "757c96d6add55da1af05d3bded30fef435e6fab3af5de9b527b21663944a3639",
"TT_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "266ce827b0001d49c9eb16f9249e08b24c22268a7a598560a28e63579679c31f",
"TT_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "5b71fe6336c37d6693b58aba3435b49116fdf84796958202edb3ccaea62afe5a",
"TT_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_purchase": "2f4ce27cb15b1188099e005499209e19ddc34187555600842d368f69c59448f1",
"TT_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "2f4ce27cb15b1188099e005499209e19ddc34187555600842d368f69c59448f1",
"TT_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "0ab16c6a749d4554d0a8d49e2c6378ff640bc2969977e86100619b40c7b90c0c",
"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "055c967d2cb61243c3b4bd6561744de12c3c306455143289cb7a8c2110845ad4",
"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "51944756afe60a54eca444d18005f2bf9e3b37183446384e90e442b2b063bc18",
"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "99cf90778973e3905761ea5d6342e9fb4339351dbc64a09a6b6f625bc1602bd3",
"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out0]": "3ea1cf1b2e9ea446b80385f0c5b1137998f5667d32361643c753b917ec431e0d",
"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "088b4057a7f9945fa2efa6cc4d7d8badc4e2425bdc784de67a4ce6aca71ce5b9",
"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out1]": "5630b7b6d480d9704b81b3b0e820040c73a81de1bd85bf8a3fe4fbd4520dba03",
"TT_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "a046bd1881273e2ca112dcc0b710800261122e5d79bb235ab5a2f8c9c058f49c",
"TT_bitcoin-test_signtx_payreq.py::test_payment_request_details": "0e3fa5cb1a082a1ebd0d820dbfa5d468852475cc3ed60bca9171b6bc33b5cc67",
"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "2f4ce27cb15b1188099e005499209e19ddc34187555600842d368f69c59448f1",
"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "2f4ce27cb15b1188099e005499209e19ddc34187555600842d368f69c59448f1",
"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "2f4ce27cb15b1188099e005499209e19ddc34187555600842d368f69c59448f1",
"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "2f4ce27cb15b1188099e005499209e19ddc34187555600842d368f69c59448f1",
"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "610f5ad4090bb5bc8f21238057825a8710d2a24efc92ac688c03dbb1dd84d512",
"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "610f5ad4090bb5bc8f21238057825a8710d2a24efc92ac688c03dbb1dd84d512",
"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "610f5ad4090bb5bc8f21238057825a8710d2a24efc92ac688c03dbb1dd84d512",
"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "610f5ad4090bb5bc8f21238057825a8710d2a24efc92ac688c03dbb1dd84d512",
"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "4a0622ab296de5a0c759a7f22769c9ac04bd55f8ee6cebc0ae07c77d74ba7014",
"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "4a0622ab296de5a0c759a7f22769c9ac04bd55f8ee6cebc0ae07c77d74ba7014",
"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "4a0622ab296de5a0c759a7f22769c9ac04bd55f8ee6cebc0ae07c77d74ba7014",
"TT_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "4a0622ab296de5a0c759a7f22769c9ac04bd55f8ee6cebc0ae07c77d74ba7014",
"TT_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "2f4ce27cb15b1188099e005499209e19ddc34187555600842d368f69c59448f1",
"TT_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "2f4ce27cb15b1188099e005499209e19ddc34187555600842d368f69c59448f1",
"TT_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "2f4ce27cb15b1188099e005499209e19ddc34187555600842d368f69c59448f1",
"TT_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "6681da4d70d43899fbf1cf6e8e4ed6abf3568dcf4231d556b50c9eaa2f783ac7",
"TT_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "94cd6139cdc60eb430753ead8c40892d9abb33c0255cbf39d5441839b70352b7",
"TT_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "9f40f71259a0012d6ecea803f8bee16208771a7934da263a3e5f7b3dda7b6809",
"TT_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "9f40f71259a0012d6ecea803f8bee16208771a7934da263a3e5f7b3dda7b6809",
"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "b9c548297f02d82cd07f8705d967aae8d12c7ca715f074b9db1d90e2409913ce",
"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "78351e4cbafc8b045af4285620f38d9563da5f0daeee13919ecd06584bbea339",
"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "e31170c94d25198ff2ed58fa02cac5c0de3441a33e5b659727f3513b79948a75",
"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "b9c548297f02d82cd07f8705d967aae8d12c7ca715f074b9db1d90e2409913ce",
"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "2793399f143cab86b0a8cc7009bc69380a0b87e626dc4c84d31044aee96a3735",
"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "d8070055da5c7e9feb2ea5a1c90379b9ad11fc37cfd31dd8f83a61006fb19dfa",
"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "d8070055da5c7e9feb2ea5a1c90379b9ad11fc37cfd31dd8f83a61006fb19dfa",
"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "d8070055da5c7e9feb2ea5a1c90379b9ad11fc37cfd31dd8f83a61006fb19dfa",
"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "d6cb5dbe5d76fd885b09084011bafea0891980867f7b9ac7bf24a3420e58ab66",
"TT_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "d8070055da5c7e9feb2ea5a1c90379b9ad11fc37cfd31dd8f83a61006fb19dfa",
"TT_bitcoin-test_signtx_replacement.py::test_tx_meld": "e0e8000d53e2779c52b1681c9bf56130c4fd39358402d97761bfad4420127ad2",
"TT_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "f693631c31c4200b91eaf06478b9d055e965f992d685144bb4109eff8167e80c",
"TT_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "03f6d3da304efa63cf8b2e4a89be3dfa5cd42dd1db0bb60f3dfb11d22d1dad97",
"TT_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "4f03dad89635e8cf626a79196409084cb65f5b4bc2e84531b36d65462b95358b",
"TT_bitcoin-test_signtx_segwit.py::test_send_p2sh": "16635a0d68582caaa8a133942ba2e9a5568ab7f5a23053a2264cae32f649430f",
"TT_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "3d1d575e2b33c54a9f1fe053e16a24db37462183205b0599b7a1716b731611a7",
"TT_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "a49e5750166d9241aa4216cbd71f437ec02b1d8a6c4310aae924a940d593b81c",
"TT_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "74543b19824b1dcb400fec50176e1648544f39006246a232809d88ad5aee3cbc",
"TT_bitcoin-test_signtx_segwit_native.py::test_send_both": "1a868d2dc43a63b00714239a72ecb7844c5b75aba71f23b31fab3f8259937e41",
"TT_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "8b9562d71e7176f296051235a8b3055a8a800e8a4bf49b5648c7bd216dd9aac0",
"TT_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "f63d1c961a2740284f8fcbf4ba1bdb5fb92cf3cb60a3789114923be0f2b230fb",
"TT_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "52ae7544005a64b200bc204610398710d9b347f6846f1926a9539d13df2e4cb2",
"TT_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "86fe20780a2685652ac5c084cbf2d185e5ad0eb1753927c82d5d392b0ee5b693",
"TT_bitcoin-test_signtx_segwit_native.py::test_send_native": "f7f52edeb114096c7db09a4754193ed022413eedec16ead8c2cbcc8f46ce0ef7",
"TT_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "41d196a0c71907a8f3c85fea019fa994a1e0c86236f134cde9e23637b8d78611",
"TT_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "3aea5b82cd046eb946036000a83d66ac5340bc665a022f5db1b19d64abeb8883",
"TT_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "6c7d310667c74ddc121305533487bdf7a2a85d04f3d99313aebd150ff9a7338d",
"TT_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "b10f36bf2a3b0aa1c93e47bbfe2e8e75eb38dc3c4b89dc5bd666b0dafe837724",
"TT_bitcoin-test_signtx_taproot.py::test_attack_script_type": "144715780a0689dca891d67250155b09c758390ba3e0c2367eb811e8b33fbc5b",
"TT_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "2f4ce27cb15b1188099e005499209e19ddc34187555600842d368f69c59448f1",
"TT_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "2f4ce27cb15b1188099e005499209e19ddc34187555600842d368f69c59448f1",
"TT_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "2f4ce27cb15b1188099e005499209e19ddc34187555600842d368f69c59448f1",
"TT_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "2f4ce27cb15b1188099e005499209e19ddc34187555600842d368f69c59448f1",
"TT_bitcoin-test_signtx_taproot.py::test_send_mixed": "2df8078906e3d573e5446df981af8ee8a916204eb5abe077d71b89bcf214c85b",
"TT_bitcoin-test_signtx_taproot.py::test_send_p2tr": "98d3f52d2fa1b084a17c08ebb1d2a3f1e8531c946be859db16f4e9b806fc8370",
"TT_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "f4f9bb6eb58506646ec04d483872b7010400e3c98e5d2a4ebbff8ae6b8efb01a",
"TT_bitcoin-test_verifymessage.py::test_message_grs": "efba87e334f62f3ee18ce6ac2f6e8ba3738fc53434ad8d4027643d2047945620",
"TT_bitcoin-test_verifymessage.py::test_message_long": "ddd376c7ce7731d990f231a81532dfa13d6a03bc88e5a77278d6eef514b496a2",
"TT_bitcoin-test_verifymessage.py::test_message_testnet": "af4598881e7afbfb81313622d7186cd90e8bdcfdada4a0c0f31ca5f0af5f8d5d",
@ -1019,10 +1020,10 @@
"TT_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "f36a0eaed6ff6d64c37fc147a05ec24637aea9a81360d5ba14d6c87db35a6e3a",
"TT_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "912a94f466108c9d6b67a1cc9aa8b6a2a7d29ab9003c39e9f70aa10b0ff7b5e8",
"TT_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "faf3fddc43290a424243562f3ed7598d5127b71b1680aee40e56f0b01d22664a",
"TT_bitcoin-test_zcash.py::test_external_presigned": "08a22a49793201f8387a085a554f006387d1df1b37ed8a34bef7aa79b363b44b",
"TT_bitcoin-test_zcash.py::test_one_one_fee_sapling": "ad8453495a316a0f01126bf882a5502f51e1ee622e56c7c175ba74fdba5dbc51",
"TT_bitcoin-test_zcash.py::test_spend_old_versions": "a58d7407f20caf14f9075618d09e5329eff592e9e432964487fe90954b9c2b21",
"TT_bitcoin-test_zcash.py::test_v3_not_supported": "1c100ce4b7c1e47e72428f390de0846c1ff933e9f07894872644a369a9422738",
"TT_bitcoin-test_zcash.py::test_external_presigned": "e46a3f36cd8455b265e90f7031c7e17a6b48bdfd5e0d21aafbea8783be76ef2e",
"TT_bitcoin-test_zcash.py::test_one_one_fee_sapling": "9e7d4fdccda37917aaa1b4b1acee68f934fa01f44c4aeeb2664446a66d35d34f",
"TT_bitcoin-test_zcash.py::test_spend_old_versions": "4cd417416e3b8ac366194ae4b09f1bde69a73d50394164c3b5c1c4bde3831526",
"TT_bitcoin-test_zcash.py::test_v3_not_supported": "c09de07fbbf1e047442180e2facb5482d06a1a428891b875b7dd93c9e4704ae1",
"TT_bitcoin-test_zcash.py::test_version_group_id_missing": "c09de07fbbf1e047442180e2facb5482d06a1a428891b875b7dd93c9e4704ae1",
"TT_cardano-test_address_public_key.py::test_cardano_get_address[icarus-derivation]": "61bf57f65a018283d5e314f95f5580fe751eb3f09cd175a8f9e47f677419cbf2",
"TT_cardano-test_address_public_key.py::test_cardano_get_address[icarus-trezor-derivation]": "d2b12b3a3fe426785e5dad64d7b48e8e266983011f8a837abccc2f4a8f9c43e6",
@ -1622,7 +1623,7 @@
"TT_test_protection_levels.py::test_passphrase_reporting[True]": "d9e9bdb39d15d6737ed6234f16c36bb7ad95ca54067ff8f10cffccaa3caa96cb",
"TT_test_protection_levels.py::test_ping": "5551c263e8e09c8ae683f4dec3dd9d7ecc05ebbd3f2556604b27479c8f1fbc82",
"TT_test_protection_levels.py::test_sign_message": "045d2faee841a79441683a6fdc912c3c69ecc0289b6c9801580942d47af7f0de",
"TT_test_protection_levels.py::test_signtx": "9ade9ed2b2a02f31e116bd01e3b6213420912c4d4635ce8af85c3d3052270766",
"TT_test_protection_levels.py::test_signtx": "4e25293cf3860a06e2e858272450fc747f1a11c8c2426c0028c38b7ce97b5856",
"TT_test_protection_levels.py::test_unlocked": "f2be4c8c13c6a201770966438ffa9bcfe0eb031683920f93a55fa92921a28b51",
"TT_test_protection_levels.py::test_verify_message_t2": "0cf43552a15684fbf506cd56871ca07795f62ec5f57176705aa968c9f97ef3d8",
"TT_test_protection_levels.py::test_wipe_device": "a30d958dda50b06e8bfc1c861c0ff2c0eb4acd0656bdf1dcd6474660882e3cd5",
@ -1664,14 +1665,14 @@
"TT_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "cadca03c9ce7db592663bc0224364c0d4bf99fcae60e0982b4a844ce629e500c",
"TT_webauthn-test_msg_webauthn.py::test_add_remove": "3219e5ad2719319e74b5c75b1096ca7e3d30467215c15f57e57e475afdaa188f",
"TT_webauthn-test_u2f_counter.py::test_u2f_counter": "19f77e2d284431da5fadac938f5822c1a6b17c07ee6c801085efd84974f3163f",
"TT_zcash-test_sign_tx.py::test_external_presigned": "08a22a49793201f8387a085a554f006387d1df1b37ed8a34bef7aa79b363b44b",
"TT_zcash-test_sign_tx.py::test_one_two": "c9e1737f4637c6f84f1c3d987b0b8f1b43a530275d0bc57239b1e180b3209809",
"TT_zcash-test_sign_tx.py::test_refuse_replacement_tx": "1c100ce4b7c1e47e72428f390de0846c1ff933e9f07894872644a369a9422738",
"TT_zcash-test_sign_tx.py::test_send_to_multisig": "38d0fc457944c0b00a32f13dd979712aa7a929adfda3fdc37e88f6db94ec4873",
"TT_zcash-test_sign_tx.py::test_spend_multisig": "5791832c8a887dbd217a0079ad0c610f459695cdd9119a54dfa7b2d93ec9efc8",
"TT_zcash-test_sign_tx.py::test_spend_v4_input": "3ced9fa75f7be7ee2314bff9c4244adf0048837c5d778e221c65d4a6587645ae",
"TT_zcash-test_sign_tx.py::test_spend_v5_input": "4eb400c6524af00b7fabf707a66345380356bb22c055ef7548f9417dea8a6e4f",
"TT_zcash-test_sign_tx.py::test_unified_address": "6e82a3afa1bb20a5c7dfdf744a3bdec3c2d7413332add2285639979b6f0816f6",
"TT_zcash-test_sign_tx.py::test_external_presigned": "e46a3f36cd8455b265e90f7031c7e17a6b48bdfd5e0d21aafbea8783be76ef2e",
"TT_zcash-test_sign_tx.py::test_one_two": "7aeeb24caba9d74015bb3ba49c8de6b82e967e21c2ecf4d3be4d3926f67ef8e7",
"TT_zcash-test_sign_tx.py::test_refuse_replacement_tx": "2f4ce27cb15b1188099e005499209e19ddc34187555600842d368f69c59448f1",
"TT_zcash-test_sign_tx.py::test_send_to_multisig": "bedb30872fb21d6d59f966de9557ab232b2ce1ff968731e3d6610b637a52a709",
"TT_zcash-test_sign_tx.py::test_spend_multisig": "c279c721d2a0f1b5fd18be6872f45f0c4a79560a71d083bd3fb7ffac34873760",
"TT_zcash-test_sign_tx.py::test_spend_v4_input": "94aad064970fc337c2a0b61162ee858d1d6735834ca9e1c0eb0dc4a443ff294a",
"TT_zcash-test_sign_tx.py::test_spend_v5_input": "dac4a7441f8102dc9d39eb748516b93adb1c12c6554712e97df604db82e74994",
"TT_zcash-test_sign_tx.py::test_unified_address": "27924ef4e296805293684a047c6d36d716ca18fe2bda41a06394e2c6aa70e900",
"TT_zcash-test_sign_tx.py::test_version_group_id_missing": "c09de07fbbf1e047442180e2facb5482d06a1a428891b875b7dd93c9e4704ae1",
"TTui2_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "971ffb5a1a9a39e5308efd89f51be986e8143608d1c6638b1171c02011abb141",
"TTui2_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "2547b2dc528bc3090219f13286d832939f3a5a89c6f1f219a60658ba00b83bdd",

Loading…
Cancel
Save