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

chore(core): add coin support info for T3T1

This commit is contained in:
Ioan Bizău 2024-05-10 14:35:52 +02:00 committed by matejcik
parent 44a6696f24
commit 269adf4868
13 changed files with 1654 additions and 153 deletions

View File

@ -341,6 +341,120 @@
"misc:LSK": "Incompatible mainnet hard-fork"
}
},
"T3T1": {
"supported": {
"bitcoin:ACM": "2.6.1",
"bitcoin:AXE": "2.6.1",
"bitcoin:BCH": "2.6.1",
"bitcoin:BTC": "2.6.1",
"bitcoin:BTCP": "2.6.1",
"bitcoin:BTX": "2.6.1",
"bitcoin:CPU": "2.6.1",
"bitcoin:CRW": "2.6.1",
"bitcoin:DOGE": "2.6.1",
"bitcoin:ELEMENTS": "2.6.1",
"bitcoin:FIRO": "2.6.1",
"bitcoin:FJC": "2.6.1",
"bitcoin:FLO": "2.6.1",
"bitcoin:FTC": "2.6.1",
"bitcoin:GRS": "2.6.1",
"bitcoin:KMD": "2.6.1",
"bitcoin:KOTO": "2.6.1",
"bitcoin:LTC": "2.6.1",
"bitcoin:MONA": "2.6.1",
"bitcoin:PPC": "2.6.1",
"bitcoin:QTUM": "2.6.1",
"bitcoin:REGTEST": "2.6.1",
"bitcoin:RITO": "2.6.1",
"bitcoin:RVN": "2.6.1",
"bitcoin:SMART": "2.6.1",
"bitcoin:SYS": "2.6.1",
"bitcoin:TAZ": "2.6.1",
"bitcoin:TBCH": "2.6.1",
"bitcoin:TEST": "2.6.1",
"bitcoin:UNO": "2.6.1",
"bitcoin:VIA": "2.6.1",
"bitcoin:VIPS": "2.6.1",
"bitcoin:XPM": "2.6.1",
"bitcoin:XRC": "2.6.1",
"bitcoin:XSN": "2.6.1",
"bitcoin:XVG": "2.6.1",
"bitcoin:ZCR": "2.6.1",
"bitcoin:ZEC": "2.6.1",
"bitcoin:tFIRO": "2.6.1",
"bitcoin:tGRS": "2.6.1",
"bitcoin:tLTC": "2.6.1",
"bitcoin:tPPC": "2.6.1",
"bitcoin:tQTUM": "2.6.1",
"bitcoin:tRVN": "2.6.1",
"bitcoin:tSMART": "2.6.1",
"erc20:bnb:ATOM": "2.6.1",
"erc20:eth:AAVE": "2.6.1",
"erc20:eth:APE": "2.6.1",
"erc20:eth:AXS": "2.6.1",
"erc20:eth:BUSD": "2.6.1",
"erc20:eth:CHZ": "2.6.1",
"erc20:eth:CRO": "2.6.1",
"erc20:eth:DAI": "2.6.1",
"erc20:eth:FRAX": "2.6.1",
"erc20:eth:LEO": "2.6.1",
"erc20:eth:LINK": "2.6.1",
"erc20:eth:MANA": "2.6.1",
"erc20:eth:MATIC": "2.6.1",
"erc20:eth:OKB": "2.6.1",
"erc20:eth:QNT": "2.6.1",
"erc20:eth:SAND": "2.6.1",
"erc20:eth:SHIB": "2.6.1",
"erc20:eth:STETH": "2.6.1",
"erc20:eth:UNI": "2.6.1",
"erc20:eth:USDC": "2.6.1",
"erc20:eth:USDT": "2.6.1",
"erc20:eth:WBTC": "2.6.1",
"erc20:eth:XCN": "2.6.1",
"erc20:matic:WAVAX": "2.6.1",
"eth:BNB:56": "2.6.1",
"eth:ETC:61": "2.6.1",
"eth:ETH:1": "2.6.1",
"eth:MATIC:137": "2.6.1",
"eth:tETH:3": "2.6.1",
"eth:tETH:4": "2.6.1",
"eth:tETH:5": "2.6.1",
"misc:ADA": "2.6.1",
"misc:BNB": "2.6.1",
"misc:MAID": "2.6.1",
"misc:OMNI": "2.6.1",
"misc:SOL": "2.6.4",
"misc:USDT": "2.6.1",
"misc:XLM": "2.6.1",
"misc:XMR": "2.6.1",
"misc:XRP": "2.6.1",
"misc:XTZ": "2.6.1",
"misc:tADA": "2.6.1",
"misc:tXRP": "2.6.1",
"nem:BREEZE": "2.6.1",
"nem:DIM": "2.6.1",
"nem:DIMTOK": "2.6.1",
"nem:PAC:CHS": "2.6.1",
"nem:PAC:HRT": "2.6.1"
},
"unsupported": {
"bitcoin:BTG": "not for T3T1 (#2793)",
"bitcoin:DASH": "not for T3T1 (#2793)",
"bitcoin:DCR": "not for T3T1 (#2793)",
"bitcoin:DGB": "not for T3T1 (#2793)",
"bitcoin:NMC": "not for T3T1 (#2793)",
"bitcoin:PART": "incompatible fork",
"bitcoin:TBTG": "not for T3T1 (#2793)",
"bitcoin:TDCR": "not for T3T1 (#2793)",
"bitcoin:TRC": "address_type collides with Bitcoin",
"bitcoin:VTC": "not for T3T1 (#2793)",
"bitcoin:tDASH": "not for T3T1 (#2793)",
"bitcoin:tPART": "incompatible fork",
"misc:EOS": "not for T3T1 (#2793)",
"misc:LSK": "Incompatible mainnet hard-fork",
"nem:XEM": "not for T3T1 (#2793)"
}
},
"connect": {
"supported": {
"bitcoin:ACM": true,

View File

@ -450,7 +450,7 @@ def _load_fido_apps() -> FidoApps:
RELEASES_URL = "https://data.trezor.io/firmware/{}/releases.json"
MISSING_SUPPORT_MEANS_NO = ("connect", "suite")
VERSIONED_SUPPORT_INFO = ("T1B1", "T2T1", "T2B1")
VERSIONED_SUPPORT_INFO = ("T1B1", "T2T1", "T2B1", "T3T1")
def get_support_data() -> SupportData:

File diff suppressed because it is too large Load Diff

View File

@ -134,20 +134,19 @@ ATTRIBUTES = (
("confidential_assets", optional_dict),
)
models = ["T2B1", "T3T1", "T2T1"]
btc_names = ["Bitcoin", "Testnet", "Regtest"]
# TODO: make this easily extendable for more models
coins_btc_t2t1 = [c for c in supported_on("T2T1", bitcoin) if c.name in btc_names]
coins_alt_t2t1 = [c for c in supported_on("T2T1", bitcoin) if c.name not in btc_names]
coins_btc_t2b1 = [c for c in supported_on("T2B1", bitcoin) if c.name in btc_names]
coins_alt_t2b1 = [c for c in supported_on("T2B1", bitcoin) if c.name not in btc_names]
coins = {}
for model in models:
coins.setdefault('btc', {})[model] = [c for c in supported_on(model, bitcoin) if c.name in btc_names]
coins.setdefault('alt', {})[model] = [c for c in supported_on(model, bitcoin) if c.name not in btc_names]
%>\
def by_name(name: str) -> CoinInfo:
if utils.MODEL_IS_T2B1:
% for coin in coins_btc_t2b1:
% for model in models:
if utils.INTERNAL_MODEL == "${model}":
% for coin in coins['btc'][model]:
if name == ${black_repr(coin["coin_name"])}:
return CoinInfo(
% for attr, func in ATTRIBUTES:
@ -156,7 +155,7 @@ def by_name(name: str) -> CoinInfo:
)
% endfor
if not utils.BITCOIN_ONLY:
% for coin in coins_alt_t2b1:
% for coin in coins['alt'][model]:
if name == ${black_repr(coin["coin_name"])}:
return CoinInfo(
% for attr, func in ATTRIBUTES:
@ -165,22 +164,5 @@ def by_name(name: str) -> CoinInfo:
)
% endfor
raise ValueError # Unknown coin name
else:
% for coin in coins_btc_t2t1:
if name == ${black_repr(coin["coin_name"])}:
return CoinInfo(
% for attr, func in ATTRIBUTES:
${func(coin[attr])}, # ${attr}
% endfor
)
% endfor
if not utils.BITCOIN_ONLY:
% for coin in coins_alt_t2t1:
if name == ${black_repr(coin["coin_name"])}:
return CoinInfo(
% for attr, func in ATTRIBUTES:
${func(coin[attr])}, # ${attr}
% endfor
)
% endfor
raise ValueError # Unknown coin name
raise ValueError # Unknown model

View File

@ -59,7 +59,7 @@ def by_slip44(slip44: int) -> EthereumNetworkInfo:
# fmt: off
def _networks_iterator() -> Iterator[NetworkInfoTuple]:
if utils.MODEL_IS_T2B1:
if utils.INTERNAL_MODEL == "T2B1":
yield (
1, # chain_id
60, # slip44
@ -102,7 +102,50 @@ def _networks_iterator() -> Iterator[NetworkInfoTuple]:
"MATIC", # symbol
"Polygon", # name
)
else:
if utils.INTERNAL_MODEL == "T3T1":
yield (
1, # chain_id
60, # slip44
"ETH", # symbol
"Ethereum", # name
)
yield (
3, # chain_id
1, # slip44
"tETH", # symbol
"Ropsten", # name
)
yield (
4, # chain_id
1, # slip44
"tETH", # symbol
"Rinkeby", # name
)
yield (
5, # chain_id
1, # slip44
"tETH", # symbol
"Görli", # name
)
yield (
56, # chain_id
714, # slip44
"BNB", # symbol
"Binance Smart Chain", # name
)
yield (
61, # chain_id
61, # slip44
"ETC", # symbol
"Ethereum Classic", # name
)
yield (
137, # chain_id
966, # slip44
"MATIC", # symbol
"Polygon", # name
)
if utils.INTERNAL_MODEL == "T2T1":
yield (
1, # chain_id
60, # slip44

View File

@ -59,8 +59,9 @@ def by_slip44(slip44: int) -> EthereumNetworkInfo:
# fmt: off
def _networks_iterator() -> Iterator[NetworkInfoTuple]:
if utils.MODEL_IS_T2B1:
% for n in sorted(supported_on("T2B1", eth), key=lambda network: (int(network.chain_id), network.name)):
% for model in ["T2B1", "T3T1", "T2T1"]:
if utils.INTERNAL_MODEL == "${model}":
% for n in sorted(supported_on(model, eth), key=lambda network: (int(network.chain_id), network.name)):
yield (
${n.chain_id}, # chain_id
${n.slip44}, # slip44
@ -68,12 +69,4 @@ def _networks_iterator() -> Iterator[NetworkInfoTuple]:
"${n.name}", # name
)
% endfor
else:
% for n in sorted(supported_on("T2T1", eth), key=lambda network: (int(network.chain_id), network.name)):
yield (
${n.chain_id}, # chain_id
${n.slip44}, # slip44
"${n.shortcut}", # symbol
"${n.name}", # name
)
% endfor

View File

@ -42,7 +42,7 @@ def token_by_chain_address(chain_id: int, address: bytes) -> EthereumTokenInfo |
def _token_iterator(chain_id: int) -> Iterator[tuple[bytes, str, int, str]]:
if utils.MODEL_IS_T2B1:
if utils.INTERNAL_MODEL == "T2B1":
if chain_id == 1: # eth
yield ( # address, symbol, decimals, name
b"\x7f\xc6\x65\x00\xc8\x4a\x76\xad\x7e\x9c\x93\x43\x7b\xfc\x5a\xc3\x3e\x2d\xda\xe9",
@ -190,7 +190,155 @@ def _token_iterator(chain_id: int) -> Iterator[tuple[bytes, str, int, str]]:
18,
"Wrapped AVAX",
)
else:
if utils.INTERNAL_MODEL == "T3T1":
if chain_id == 1: # eth
yield ( # address, symbol, decimals, name
b"\x7f\xc6\x65\x00\xc8\x4a\x76\xad\x7e\x9c\x93\x43\x7b\xfc\x5a\xc3\x3e\x2d\xda\xe9",
"AAVE",
18,
"Aave",
)
yield ( # address, symbol, decimals, name
b"\x4d\x22\x44\x52\x80\x1a\xce\xd8\xb2\xf0\xae\xbe\x15\x53\x79\xbb\x5d\x59\x43\x81",
"APE",
18,
"ApeCoin",
)
yield ( # address, symbol, decimals, name
b"\xbb\x0e\x17\xef\x65\xf8\x2a\xb0\x18\xd8\xed\xd7\x76\xe8\xdd\x94\x03\x27\xb2\x8b",
"AXS",
18,
"Axie Infinity",
)
yield ( # address, symbol, decimals, name
b"\x4f\xab\xb1\x45\xd6\x46\x52\xa9\x48\xd7\x25\x33\x02\x3f\x6e\x7a\x62\x3c\x7c\x53",
"BUSD",
18,
"Binance USD",
)
yield ( # address, symbol, decimals, name
b"\x35\x06\x42\x4f\x91\xfd\x33\x08\x44\x66\xf4\x02\xd5\xd9\x7f\x05\xf8\xe3\xb4\xaf",
"CHZ",
18,
"Chiliz",
)
yield ( # address, symbol, decimals, name
b"\xa0\xb7\x3e\x1f\xf0\xb8\x09\x14\xab\x6f\xe0\x44\x4e\x65\x84\x8c\x4c\x34\x45\x0b",
"CRO",
8,
"Cronos",
)
yield ( # address, symbol, decimals, name
b"\x6b\x17\x54\x74\xe8\x90\x94\xc4\x4d\xa9\x8b\x95\x4e\xed\xea\xc4\x95\x27\x1d\x0f",
"DAI",
18,
"Dai",
)
yield ( # address, symbol, decimals, name
b"\x85\x3d\x95\x5a\xce\xf8\x22\xdb\x05\x8e\xb8\x50\x59\x11\xed\x77\xf1\x75\xb9\x9e",
"FRAX",
18,
"Frax",
)
yield ( # address, symbol, decimals, name
b"\x2a\xf5\xd2\xad\x76\x74\x11\x91\xd1\x5d\xfe\x7b\xf6\xac\x92\xd4\xbd\x91\x2c\xa3",
"LEO",
18,
"LEO Token",
)
yield ( # address, symbol, decimals, name
b"\x51\x49\x10\x77\x1a\xf9\xca\x65\x6a\xf8\x40\xdf\xf8\x3e\x82\x64\xec\xf9\x86\xca",
"LINK",
18,
"Chainlink",
)
yield ( # address, symbol, decimals, name
b"\x0f\x5d\x2f\xb2\x9f\xb7\xd3\xcf\xee\x44\x4a\x20\x02\x98\xf4\x68\x90\x8c\xc9\x42",
"MANA",
18,
"Decentraland",
)
yield ( # address, symbol, decimals, name
b"\x7d\x1a\xfa\x7b\x71\x8f\xb8\x93\xdb\x30\xa3\xab\xc0\xcf\xc6\x08\xaa\xcf\xeb\xb0",
"MATIC",
18,
"Polygon",
)
yield ( # address, symbol, decimals, name
b"\x75\x23\x1f\x58\xb4\x32\x40\xc9\x71\x8d\xd5\x8b\x49\x67\xc5\x11\x43\x42\xa8\x6c",
"OKB",
18,
"OKB",
)
yield ( # address, symbol, decimals, name
b"\x4a\x22\x0e\x60\x96\xb2\x5e\xad\xb8\x83\x58\xcb\x44\x06\x8a\x32\x48\x25\x46\x75",
"QNT",
18,
"Quant",
)
yield ( # address, symbol, decimals, name
b"\x38\x45\xba\xda\xde\x8e\x6d\xff\x04\x98\x20\x68\x0d\x1f\x14\xbd\x39\x03\xa5\xd0",
"SAND",
18,
"The Sandbox",
)
yield ( # address, symbol, decimals, name
b"\x95\xad\x61\xb0\xa1\x50\xd7\x92\x19\xdc\xf6\x4e\x1e\x6c\xc0\x1f\x0b\x64\xc4\xce",
"SHIB",
18,
"Shiba Inu",
)
yield ( # address, symbol, decimals, name
b"\xae\x7a\xb9\x65\x20\xde\x3a\x18\xe5\xe1\x11\xb5\xea\xab\x09\x53\x12\xd7\xfe\x84",
"STETH",
18,
"Lido Staked Ether",
)
yield ( # address, symbol, decimals, name
b"\x1f\x98\x40\xa8\x5d\x5a\xf5\xbf\x1d\x17\x62\xf9\x25\xbd\xad\xdc\x42\x01\xf9\x84",
"UNI",
18,
"Uniswap",
)
yield ( # address, symbol, decimals, name
b"\xa0\xb8\x69\x91\xc6\x21\x8b\x36\xc1\xd1\x9d\x4a\x2e\x9e\xb0\xce\x36\x06\xeb\x48",
"USDC",
6,
"USD Coin",
)
yield ( # address, symbol, decimals, name
b"\xda\xc1\x7f\x95\x8d\x2e\xe5\x23\xa2\x20\x62\x06\x99\x45\x97\xc1\x3d\x83\x1e\xc7",
"USDT",
6,
"Tether",
)
yield ( # address, symbol, decimals, name
b"\x22\x60\xfa\xc5\xe5\x54\x2a\x77\x3a\xa4\x4f\xbc\xfe\xdf\x7c\x19\x3b\xc2\xc5\x99",
"WBTC",
8,
"Wrapped Bitcoin",
)
yield ( # address, symbol, decimals, name
b"\xa2\xcd\x3d\x43\xc7\x75\x97\x8a\x96\xbd\xbf\x12\xd7\x33\xd5\xa1\xed\x94\xfb\x18",
"XCN",
18,
"Chain",
)
if chain_id == 56: # bnb
yield ( # address, symbol, decimals, name
b"\x0e\xb3\xa7\x05\xfc\x54\x72\x50\x37\xcc\x9e\x00\x8b\xde\xde\x69\x7f\x62\xf3\x35",
"ATOM",
18,
"Cosmos Hub",
)
if chain_id == 137: # matic
yield ( # address, symbol, decimals, name
b"\x2c\x89\xbb\xc9\x2b\xd8\x6f\x80\x75\xd1\xde\xcc\x58\xc7\xf4\xe0\x10\x7f\x28\x6b",
"WAVAX",
18,
"Wrapped AVAX",
)
if utils.INTERNAL_MODEL == "T2T1":
if chain_id == 1: # eth
yield ( # address, symbol, decimals, name
b"\x7f\xc6\x65\x00\xc8\x4a\x76\xad\x7e\x9c\x93\x43\x7b\xfc\x5a\xc3\x3e\x2d\xda\xe9",

View File

@ -51,8 +51,9 @@ def token_by_chain_address(chain_id: int, address: bytes) -> EthereumTokenInfo |
def _token_iterator(chain_id: int) -> Iterator[tuple[bytes, str, int, str]]:
if utils.MODEL_IS_T2B1:
% for token_chain_id, tokens in group_tokens(supported_on("T2B1", erc20)).items():
% for model in ["T2B1", "T3T1", "T2T1"]:
if utils.INTERNAL_MODEL == "${model}":
% for token_chain_id, tokens in group_tokens(supported_on(model, erc20)).items():
if chain_id == ${token_chain_id}: # ${tokens[0].chain}
% for t in tokens:
yield ( # address, symbol, decimals, name
@ -63,15 +64,4 @@ def _token_iterator(chain_id: int) -> Iterator[tuple[bytes, str, int, str]]:
)
% endfor
% endfor
else:
% for token_chain_id, tokens in group_tokens(supported_on("T2T1", erc20)).items():
if chain_id == ${token_chain_id}: # ${tokens[0].chain}
% for t in tokens:
yield ( # address, symbol, decimals, name
${black_repr(t.address_bytes)},
${black_repr(t.symbol)},
${t.decimals},
${black_repr(t.name.strip())},
)
% endfor
% endfor

View File

@ -47,7 +47,7 @@ FAKE_TXHASH_a63dbe = bytes.fromhex(
"a63dbedd8cd284bf0d3c468e84b9b0eeb14c3a08824eab8f80e7723a299f30db"
)
pytestmark = [pytest.mark.altcoin, pytest.mark.skip_t2b1]
pytestmark = [pytest.mark.altcoin, pytest.mark.skip_t2b1, pytest.mark.skip_t3t1]
# All data taken from T1

View File

@ -40,7 +40,7 @@ TXHASH_15575a = bytes.fromhex(
"15575a1c874bd60a819884e116c42e6791c8283ce1fc3b79f0d18531a61bbb8a"
)
pytestmark = [pytest.mark.altcoin, pytest.mark.skip_t2b1]
pytestmark = [pytest.mark.altcoin, pytest.mark.skip_t2b1, pytest.mark.skip_t3t1]
def test_send_dash(client: Client):

View File

@ -34,7 +34,8 @@ def case(
*args: Any,
altcoin: bool = False,
skip_t1b1: bool = False,
skip_t2b1: bool = False
skip_t2b1: bool = False,
skip_t3t1: bool = False
):
marks = []
if altcoin:
@ -43,6 +44,8 @@ def case(
marks.append(pytest.mark.skip_t1b1)
if skip_t2b1:
marks.append(pytest.mark.skip_t2b1)
if skip_t3t1:
marks.append(pytest.mark.skip_t3t1)
return pytest.param(*args, id=id, marks=marks)
@ -263,6 +266,7 @@ VECTORS = ( # case name, coin_name, path, script_type, address, message, signat
"206b1f8ba47ef9eaf87aa900e41ab1e97f67e8c09292faa4acf825228d074c4b774484046dcb1d9bbf0603045dbfb328c3e1b0c09c5ae133e89e604a67a1fc6cca",
altcoin=True,
skip_t2b1=True,
skip_t3t1=True,
),
case(
"decred-empty",
@ -275,6 +279,7 @@ VECTORS = ( # case name, coin_name, path, script_type, address, message, signat
"1fd2d57490b44a0361c7809768cad032d41ba1d4b7a297f935fc65ae05f71de7ea0c6c6fd265cc5154f1fa4acd7006b6a00ddd67fb7333c1594aff9120b3ba8024",
altcoin=True,
skip_t2b1=True,
skip_t3t1=True,
),
)

View File

@ -36,12 +36,16 @@ PREV_TXES = {PREV_HASH: PREV_TX}
pytestmark = [pytest.mark.skip_t1b1, pytest.mark.experimental]
def case(id, *args, altcoin: bool = False, skip_t2b1: bool = False):
def case(
id, *args, altcoin: bool = False, skip_t2b1: bool = False, skip_t3t1: bool = False
):
marks = []
if altcoin:
marks.append(pytest.mark.altcoin)
if skip_t2b1:
marks.append(pytest.mark.skip_t2b1)
if skip_t3t1:
marks.append(pytest.mark.skip_t3t1)
return pytest.param(*args, id=id, marks=marks)
@ -115,12 +119,14 @@ SERIALIZED_TX = "01000000000101e29305e85821ea86f2bca1fcfe45e7cb0c8de87b612479ee6
(PaymentRequestParams([0], memos1, get_nonce=True),),
altcoin=True,
skip_t2b1=True,
skip_t3t1=True,
),
case(
"out1",
(PaymentRequestParams([1], memos2, get_nonce=True),),
altcoin=True,
skip_t2b1=True,
skip_t3t1=True,
),
case("out2", (PaymentRequestParams([2], [], get_nonce=True),)),
case(
@ -276,6 +282,7 @@ def test_payment_req_wrong_mac_refund(client: Client):
@pytest.mark.altcoin
@pytest.mark.skip_t2b1
@pytest.mark.skip_t3t1
def test_payment_req_wrong_mac_purchase(client: Client):
# Test wrong MAC in payment request memo.
memo = CoinPurchaseMemo(

View File

@ -15724,17 +15724,6 @@
"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "13e14f251e58551ed1ec72882dec53bf786d42a572fd1d83873e7b92b37f33af",
"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_nochange": "ef2c0fa7a21272bb89f4d28f5e1577b54e55d89ac5e1f5c2aad33a8cdb2c4fa2",
"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_oldaddr": "f99dfbebba944f95f1f30a77c47f9dbdcea6e761cfdd0c420dd1835f05b9c081",
"T3T1_cs_bitcoin-test_bgold.py::test_attack_change_input": "25d8d3c633b4723500c0d08a691885129aabc8b5ab2d381ec1305b42a81c3440",
"T3T1_cs_bitcoin-test_bgold.py::test_send_bitcoin_gold_change": "25d8d3c633b4723500c0d08a691885129aabc8b5ab2d381ec1305b42a81c3440",
"T3T1_cs_bitcoin-test_bgold.py::test_send_bitcoin_gold_nochange": "d343fb6fa999aff949eba343168358b99db6f534647688ba5277a86b43f79a62",
"T3T1_cs_bitcoin-test_bgold.py::test_send_btg_external_presigned": "71d21978e9f03d96868803f023f2d340132dd99e9dca9ae7d5f68da3055067c9",
"T3T1_cs_bitcoin-test_bgold.py::test_send_btg_multisig_change": "c64c6c574325f2be07d21b40d08f7fd104fc076c410ca08358ffd2cfe45c5db6",
"T3T1_cs_bitcoin-test_bgold.py::test_send_mixed_inputs": "3f0ef9378880369022d5eadbe2a2f748b9e2a78a82a87e5450106b86e4406a85",
"T3T1_cs_bitcoin-test_bgold.py::test_send_multisig_1": "d9f642e7f0bd4dd60ec00da2dc3eaba4efec8c9f1c6245b4a3cc27ea50386cac",
"T3T1_cs_bitcoin-test_bgold.py::test_send_p2sh": "4dea10f47de539102752a449d6bad5a6186eabfafb9350e0e1879e0e69a49544",
"T3T1_cs_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "0098c8b33b3058b3a5f610b8ed67605e355022613ce7f4f16216b5a8716c85c9",
"T3T1_cs_bitcoin-test_dash.py::test_send_dash": "335f7e6a2848b085002b697246f75643c8fc880547c588b455198eb5453f253f",
"T3T1_cs_bitcoin-test_dash.py::test_send_dash_dip2_input": "a41668351634e0edf22939bce11f223528316432d247c7982a2e2b526f0d1342",
"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "42f11ce0b5d73590787e88b9c0555c31644107883e098f7e6a2ecd47f430e942",
"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "ff5011b73037f135d37c4d312dc5196638fd5431475fdf52588c7ffe33ccbf83",
"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "93c4155c6f70b36789e1be5334e2080e71dc41aee70c96476d70da6c76eb9250",
@ -15972,8 +15961,6 @@
"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "7609d05360aae3789f693d60a46a65c8c6b8ea9fe8d2358026c3bbc324c5ec2c",
"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "7609d05360aae3789f693d60a46a65c8c6b8ea9fe8d2358026c3bbc324c5ec2c",
"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[bcash]": "1dba56c6086b06373ae3b2a73ff3cda693f982ad74ff54cb80a652e2d2096b2e",
"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[decred-empty]": "41f5daa53c7b5ced79b626022b50ac050e0ebcf2f32d8a243a7fe1364ae030bc",
"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[decred]": "51e38efe9dc235c6685da45b3a4b71edcb58dc7564627f1b80bdd6b5fcb6c7ee",
"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "a58d3d6778193f6fcfad0ded221b771e12ebb1718b2b3e4bf8e7f4d214c17e35",
"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "7edbcf556534ebf6ae26350bb4a427067c35a3debeb039a2fbd225c00b39f889",
"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "94cc6185107ccfc1f42e0e7e987cad2ee734030531076d232ed0ea006abfce61",
@ -15993,8 +15980,6 @@
"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "a0d60af26a65d4359f49e1db4eed5ef9af62394778df33e7944a35c20ef57ce9",
"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "a0d60af26a65d4359f49e1db4eed5ef9af62394778df33e7944a35c20ef57ce9",
"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "8dcaf9b2f38e4d419090d4b067c4962b0e6a7af5b2a5e33b164c95e97fb537ff",
"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[decred-empty]": "c7c3b4178d5f0dc62094b35aa6f2339a7a6017442f122dd5a5509f50319925e0",
"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[decred]": "63268e589d336c72a83b33986fcf295a6cbde09857bc09172f276b259f327d4d",
"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "1e6a092053fba32fe77283283bdb62424ecbc6239184a22926e841a7d9a2cfd0",
"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "1a50cbf61828158fb092d31dc65ca3643604f935c5937ce8ea68e5437281eb26",
"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "ff85589955299d71075223bd8bce9756a798b1722946d02137434d11a872eae7",
@ -16097,15 +16082,12 @@
"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "3384acf255eb2c6c358aa82365bdd130069ce2cc13b48e9fd7ed6b7bee781bb2",
"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "7e0130bf9c752a1b2db395610a73b6afbb36d48f35bdf0296744ae9583d962eb",
"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "c52186d8fedb3f710b8219f3ab2d57597c82a728f44496ca69569c184d3ae77f",
"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_purchase": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448",
"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448",
"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "1483bcf92bc1ed3c68a0bbc668257869c0a2265e1833798fafda202eabf7979d",
"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "ce102efd7c5e9602a572ea437e0b4e34e08601bcca9b654b0f85f05a2d3b847d",
"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "74402c765f5dc15da422f747ad60ffac9e490eb78ee8080b3773074494b79f34",
"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "15f4895b6988d8ea0d8eca7fd794ba389e119b837e5e153454d9b772b6572d07",
"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out0]": "0304602342139735c7aa19e7ff75cce4643a9a6f330c130cf3a31cfaec5c0315",
"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "b6374aa097b07421411e9d3917b34ac906a1560f61ba99bf6d261a0c09a1712e",
"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out1]": "a863aaac02bc102dffdbe1fd0bb16b61a0aedf7c92a2c873eba618422b7e1157",
"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "485a9c12d08b6044b71e8cdcfee42889abab2c2606ee53d9700288f1be918fcf",
"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request_details": "28f78742e4c34c8a55e3684bcbf4c79713ea53279536dec00b16bac9313d8ab0",
"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448",
@ -17147,17 +17129,6 @@
"T3T1_de_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "a546916f892916d48fa253755740151a3a02731444cf8b390b1aaf3a3bbcbf6f",
"T3T1_de_bitcoin-test_bcash.py::test_send_bch_nochange": "60503baf1c396d3b5fd275b89b5a0b4a8f877bab02868712a5fdbe5b5c45195c",
"T3T1_de_bitcoin-test_bcash.py::test_send_bch_oldaddr": "bba776e12005c44b42750132ce34b2168cd020ff9908094c6ecdac9b3be3e753",
"T3T1_de_bitcoin-test_bgold.py::test_attack_change_input": "fedb5cdbd0c20d19e209816aa6f1140abe2746bdb50fe703a030ab72a98d7554",
"T3T1_de_bitcoin-test_bgold.py::test_send_bitcoin_gold_change": "fedb5cdbd0c20d19e209816aa6f1140abe2746bdb50fe703a030ab72a98d7554",
"T3T1_de_bitcoin-test_bgold.py::test_send_bitcoin_gold_nochange": "d4ce1182a6875f21eb6cfc445ffc684575616473448076b99d36a0b4d4d54dc2",
"T3T1_de_bitcoin-test_bgold.py::test_send_btg_external_presigned": "10eea7b1988ea19534d01b3fe2db662b368d9e0670cbf06ceba8db099b19801b",
"T3T1_de_bitcoin-test_bgold.py::test_send_btg_multisig_change": "bef164479dbbecd892aeeea432489e2b7641586ee6ddf8a0814eaf6bd9e180f4",
"T3T1_de_bitcoin-test_bgold.py::test_send_mixed_inputs": "48a5bbf15f7f5a2bf7be487742c3829d81dd6871e3081b88515b31b47259b254",
"T3T1_de_bitcoin-test_bgold.py::test_send_multisig_1": "b52e9527d9e19ce9b040888bbc22f49b522b6848aaace3760ecd4c4bb16d9789",
"T3T1_de_bitcoin-test_bgold.py::test_send_p2sh": "6cbe3eb5586c855c9abebd354e33c2c756967f583b20df71ec0764577d340781",
"T3T1_de_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "35c931ae56cc886089b0525d6d452cb0cea89248cd8503251c6cc865bafb2b11",
"T3T1_de_bitcoin-test_dash.py::test_send_dash": "8ef8313daf9b5ada908d1c0807b5950679769d45a975fea58d0a2a722682ea49",
"T3T1_de_bitcoin-test_dash.py::test_send_dash_dip2_input": "28a6bf66401c4ba2a14df3dcb550d6b061c4906d00499b5c3402891e5ba4d2a5",
"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "031b7f77ade528e0d6be9e1873feb2aeeed6d8effbb54e4cdc942fc54f74760c",
"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "eb397098484fc36093f703f72e1c9be1d479378b5bc76f6b5b2b66340383dbec",
"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "0959faed3903420c9424877baeda4f7a0fbf95ac9eaa8195b1c8be1edf31a43b",
@ -17395,8 +17366,6 @@
"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "d94cc28a96bef367fcea57cd871d47120df55953cc6e92044cba3111454e76be",
"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "d94cc28a96bef367fcea57cd871d47120df55953cc6e92044cba3111454e76be",
"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[bcash]": "208dd4db2f811fcc7bf39284784e6635fd06373281cbb38a02ef5d0e4372b0d9",
"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[decred-empty]": "22124d4223cc9b020a8b7416b113935a459af564e90fd540fe42bf29118e70c2",
"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[decred]": "8952995825f122f9d1245d2b82359a809181c8fbb4626de9fe9f54a0d6a095d1",
"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "0f6be42afd5263571cac87e9c4f0153a7a2d3331a419e148ec0b142ddcffd468",
"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "f1706849538ac0b3d530c637a0f375ac8e911151410d1c5fc660cf9e6c970334",
"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "17a2cbc0d38e313552d9d29da3898f64a3f7402415e0e57fa317949499ca8348",
@ -17416,8 +17385,6 @@
"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "051c78b69e9230bd9ed444cc6d629e03d20308093dcb1eab3c1bb131d661e300",
"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "051c78b69e9230bd9ed444cc6d629e03d20308093dcb1eab3c1bb131d661e300",
"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "1f1e553cfae6c8c4aa1d991ec5e6aa72c2ec526b50d8672cec106861d4944067",
"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[decred-empty]": "aad36aa5771b97315adc9fd78ea87e0217b7b390747cf72918ef07d20b3fe14f",
"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[decred]": "cbfa937d264107c606088d07d9384d0f91a76628b66d8beb617d1859de19ad8a",
"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "13ed7efd7f1dee255bb3f3162eaa0f1145623783797d4fe67dbbc63185f6e86f",
"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "4f6008a3c77222f52a9ea5a32e6c21c349921e7d69ccdea30df7f2d58841e8a7",
"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "55756d77cf568f1ac44ad0d9cdd164eb942d66971aec9190b8f274bca1bbdab5",
@ -17520,15 +17487,12 @@
"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "d570a20acdef9b5a5c2aaacd02b0ecf81b4d7a3b35c3ea998f5fe074b89598b5",
"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "e2a0389e4edbe48e0bb5d445d35484ca804ef4b48a95ed095c7c181bca574213",
"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "051bf0943867b221785de1c7a6638f5681d47b1d8117eaddff407b94c0273e60",
"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_purchase": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11",
"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11",
"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "64a5423955ac886b03d90784cf0f736a020f0fa5d07eb4fcf4f1861742149891",
"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "1746070960750d3d11f75f5c6002657f52f07fce1184b007868e343885bbc599",
"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "d27a750f1a1589df35f62057225cb9681c955fd57905fe5e761a9582ecc58fec",
"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "8f09be162718b6551814c8d77623a1684e911148a4b207bdafae9b57e970e424",
"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out0]": "ba9adc6602d7ef0342480818e0d81b90b3082dd457819c02700e8c8936c3677e",
"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "81e2a9f2c3a86a000401dbf4ff30ff06ef147e1aa2f09faa14a9d1257e9905ac",
"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out1]": "6570eff2b07eb013b695a2ba0edbe6aa77ca7aa0dc947ffb38c9efb49267efd8",
"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "6b2ecc6f92ec11bcade86f2d9dce0701d390b3f27bc135a5bc149aae7d68ba88",
"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request_details": "d4805952d5c2451847b74cda9a01c3607cf7a22cbe3cd6e338d2cd86a4a13e66",
"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11",
@ -18570,17 +18534,6 @@
"T3T1_en_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "3350934f73adc12375536ecc125f42631d0f17f37d5a72c3a6a1a062e9e9e565",
"T3T1_en_bitcoin-test_bcash.py::test_send_bch_nochange": "1b7584ac7451c9449962322655770d6d46eb8bd073e13b3aa605b4da5bae2327",
"T3T1_en_bitcoin-test_bcash.py::test_send_bch_oldaddr": "8c7102bac98a0a09a46bbbeac4c980b4219bb63ac8ad6b1d80797bf9cd991cfd",
"T3T1_en_bitcoin-test_bgold.py::test_attack_change_input": "5969da300e12710b02231cebc1aa57ba60d8ca72338ff976c637de228dd743f0",
"T3T1_en_bitcoin-test_bgold.py::test_send_bitcoin_gold_change": "5969da300e12710b02231cebc1aa57ba60d8ca72338ff976c637de228dd743f0",
"T3T1_en_bitcoin-test_bgold.py::test_send_bitcoin_gold_nochange": "8cbb24c33d0801c03ae2b009cca0b6ade37c5ff437eaa64d8ba640a3da8a3002",
"T3T1_en_bitcoin-test_bgold.py::test_send_btg_external_presigned": "22a3e3baf7afcecc5b457ec9f9063e4d729879f79151bc43e1f0738595207b35",
"T3T1_en_bitcoin-test_bgold.py::test_send_btg_multisig_change": "f3e442202d95479ca14b053ab801b8002f752be016aba1a6057201d74503b9a3",
"T3T1_en_bitcoin-test_bgold.py::test_send_mixed_inputs": "8e93f1dc099203ca34177de6bf7370faa7e846ecedc630b8a16194fe7819d4c8",
"T3T1_en_bitcoin-test_bgold.py::test_send_multisig_1": "8066b6a823c1d5e646934754e74ac85652285ad9fdb23a74bd34c9597f6e5618",
"T3T1_en_bitcoin-test_bgold.py::test_send_p2sh": "f4b11a171cf48210e50e7e45acf9020a92cec3ac854921de0c133f60e3d0a5a0",
"T3T1_en_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "9360c9e41a40282f5ecf6d2ee91fad8e2c10ee3be6634a7eead946eed23f94c7",
"T3T1_en_bitcoin-test_dash.py::test_send_dash": "557a45f80747ccb6622001a7540273589a9cfcbbea18ba4a23fb92e94346ccf3",
"T3T1_en_bitcoin-test_dash.py::test_send_dash_dip2_input": "a0b3ed97530eb7d1a0af8fb7069deeaf73bc5624dee58be0c1ddddbac85e04d8",
"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "b9ecca0a8b6c4750d0af6c9d7433da2704dde0bc7e894778cbfaafb54435630f",
"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "7dd16059ade8769aca12649b7b2523ac52718fb7bb9eb416fa13a5cb747be1b2",
"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "8b434c5de0caf71301bd6b21481bb1944d4b43dd596a7ecb9acb921c8083e955",
@ -18818,8 +18771,6 @@
"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "b92a01f39e829d21e16ede95550b2047ac9ea734a7c61f3e28faa16ebc036ccb",
"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "b92a01f39e829d21e16ede95550b2047ac9ea734a7c61f3e28faa16ebc036ccb",
"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[bcash]": "3c538fad2bd6a1fd6eb3c088d9571142e194e25c53b7f19abff1ef7e03040bb3",
"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[decred-empty]": "bec877a114f2b28638caf4993e6ac8f83a19ec523b09a210dc0b817b1acf1a26",
"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[decred]": "f5d7fddf8c0dfc802b58e565e826cde2d9dcf035c5d07539d16dc01e2c9732c6",
"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "d9e1788e58374fdd27b7fbfc014b8dee59948938dcfed47169a5b2acbe380e02",
"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "55f230ea818b01962d5f545f49e893776fa5d6c6b2bb95c78dec22b7e040b4ee",
"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "103ebfb2f9506a61f3ee1f25de8345048318af26666c0cfd98b25898efe6125d",
@ -18839,8 +18790,6 @@
"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "8696e425489452c226a59a6c6ef276f3faf80bfd4e1e1e868216b88f000f0260",
"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "8696e425489452c226a59a6c6ef276f3faf80bfd4e1e1e868216b88f000f0260",
"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "933d9466accabf431929e82499f29c29b37eb39b0cccd1b6a4a9b022ed6328ba",
"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[decred-empty]": "3961de777b7578dfd5e500285177284462b03c260f2a46f5827bbad906880b5a",
"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[decred]": "2b83146021fc6d4e870ecba9b79eeff057e51f1b92e8f6119afef4c7f1a090b4",
"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "863ed334a92063c27233556e2ebe71c658d99d4a454ea2a7328d97200b4b65af",
"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "b25d95a6546962059efc4b3f7749546a1b938c6084bd52a2a62322cfb4e522cf",
"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "382511a667f1cb2695c1fd140c3e1960f64d034c2cf94f39c017627bfc2d12ff",
@ -18943,15 +18892,12 @@
"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "27b61dec1412f9ac6bac28fe1914d76fcd2fcbc1a9054895786c2419ea50d9f6",
"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "c5e9f2d4508dcdbf7333531487209832041e7d9c5a7e8d9fe9d5b40978c2c885",
"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "3278de4acec9009035c80f1a9cc4dad11570582fa2eaab30aa7c034d4f8d4371",
"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_purchase": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81",
"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81",
"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "9b9fb6db5b35261355f3e335057b7086dae18adb09d94c446294004bc4016876",
"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "da892ff4e7de75f6b3c1fde48c915b4cfd9da2c3f0052552ce0b873c85a539e7",
"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "768b6294843581c691d590202a8ef11c0040fff3189a9b0cde91b1a49d6df87e",
"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "23e3f995af215af80d9dcdb00189a0545a77a40bfe55e195566ccfe41f78d2e1",
"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out0]": "da48ca03cffd80b81d5d17cc8f967af2ea82784357ea894f20bf49d559916feb",
"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "21aac16e5415731c271adb2e145ec9cf6313bb1205612b74f885a839fdb26c74",
"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out1]": "de1b8868c3ef6abd31805540f4bb73b3693bc2ded0acea39ee2e9aa44c131a82",
"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "66e15e830579ed547e8c28908fcdbcb2483658fbb22ae138764a594c82f60053",
"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request_details": "fb9f7cd2571c2c72c56968c57fd0ec16b83d3ab9f0f5be9548d055f37e3f2bb0",
"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81",
@ -19993,17 +19939,6 @@
"T3T1_es_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "076054bed839f3babd158fbe2e31b3450440b384404826f4acdfa47d27ad97cc",
"T3T1_es_bitcoin-test_bcash.py::test_send_bch_nochange": "760956919718a2db556a03fa4f56d319652f97b4ea2ae120e7f2f8e50dc0e4e1",
"T3T1_es_bitcoin-test_bcash.py::test_send_bch_oldaddr": "22977c30f679b8e4e32d6df32d7ad03b1ea88f89507831f29db3d0dae36ec00b",
"T3T1_es_bitcoin-test_bgold.py::test_attack_change_input": "8b01437a2c0f48439411680165ad9e17d0192e82fa7e8bd661c93b25c399cda6",
"T3T1_es_bitcoin-test_bgold.py::test_send_bitcoin_gold_change": "8b01437a2c0f48439411680165ad9e17d0192e82fa7e8bd661c93b25c399cda6",
"T3T1_es_bitcoin-test_bgold.py::test_send_bitcoin_gold_nochange": "e278d0bdbb636e1ac4c0104e22406bac34bb306a55a4632a6d8ac85a7fd065e4",
"T3T1_es_bitcoin-test_bgold.py::test_send_btg_external_presigned": "76bd5e516b65847c293d393ee7c2cb041c1c6130e509df3050c9466dad72fa23",
"T3T1_es_bitcoin-test_bgold.py::test_send_btg_multisig_change": "d5bb12a0c3ee8c066ac2b536c2a53c04d08f28876c2b520c5e4b96a0618d33dd",
"T3T1_es_bitcoin-test_bgold.py::test_send_mixed_inputs": "ffc78dd3979a5880647e4c8f2579915dab175cc4e8f6da0befa960b16cb30020",
"T3T1_es_bitcoin-test_bgold.py::test_send_multisig_1": "ea427fc37728bb7451c1a8b73f7b6300ceb5ec33b6fd5917630a4871bd75661c",
"T3T1_es_bitcoin-test_bgold.py::test_send_p2sh": "774d689147130c4653a7bddfb4cffd35c4188d432fa755241cfa61c50ce194f2",
"T3T1_es_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "5dc24209a2e87b65a38cd18fa0f01685aded24e04be57c0e0355284f5609f5a5",
"T3T1_es_bitcoin-test_dash.py::test_send_dash": "ed3fcc4d9598ec2042ff11a68e6dc90e310c31b74c5e33c221b7e0122f6b85d8",
"T3T1_es_bitcoin-test_dash.py::test_send_dash_dip2_input": "a40dc3ba3c50655eb4e732e065a17a143e2f36549588f9a4acd96de4cadeab07",
"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "faf69144e29bfec469439bc4012b692183d152bc6b9fc22a7a2dece1716e98e7",
"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "15ad18d9c8db8e348a93a8578fac3cda988cf6d96af6380744e1ef1f76c815ca",
"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "23f75434763fb0cf46a9aa84c9990d0750384e972a2b71a41a952e02082724a5",
@ -20241,8 +20176,6 @@
"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "29444723da74b8c2a579bf90cd86863af28ae8f7d7b17a8e0a3dfcf7a67da3fe",
"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "29444723da74b8c2a579bf90cd86863af28ae8f7d7b17a8e0a3dfcf7a67da3fe",
"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[bcash]": "0f4cf24d270f7ca35f92532b581e16e78a98cb23afcb334a3fd64ab8308ee93a",
"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[decred-empty]": "7d62569e13f7fde475f9dcf4e972966d302def211afc34fa4395e9aa519f9723",
"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[decred]": "0333348f49379671a6746124d8b41b91b7f451da99f4373cfe61edd1fa8ca5fd",
"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "fdc905fc6d6bb771080835bc4eb949a9d05f270f195e65ea3569ce6ae8f8c74a",
"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "5931b76ca29d80fc6bd9d562ef8d0cedc346f57215d823f6a70aaacb9619761e",
"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "d3d696582c0163c7108cd38d3fc73796b77e7f383715cf3c5e3a848a75deaac2",
@ -20262,8 +20195,6 @@
"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "9bf0468b4ad28a2ba4fbe6df4c62d6856a821d6245fdcb36aa56768557006705",
"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "9bf0468b4ad28a2ba4fbe6df4c62d6856a821d6245fdcb36aa56768557006705",
"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "74636f72ed305683e9c3526942871a24e5946a85360c552421db5f103d67c75a",
"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[decred-empty]": "c7fc248d0d7780d68d3ba254e4afbbc4d40feeba3d3c5d26c189d75b97e264b3",
"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[decred]": "cb08dddacd3cfe048c82d80adfe68fa7ce97afe03c9f171985416b99dc8b8195",
"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "1d19df4518b618aee1f104f47ae851dacbf5d91f833fd1cb89e33e38d9aa8b06",
"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "b8dfa8d662bffb376830bd476e57e3f7a3e39a2f7bdad18156f45100651ea522",
"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "f0a6c76719fd40d063398e19674f7f5da9a178ba5e218fb681a84ed0d431d329",
@ -20366,15 +20297,12 @@
"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "532ddfa2a37b83af770deb0f376bd86a9dc6f2304781dff220208ebc3e5735b0",
"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "9f4fb4ca24e451a38196b521b89ea034fad9c8065c40b762f40eec287f947af1",
"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "9e748b0ba4eeadfad730263b30515ae61708e21e920724e91ff3305ab37f3b14",
"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_purchase": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03",
"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03",
"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "d7a5283fb30d76c4e19cc9aebd8a386a89bd540cdcbefe1e8342bb5ceda64143",
"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "3792fc93cba778f943cc912d21bc38cf57811cbb4c9e24dba30e34f7f6f4bae5",
"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "45e143a0db817ad229123ddab3cb63d53f25650ed45a430552573d02fec12a57",
"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "a238c7077b7ac501b8fcae467010ab55dfaac2a2bd2f6a3c9dbea4dd71bf771b",
"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out0]": "06c7c1104cc6a641c62a7dc29ec587fe346a7718514ae51b5acd89c169e4d092",
"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "eab039db5f270e1dcde3c6ecb3810d6f20d79bb819e510ba24a5492326e60659",
"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out1]": "309e036bab23c44a687b36b274e08515de4a8b4dd160b23a51b58de06e58845f",
"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "1060c9b344a4292fd30185cf067114f73331d4846905bafa5b16ef8246aa3e9a",
"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request_details": "2bcabd059f2058c42fcb7d175bc334067b9b498e1473e2a27c97a39f0b20f436",
"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03",
@ -21416,17 +21344,6 @@
"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "dd2221808f1902b45b724ffe21ffb0142d71bff83d691f924334b43fedec8341",
"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_nochange": "6c94e1fc6a28506199c4ae9c939a900310706f8c28ed70e094b55952b1f0b8b6",
"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_oldaddr": "8c84232179cdb951ff8a03e92b172e11ea624f7d19c90f9f46ae0da274310ec5",
"T3T1_fr_bitcoin-test_bgold.py::test_attack_change_input": "66ef2ca61c8c8a74420e711a9aebd287dc1ab3382dab28279e398cec92691290",
"T3T1_fr_bitcoin-test_bgold.py::test_send_bitcoin_gold_change": "66ef2ca61c8c8a74420e711a9aebd287dc1ab3382dab28279e398cec92691290",
"T3T1_fr_bitcoin-test_bgold.py::test_send_bitcoin_gold_nochange": "f3cdd5bc58a64d16043a952a1f5d73ecf4631d40ec9c6241311d396f0d86e96a",
"T3T1_fr_bitcoin-test_bgold.py::test_send_btg_external_presigned": "922922a85e0a62e902e5384269c42665e1965338c58e201bd1d4859a57e8561a",
"T3T1_fr_bitcoin-test_bgold.py::test_send_btg_multisig_change": "caec88ade3b6a4b9cea523674c975b006428566e04da154514108bb467a9a3c1",
"T3T1_fr_bitcoin-test_bgold.py::test_send_mixed_inputs": "1a90274f3b3512d2b7586dbb33fc8d6f507a5acb2bda504c345b239f4af4f811",
"T3T1_fr_bitcoin-test_bgold.py::test_send_multisig_1": "7865240bfbbdea7a6776d10b23ca5ba413264b67b752df1e16b7d9ca83e2d0f3",
"T3T1_fr_bitcoin-test_bgold.py::test_send_p2sh": "a76d1bf35f9d7a14a84285a49c033e70a2461d53648b85cd543bb0db22a4454d",
"T3T1_fr_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "be144179df24ade3ee49bf03f8e1a0763146cc7ffa40844a03842cfc6eead134",
"T3T1_fr_bitcoin-test_dash.py::test_send_dash": "356d06db25278b9221a08e1a413a599ddb63d8cf0da84b9aef77f3354c8c0094",
"T3T1_fr_bitcoin-test_dash.py::test_send_dash_dip2_input": "e3e432acaba01dd2873c0ec5164f717bc75bc64177f6629d64ba3123d164147d",
"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "fffd40e65d50d0e2b0a7fc9adca24ce57f761fe1dd770613b3781508b5efb5c1",
"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "f1ceed290f715e6bc8fcb8ded2f7724c5bd4851385e0deec272ee5c465b4a5a7",
"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "140368bad3e036123a498e7b466ed1242de98d81bd7159c4bd74d9944c8762eb",
@ -21664,8 +21581,6 @@
"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "3bf114453b7b17be8884565abcac6f18de22d16324bc13ee8ea4f942e60312f0",
"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "3bf114453b7b17be8884565abcac6f18de22d16324bc13ee8ea4f942e60312f0",
"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[bcash]": "2d88ec77eae7b5c70461779f63a7e2158e1ecfa70d90e993976c68127c860626",
"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[decred-empty]": "ca47f1e152ea9aff2238782fa963249307f184dce3c62a908bb2f81e5b3fcb66",
"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[decred]": "0adcb2ce7ef3b40f59eef4710b3ec02be14c28b1d3b53bb8918dcaa4d6474f2c",
"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "9c3fa3efbf2e18aea8a5bd46988faba64bdb3a029d3285d07ebfbfd6f5cf3476",
"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "c49fa73d7893ed6d5cf3f292f227ebe53b74d96747c85ecc50992d8f5f23268c",
"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "6d3f14cd30ba8bc15a35e70c5a354b763c8f0240f09e2e0cc949fe29a814e6ba",
@ -21685,8 +21600,6 @@
"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "c3498e76f9562b619361c1534798fb16ad46e700a2eb3778378bd713b0b6de96",
"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "c3498e76f9562b619361c1534798fb16ad46e700a2eb3778378bd713b0b6de96",
"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "3dc9a0cba65c6e5f8e6aef9134cc84f1deb6f6ef1cf153be3036549fe200258f",
"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[decred-empty]": "328eb62c44d57907c787b4eda347a0dfaefffdf0ab79154fd52ea617fa69e11b",
"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[decred]": "8666a062ebcf221897981aa0cbea2d55e4cf12c3564e8d3c36f619e48aa88875",
"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "8718ea206a27babb2a716640e274aa53ff5f4beae2fce1ecbfbd8311752073d0",
"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "f4299a9a91b7f346e2096811576f01ad576e67cf6e8c6b72884cedb709aaaa77",
"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "6b8613dd47a39b04617d7f3dc0de01aaca2473da798523438ceeb00b16f044e6",
@ -21789,15 +21702,12 @@
"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "aa3b0c52904df02464f9fb84464615c9d35358a2346ac559b9880d283c175f7c",
"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "32fbb5c64e81b24b52f670bd09e606387ba1aad8ded56434f03e51232c68517d",
"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "589e68ec22c683a51099fc3c3253927ab2775492edfd3d23f829fdd4fb8a7931",
"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_purchase": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8",
"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8",
"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "5b7b68478a9f04493f74fd489ab61e17940563b1782f1dcb5212f4fa98774500",
"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "5604efb8e7b5ad8957ef5e8cd29888ac8d708dea2555779efe5006bf194491f6",
"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "4438d00be13195b83dccfc6acec4203dedea6b470434f084e38f6a447203f13e",
"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "3c6c0c9dfa1a8a3cd37ebf3a91f1dac88574e742fcadc333e657a4872f726e2a",
"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out0]": "9456ff82d2e3559cb3e66d0c34e04f9e44a7d5cace587addb698586ff9bdc8e3",
"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "4c1c07c7d569f9ab198a119d3d7750a086ce495114bab94d05a4cc585dc96612",
"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out1]": "3a6160bb576e590b3f290b0dc1da58c98f40e1e50204a86a0bab7777ceb051eb",
"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "a76f6d07808ab5f7c7839c2f838578ffbaa5966c483b371871cb2a4b3bd4f10f",
"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request_details": "24763707be8b2c53bbe42307ea51dd51914c58cd4cd3e2b145dbc89e36560f15",
"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8",