1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2024-12-18 20:38:10 +00:00

feat(core/bitcoin): send BIP-380 descriptor in GetPublicKey response

This commit is contained in:
Martin Milata 2024-02-23 01:04:53 +01:00
parent 3f10a291b5
commit ae1f4cf5c9
5 changed files with 164 additions and 73 deletions

View File

@ -0,0 +1 @@
Send BIP-380 descriptor in GetPublicKey response.

View File

@ -1,6 +1,7 @@
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from trezor.crypto import bip32
from trezor.enums import InputScriptType
from trezor.messages import GetPublicKey, PublicKey
from trezor.protobuf import MessageType
@ -78,6 +79,9 @@ async def get_public_key(
chain_code=node.chain_code(),
public_key=pubkey,
)
descriptor = _xpub_descriptor(
node, xpub_magic, address_n, script_type, keychain.root_fingerprint()
)
if msg.show_display:
from trezor.ui.layouts import confirm_path_warning, show_pubkey
@ -98,10 +102,8 @@ async def get_public_key(
else:
account = f"{coin.coin_shortcut} {account_name}"
show_xpub = node_xpub
if script_type == InputScriptType.SPENDTAPROOT:
show_xpub = _xpub_descriptor(
node_xpub, address_n, script_type, node.fingerprint()
)
if script_type == InputScriptType.SPENDTAPROOT and descriptor is not None:
show_xpub = descriptor
await show_pubkey(
show_xpub,
"XPUB",
@ -115,24 +117,39 @@ async def get_public_key(
node=node_type,
xpub=node_xpub,
root_fingerprint=keychain.root_fingerprint(),
descriptor=descriptor,
)
def _xpub_descriptor(
node_xpub: str,
node: bip32.HDNode,
xpub_magic: int,
address_n: list[int],
script_type: InputScriptType,
fingerprint: int,
) -> str:
) -> str | None:
from trezor.enums import InputScriptType
from apps.common import paths
from .common import descriptor_checksum
if script_type != InputScriptType.SPENDTAPROOT:
raise ValueError("Unsupported script type.")
path = paths.address_n_to_str(address_n)
descriptor = f"tr([{fingerprint:08x}{path[1:]}]{node_xpub}/<0;1>/*)"
if script_type == InputScriptType.SPENDADDRESS:
fmt = "pkh({})"
elif script_type == InputScriptType.SPENDP2SHWITNESS:
fmt = "sh(wpkh({}))"
elif script_type == InputScriptType.SPENDWITNESS:
fmt = "wpkh({})"
elif script_type == InputScriptType.SPENDTAPROOT:
fmt = "tr({})"
else:
return None
# always ignore script-dependent xpub magic for descriptors
xpub = node.serialize_public(xpub_magic)
path = paths.address_n_to_str(address_n).replace("'", "h")
inner = f"[{fingerprint:08x}{path[1:]}]{xpub}/<0;1>/*"
descriptor = fmt.format(inner)
checksum = descriptor_checksum(descriptor)
return f"{descriptor}#{checksum}"

View File

@ -294,17 +294,6 @@ def _get_descriptor(
if purpose not in SCRIPT_TYPE_TO_BIP_PURPOSES[script_type]:
raise ValueError("Invalid script type for account type")
if script_type == messages.InputScriptType.SPENDADDRESS:
fmt = "pkh({})"
elif script_type == messages.InputScriptType.SPENDP2SHWITNESS:
fmt = "sh(wpkh({}))"
elif script_type == messages.InputScriptType.SPENDWITNESS:
fmt = "wpkh({})"
elif script_type == messages.InputScriptType.SPENDTAPROOT:
fmt = "tr({})"
else:
raise ValueError("Unsupported script type")
coin = coin or DEFAULT_COIN
if coin == "Bitcoin":
coin_type = 0
@ -331,6 +320,21 @@ def _get_descriptor(
unlock_path=get_unlock_path(n),
)
# Starting with core 2.6.5 the descriptor is included in the response.
if pub.descriptor is not None:
return pub.descriptor
if script_type == messages.InputScriptType.SPENDADDRESS:
fmt = "pkh({})"
elif script_type == messages.InputScriptType.SPENDP2SHWITNESS:
fmt = "sh(wpkh({}))"
elif script_type == messages.InputScriptType.SPENDWITNESS:
fmt = "wpkh({})"
elif script_type == messages.InputScriptType.SPENDTAPROOT:
fmt = "tr({})"
else:
raise ValueError("Unsupported script type")
fingerprint = pub.root_fingerprint if pub.root_fingerprint is not None else 0
descriptor = f"[{fingerprint:08x}{path[1:]}]{pub.xpub}/<0;1>/*"
return _append_descriptor_checksum(fmt.format(descriptor))

View File

@ -16,9 +16,10 @@
import pytest
from trezorlib import messages
from trezorlib.cli import btc
from trezorlib import btc, messages, models
from trezorlib.cli import btc as btc_cli
from trezorlib.debuglink import TrezorClientDebugLink as Client
from trezorlib.tools import H_
from ...input_flows import InputFlowShowXpubQRCode
@ -152,15 +153,47 @@ VECTORS_DESCRIPTORS = ( # coin, account, script_type, descriptors
)
def _address_n(purpose, coin, account, script_type):
res = [H_(purpose), H_(0) if coin == "Bitcoin" else H_(1), H_(account)]
if purpose == 10025 and script_type == messages.InputScriptType.SPENDTAPROOT:
res.append(H_(1))
return res
@pytest.mark.skip_t1
@pytest.mark.parametrize(
"coin, account, purpose, script_type, descriptors", VECTORS_DESCRIPTORS
)
def test_descriptors(client: Client, coin, account, purpose, script_type, descriptors):
with client:
if client.features.model != "1":
IF = InputFlowShowXpubQRCode(client)
client.set_input_flow(IF.get())
address_n = _address_n(purpose, coin, account, script_type)
res = btc.get_public_node(
client,
_address_n(purpose, coin, account, script_type),
show_display=True,
coin_name=coin,
script_type=script_type,
ignore_xpub_magic=True,
unlock_path=btc_cli.get_unlock_path(address_n),
)
assert res.descriptor == descriptors
@pytest.mark.parametrize(
"coin, account, purpose, script_type, descriptors", VECTORS_DESCRIPTORS
)
def test_descriptors_trezorlib(
client: Client, coin, account, purpose, script_type, descriptors
):
with client:
if client.model != models.T1B1:
IF = InputFlowShowXpubQRCode(client)
client.set_input_flow(IF.get())
res = btc._get_descriptor(
res = btc_cli._get_descriptor(
client, coin, account, purpose, script_type, show_display=True
)
assert res == descriptors

View File

@ -31,24 +31,24 @@
"T1_en_bitcoin-test_decred.py::test_decred_multisig_change": "8f95b7d2e65a76068196ab46c8189ba5a137795b43e88699d85ad7e2c164d645",
"T1_en_bitcoin-test_decred.py::test_send_decred": "50fa7dc09dbf22fc4c1e62ee2870e9047e29dd050edbdcf34341a5483d52cdac",
"T1_en_bitcoin-test_decred.py::test_send_decred_change": "b27eb08c244e00f9a2c5fecad0a8efc65fa2eba15f72ad0eb3b42a3ac16d465d",
"T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "d1ac62d128ed78eef5947994e9c9d70194a203eadb5a50f9ca9af66b42ba333d",
"T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "9b30c98b35338d933fe992e4a47fb259a54f0f6f204610f63c6e6cbff427dbb9",
"T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "09d1f2688240677ac55f2677b62973ee7fe4ca788e9e139b9f6de5a1a66d6205",
"T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "565050e8908a69cd9866a8696cdc103c19d1299486c682211f608e63b6597648",
"T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "f71944d71edb2531faef0a177c2eda4f88bcb0ef77883db18f655d706759b5b0",
"T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "c7987e946ff4f7f80f2aef9acd226f50ab2439837a188c0601861d0f15ca14c3",
"T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "fd3a4f48f9ea6b02a88db9ec8ab21ad72a4aee1e983e4e626b420834b375e190",
"T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "0c3090e26ede1019969dee87ce0ea88d46e54ec587c54cf975e1947fe90b5a0e",
"T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "c7a98dbc8fdf8b8a62d3ececef56e7ff2613a9491e6734b5683c1e2a5a074bed",
"T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "ec6aa625a688e2d54857aafca83b513d6509b13898b0fb79166e5d85c74a414b",
"T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "a03f1c3753c5a53e05ea9737c7f2583c2935a1a68684d37c0230a1a4d9453bea",
"T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "84ee5c5a45dbff7bb3d2d79b48e2323c84ff589540f6806b32b286f6bc5ce4e8",
"T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "f56e158c4fe862875dc4d655e0a5f203312a6509bf7c16bf462a237feaf78b7b",
"T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "5f990152867980f9b129e85f9fa1963006895c49a33045e2a9363cb9fa493f26",
"T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "bf7d2992e2732384f0e574732e36342b09ef6a8b50641a29c5d05a13c026fd7b",
"T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "a381684066de8a00048ab82491599140c8e36a8eed9b9c31284e76275b7d396c",
"T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "cd384fcf3379759dd5fc3f2737ddfb9185a55e506d9d0869f8a85ba31ed1d973",
"T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "f24b6c201efc2efbb174a48766df03f5964ea95908abca791714e22bcf9b635d",
"T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "d1ac62d128ed78eef5947994e9c9d70194a203eadb5a50f9ca9af66b42ba333d",
"T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "9b30c98b35338d933fe992e4a47fb259a54f0f6f204610f63c6e6cbff427dbb9",
"T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "09d1f2688240677ac55f2677b62973ee7fe4ca788e9e139b9f6de5a1a66d6205",
"T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "565050e8908a69cd9866a8696cdc103c19d1299486c682211f608e63b6597648",
"T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "f71944d71edb2531faef0a177c2eda4f88bcb0ef77883db18f655d706759b5b0",
"T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "c7987e946ff4f7f80f2aef9acd226f50ab2439837a188c0601861d0f15ca14c3",
"T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "fd3a4f48f9ea6b02a88db9ec8ab21ad72a4aee1e983e4e626b420834b375e190",
"T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "0c3090e26ede1019969dee87ce0ea88d46e54ec587c54cf975e1947fe90b5a0e",
"T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "c7a98dbc8fdf8b8a62d3ececef56e7ff2613a9491e6734b5683c1e2a5a074bed",
"T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "ec6aa625a688e2d54857aafca83b513d6509b13898b0fb79166e5d85c74a414b",
"T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "a03f1c3753c5a53e05ea9737c7f2583c2935a1a68684d37c0230a1a4d9453bea",
"T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "84ee5c5a45dbff7bb3d2d79b48e2323c84ff589540f6806b32b286f6bc5ce4e8",
"T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "f56e158c4fe862875dc4d655e0a5f203312a6509bf7c16bf462a237feaf78b7b",
"T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "5f990152867980f9b129e85f9fa1963006895c49a33045e2a9363cb9fa493f26",
"T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "bf7d2992e2732384f0e574732e36342b09ef6a8b50641a29c5d05a13c026fd7b",
"T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "a381684066de8a00048ab82491599140c8e36a8eed9b9c31284e76275b7d396c",
"T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "cd384fcf3379759dd5fc3f2737ddfb9185a55e506d9d0869f8a85ba31ed1d973",
"T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "f24b6c201efc2efbb174a48766df03f5964ea95908abca791714e22bcf9b635d",
"T1_en_bitcoin-test_firo.py::test_spend_lelantus": "cbb87e77f54c351584dd713a8eaabb99b65a515e57c30bfb9e7a38660ca6895b",
"T1_en_bitcoin-test_fujicoin.py::test_send_p2tr": "bfa5dc1a494ea17fd43d52a315a7f1abe9ad80d7fdaa8b3ec5f92c4118638d1e",
"T1_en_bitcoin-test_getaddress.py::test_bch": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
@ -3664,24 +3664,42 @@
"TR_en_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "fa268b2481cce18a041c8f8bf773f16cbfed6ad372a89c7d7220a2de3aa9042e",
"TR_en_bitcoin-test_bcash.py::test_send_bch_nochange": "395635f081e0c9bdf3f6de9a1540d9211c3a1d68665d8ac13ffb8c236add0a3b",
"TR_en_bitcoin-test_bcash.py::test_send_bch_oldaddr": "3957efb1b584f974d8b32523eadb4c18596956b38dec2c85005e7e4f0bf85593",
"TR_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "70524243a1d093df71ce94251a1bdfe8ff82b7ee84c2b13b71c09908be89dbc4",
"TR_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "558aa84a9129920eabf7101b013d0d1fb56c89c66873f3dcfe19ec22472b22ba",
"TR_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "ad9329ebacf27f00e736d1d3d8a33a539512a23fd134806ddfe6da4e4b517d1a",
"TR_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "cb4cea77c61cafeece033128c8c050060cba7c64e4ef255dc59b235324bcf213",
"TR_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "0ffab62bd4c51d042e77c23f5569b9b9a46d9aae102f55edf20d7894dc75b17d",
"TR_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "17a198a8b24035578345b5e85ec307ec8d800a2f343d051a1820ca3121dba696",
"TR_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "243487cd2ecbd125566ed60959c3a50f04290ee225838e5373d2a42d03d5fb5e",
"TR_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "bad6123462cf0f8c9d938ca92ac9841b53221e5152f27bc92959e870d4108f1e",
"TR_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "c66f3f30c1a6c809fb8c99a9773c9a9ebea29207c4383f8507db751ba59eb11f",
"TR_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "ab012153490f26746ff9a1b5388f2418bf7c9d98b127217babbeab339245d8f7",
"TR_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "695853ac56e78df434995eeb457f7d4b466f66c9af560fb103f6a4fba717e0fb",
"TR_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "c3519859e757af09f9fed46739e484845fdee3d3aa4fb84ee89e7df63d3ccf95",
"TR_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "2c460c0e3885c6d9e68db3175117ce4db5c8331034894caab942d19a3061805e",
"TR_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "40c7a7071d082bdab14e7e3a018dc07754b1e24fd9e8857daf445d343a581403",
"TR_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "482a7d3ce0d25e9b940cb3571201b35a856187ed2215f12ce05b06b32e5ebcc1",
"TR_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "442a787c067f35af606eb27a2a585a15272bb920af01070f408a402603572b39",
"TR_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "d53ebc2f1c866b3d5920b13d9ac909fc81d4ca943a0625801b5dc533f2fe6ef5",
"TR_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "7798b65e874be333b51ce443ccb26713bb0a17565217f09bd89eff635ddff8a6",
"TR_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "de19ce37833a9244920ec8d932ac88f12e4bbc7c2d41e882fb5d39639b28c7c2",
"TR_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "b42ab862d2d45bb9e0509fc4ba4d68405acde83fda935c5dafd44d9e48cb29d3",
"TR_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "6b7c12363fc566de9d35013be5156c970e9fba33c2ed73b4a7e9b06e0974e867",
"TR_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "7714578913a2a1e573193ac78cddc20c2df6c2856ad8c50d447906bfee41e4f6",
"TR_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "67b86cfe9f4ab3b54a829e70565061d80304a3f75ea70a4fbd92c22a643737ef",
"TR_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "0f5cea13c694bcfc74dec9d857984d989b31a8bf0f215199f1db7a5a0e452f4f",
"TR_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "558aa84a9129920eabf7101b013d0d1fb56c89c66873f3dcfe19ec22472b22ba",
"TR_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "ad9329ebacf27f00e736d1d3d8a33a539512a23fd134806ddfe6da4e4b517d1a",
"TR_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "cb4cea77c61cafeece033128c8c050060cba7c64e4ef255dc59b235324bcf213",
"TR_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "0ffab62bd4c51d042e77c23f5569b9b9a46d9aae102f55edf20d7894dc75b17d",
"TR_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "243487cd2ecbd125566ed60959c3a50f04290ee225838e5373d2a42d03d5fb5e",
"TR_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "bad6123462cf0f8c9d938ca92ac9841b53221e5152f27bc92959e870d4108f1e",
"TR_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "c66f3f30c1a6c809fb8c99a9773c9a9ebea29207c4383f8507db751ba59eb11f",
"TR_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "ab012153490f26746ff9a1b5388f2418bf7c9d98b127217babbeab339245d8f7",
"TR_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "2c460c0e3885c6d9e68db3175117ce4db5c8331034894caab942d19a3061805e",
"TR_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "40c7a7071d082bdab14e7e3a018dc07754b1e24fd9e8857daf445d343a581403",
"TR_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "482a7d3ce0d25e9b940cb3571201b35a856187ed2215f12ce05b06b32e5ebcc1",
"TR_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "442a787c067f35af606eb27a2a585a15272bb920af01070f408a402603572b39",
"TR_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "d53ebc2f1c866b3d5920b13d9ac909fc81d4ca943a0625801b5dc533f2fe6ef5",
"TR_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "de19ce37833a9244920ec8d932ac88f12e4bbc7c2d41e882fb5d39639b28c7c2",
"TR_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "b42ab862d2d45bb9e0509fc4ba4d68405acde83fda935c5dafd44d9e48cb29d3",
"TR_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "6b7c12363fc566de9d35013be5156c970e9fba33c2ed73b4a7e9b06e0974e867",
"TR_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "7714578913a2a1e573193ac78cddc20c2df6c2856ad8c50d447906bfee41e4f6",
"TR_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "0f5cea13c694bcfc74dec9d857984d989b31a8bf0f215199f1db7a5a0e452f4f",
"TR_en_bitcoin-test_firo.py::test_spend_lelantus": "aff133d149549783adbdaa9563cb990af6cc5f8fafba3f50d82bbbd2765bb4ff",
"TR_en_bitcoin-test_fujicoin.py::test_send_p2tr": "6ab906b521bb73e0725c3d0f3eb5a6ecf9f582853f4cd71672f73190f15fb917",
"TR_en_bitcoin-test_getaddress.py::test_address_mac": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095",
@ -10791,24 +10809,42 @@
"TT_en_bitcoin-test_decred.py::test_send_decred": "7e8b1532772cf7695fbcf3460d179d08f22c410687c057ff128882e32d923c92",
"TT_en_bitcoin-test_decred.py::test_send_decred_change": "d28de2959972fb3ef29bb267fa8bf6b96ac9c7d9ef4550538db5235a5b45307d",
"TT_en_bitcoin-test_decred.py::test_spend_from_stake_generation_and_revocation_decred": "d4657fa66b4d9e90d99de7bf5ad3123d74fec9c528a819f691bc565b521257f3",
"TT_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "75cf40b6d916ab5107d5241143ba1edd408d359076edcfdfd6ebef4f6202598f",
"TT_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "b9ecca0a8b6c4750d0af6c9d7433da2704dde0bc7e894778cbfaafb54435630f",
"TT_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "7dd16059ade8769aca12649b7b2523ac52718fb7bb9eb416fa13a5cb747be1b2",
"TT_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "8b434c5de0caf71301bd6b21481bb1944d4b43dd596a7ecb9acb921c8083e955",
"TT_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "e8628d184603bceaad9c5ae5b9f51460054e7b5622ea9c1a3dc84f84034808bc",
"TT_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "d9e035a4407e3fbbeaad3726c1c19c32d45a788a943187e909b0f2787aad7486",
"TT_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "3ca9f504529fc7a320e464819c6a793c8fc156165a80db17ed8ef8c593bcc802",
"TT_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "a8f46662c3d14e2defdd5aa2ff4486aeac3f566facf086916da7ddc7e0185130",
"TT_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "013171ff086e4565db1bc4f8a0d466a0fa7c6449ee58a3d27b27f073bfb74d63",
"TT_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "3941cd14f74e1d7ea919cb32cbd7c5954c412d845305e4f0e495378c7701a53b",
"TT_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "2b38959aba5f6a57365ebee67831eaeb9fd3276f9ca0d6c6d99e6b46e97998bc",
"TT_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "9db02ff67c8b507a62ab3bca79b4a6d5cd3f3da7136f7bc0b237fde382b50739",
"TT_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "e3e3495038e8016ef1afcf70effe3f957ae23b95a515c3aa6f3736fb35c9a10b",
"TT_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "732b01cc2254e25d6d4576af99332e7c9f4ba42f031fcf13588a4a0209e51adf",
"TT_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "d8e95f6a14ddabd6db4944802f847ccddd8161eed28559f35dc095b568461df7",
"TT_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "6ac0059ce935707618eefe9c23d403ff30807df3c3ec23b8615a50b648bbba75",
"TT_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "b8e44bea2eb0d3ac672a41ebf83683adbb0e02a622cbafe2fb02283117bd4c4a",
"TT_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "eae032ac90ebf7d44b84eb6f06c43f67140de7adef88906d98c1759ffd4995cd",
"TT_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "56a011908b178d0deeb00b7596a93ac003892e0adbd24958e875cc9d70340d95",
"TT_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "4795ab245421deef1f7ebdb6568165a64c7066054747a84c4e30a78085c71e22",
"TT_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "284b98fb9d745aae6f552999e1652300d84d4863c3b29452615ae5b691d7b266",
"TT_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "660130572e80e9161d733f3ebc465a5f2a9859a79eecd7201c7ebf955173df23",
"TT_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "35e60de9968a7c5bb296dc554970a16878165e062bb8480a5c8428f73a3cf921",
"TT_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "bf917bfb75a6e263410d4401774974598cbb3fbcfd04da54942d8d5f640bc32c",
"TT_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "b9ecca0a8b6c4750d0af6c9d7433da2704dde0bc7e894778cbfaafb54435630f",
"TT_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "7dd16059ade8769aca12649b7b2523ac52718fb7bb9eb416fa13a5cb747be1b2",
"TT_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "8b434c5de0caf71301bd6b21481bb1944d4b43dd596a7ecb9acb921c8083e955",
"TT_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "e8628d184603bceaad9c5ae5b9f51460054e7b5622ea9c1a3dc84f84034808bc",
"TT_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "3ca9f504529fc7a320e464819c6a793c8fc156165a80db17ed8ef8c593bcc802",
"TT_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "a8f46662c3d14e2defdd5aa2ff4486aeac3f566facf086916da7ddc7e0185130",
"TT_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "013171ff086e4565db1bc4f8a0d466a0fa7c6449ee58a3d27b27f073bfb74d63",
"TT_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "3941cd14f74e1d7ea919cb32cbd7c5954c412d845305e4f0e495378c7701a53b",
"TT_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "e3e3495038e8016ef1afcf70effe3f957ae23b95a515c3aa6f3736fb35c9a10b",
"TT_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "732b01cc2254e25d6d4576af99332e7c9f4ba42f031fcf13588a4a0209e51adf",
"TT_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "d8e95f6a14ddabd6db4944802f847ccddd8161eed28559f35dc095b568461df7",
"TT_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "6ac0059ce935707618eefe9c23d403ff30807df3c3ec23b8615a50b648bbba75",
"TT_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "b8e44bea2eb0d3ac672a41ebf83683adbb0e02a622cbafe2fb02283117bd4c4a",
"TT_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "56a011908b178d0deeb00b7596a93ac003892e0adbd24958e875cc9d70340d95",
"TT_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "4795ab245421deef1f7ebdb6568165a64c7066054747a84c4e30a78085c71e22",
"TT_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "284b98fb9d745aae6f552999e1652300d84d4863c3b29452615ae5b691d7b266",
"TT_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "660130572e80e9161d733f3ebc465a5f2a9859a79eecd7201c7ebf955173df23",
"TT_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "bf917bfb75a6e263410d4401774974598cbb3fbcfd04da54942d8d5f640bc32c",
"TT_en_bitcoin-test_firo.py::test_spend_lelantus": "213ced04e2b337576abe1861c11ef69352eb5542f2bef720e50d54cea031f9db",
"TT_en_bitcoin-test_fujicoin.py::test_send_p2tr": "6104cd021625791fc9141ca802c3c18fb50815459acae06b2eeb05da432352f7",
"TT_en_bitcoin-test_getaddress.py::test_address_mac": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3",
@ -12233,24 +12269,24 @@
"TT_es_bitcoin-test_decred.py::test_send_decred": "cf9ee4a446627419046b88f0b401c9c8329c8fc38e7502821d96c0220477edba",
"TT_es_bitcoin-test_decred.py::test_send_decred_change": "0d9417879b602ac06829ef43b23fc758e03ebe0917b6e24903f4264acd9f7ee0",
"TT_es_bitcoin-test_decred.py::test_spend_from_stake_generation_and_revocation_decred": "a0134e89dff96d9839930f945dabb5ffacce22a279d69ebc2753e7d61d8e6898",
"TT_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "bc17730ddaed436e08e658c2eb4a6f934b654656c1a5c79dcb2fc44f26a4552b",
"TT_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "15ad18d9c8db8e348a93a8578fac3cda988cf6d96af6380744e1ef1f76c815ca",
"TT_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "23f75434763fb0cf46a9aa84c9990d0750384e972a2b71a41a952e02082724a5",
"TT_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "22ec43384d3d6c49cbccbdd5345bea96abb96fafa2850539a80686ff8c1fc483",
"TT_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "6e286acce770082dee834d8baea174eab93606283adf1a7df6f487a3ae1e887b",
"TT_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "d72cbab5c93572e17aa9b183ec7b04de6725a8ab69cdb570d873fd46d84acf1e",
"TT_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "85096079c05717cee1c339126547fe5ce40f1dc6c7ddaa796546e0615e559424",
"TT_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "f54770cf021d90afd81bb6e487f580a69c535ae7c955ce438ac4882464023838",
"TT_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "2f07ab47ab291d7f5c5271aafd97f0107cc44c3c01880108cd41524fad556f0d",
"TT_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "d9ccb8cbe47c70d7e0266750daf761608107013e0d7cca514b62e47348489141",
"TT_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "969d1c1dd45ed8d7b2eac301eb57811aa4e5f7f458437030e706b4d731104ed8",
"TT_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "71231246c65e9474db0e377fb02e876a0c75c081f7424a156531e234d36b48a8",
"TT_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "1ac80b10559da7fb3b3198b6cc485a87cff3020c786df18e8e537252d0e392fc",
"TT_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "b281f5652d0979517bc8d6f14bd932a3030dfe4cb94f5e37a55652bb6630f71f",
"TT_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "f8913e114975e207939fbebe9a7b99518d9d3e6bcacf7f7300bc0fdb31396473",
"TT_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "9b15b67c20e7c833d30a8e4e6b1429b88e034dbaf2a4ac9ef5dc0d971253db19",
"TT_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "9f3b33abd5f0baf16686cb7cf5d25f0cf9425e9e763c46a1f78562ed4ac5827b",
"TT_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "1e7aad95a55a8cc9fdac8f783e3f54ab08da832f058bff69f72a3a094f9caeb4",
"TT_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPE-301d7568": "bc17730ddaed436e08e658c2eb4a6f934b654656c1a5c79dcb2fc44f26a4552b",
"TT_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDA-a1b0211f": "15ad18d9c8db8e348a93a8578fac3cda988cf6d96af6380744e1ef1f76c815ca",
"TT_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP-75f8d49f": "23f75434763fb0cf46a9aa84c9990d0750384e972a2b71a41a952e02082724a5",
"TT_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDW-cee65569": "22ec43384d3d6c49cbccbdd5345bea96abb96fafa2850539a80686ff8c1fc483",
"TT_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDT-6b548a1a": "6e286acce770082dee834d8baea174eab93606283adf1a7df6f487a3ae1e887b",
"TT_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDA-37215d1b": "d72cbab5c93572e17aa9b183ec7b04de6725a8ab69cdb570d873fd46d84acf1e",
"TT_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP-3ccd985b": "85096079c05717cee1c339126547fe5ce40f1dc6c7ddaa796546e0615e559424",
"TT_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDW-21c3fa4c": "f54770cf021d90afd81bb6e487f580a69c535ae7c955ce438ac4882464023838",
"TT_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDT-3a85f3dd": "2f07ab47ab291d7f5c5271aafd97f0107cc44c3c01880108cd41524fad556f0d",
"TT_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPE-591134d6": "d9ccb8cbe47c70d7e0266750daf761608107013e0d7cca514b62e47348489141",
"TT_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDA-b7612f41": "969d1c1dd45ed8d7b2eac301eb57811aa4e5f7f458437030e706b4d731104ed8",
"TT_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP-4408e6b6": "71231246c65e9474db0e377fb02e876a0c75c081f7424a156531e234d36b48a8",
"TT_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDW-49d5549d": "1ac80b10559da7fb3b3198b6cc485a87cff3020c786df18e8e537252d0e392fc",
"TT_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDT-51c6f7dc": "b281f5652d0979517bc8d6f14bd932a3030dfe4cb94f5e37a55652bb6630f71f",
"TT_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDA-671fabde": "f8913e114975e207939fbebe9a7b99518d9d3e6bcacf7f7300bc0fdb31396473",
"TT_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP-6a0c7b09": "9b15b67c20e7c833d30a8e4e6b1429b88e034dbaf2a4ac9ef5dc0d971253db19",
"TT_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDW-7c651f2d": "9f3b33abd5f0baf16686cb7cf5d25f0cf9425e9e763c46a1f78562ed4ac5827b",
"TT_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDT-b37d77de": "1e7aad95a55a8cc9fdac8f783e3f54ab08da832f058bff69f72a3a094f9caeb4",
"TT_es_bitcoin-test_firo.py::test_spend_lelantus": "b98d8923c124769303c839d5df22e72ce5d12d48d727577c1a4ac1015283bc6e",
"TT_es_bitcoin-test_fujicoin.py::test_send_p2tr": "9c547b6cce67090f083c0369a5697985687d806d48d6dab5596090b04ec62877",
"TT_es_bitcoin-test_getaddress.py::test_address_mac": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab",