1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2024-12-23 14:58:09 +00:00

feat(core): show account info in ETH send/stake flow

This commit is contained in:
Ioan Bizău 2024-09-12 15:56:07 +02:00 committed by Ioan Bizău
parent 53c52cbf48
commit 6da38f4cf3
9 changed files with 149 additions and 84 deletions

View File

@ -0,0 +1 @@
[T3T1] Show account info in ETH send/stake flow.

View File

@ -163,6 +163,7 @@ impl FlowState for ConfirmOutputWithSummary {
(Self::MainMenu, FlowMsg::Choice(MENU_ITEM_CANCEL)) => {
Self::MainMenuCancel.swipe_left()
}
(Self::AccountInfo, FlowMsg::Cancelled) => Self::MainMenu.swipe_right(),
(Self::MainMenuCancel, FlowMsg::Cancelled) => Self::MainMenu.swipe_right(),
(Self::AddressInfo, FlowMsg::Info) => Self::MainMenu.transit(),
(Self::Summary, FlowMsg::Info) => Self::SummaryMenu.transit(),

View File

@ -195,6 +195,22 @@ def format_ethereum_amount(
return f"{amount} {suffix}"
def get_account_and_path(address_n: list[int]) -> tuple[str | None, str | None]:
from apps.common import paths
from .keychain import PATTERNS_ADDRESS
if not address_n or len(address_n) < 2:
return (None, None)
slip44_id = address_n[1] # it depends on the network (ETH vs ETC...)
account = paths.get_account_name("ETH", address_n, PATTERNS_ADDRESS, slip44_id)
account_path = paths.address_n_to_str(address_n)
return (account, account_path)
def _from_bytes_bigendian_signed(b: bytes) -> int:
negative = b[0] & 0x80
if negative:

View File

@ -9,7 +9,12 @@ from trezor.ui.layouts import (
should_show_more,
)
from .helpers import address_from_bytes, decode_typed_data, format_ethereum_amount
from .helpers import (
address_from_bytes,
decode_typed_data,
format_ethereum_amount,
get_account_and_path,
)
if TYPE_CHECKING:
from typing import Awaitable, Iterable
@ -25,6 +30,7 @@ if TYPE_CHECKING:
async def require_confirm_tx(
to_bytes: bytes,
value: int,
address_n: list[int],
maximum_fee: str,
fee_info_items: Iterable[tuple[str, str]],
network: EthereumNetworkInfo,
@ -41,14 +47,23 @@ async def require_confirm_tx(
total_amount = format_ethereum_amount(value, token, network)
account, account_path = get_account_and_path(address_n)
await confirm_ethereum_tx(
to_str, total_amount, maximum_fee, fee_info_items, chunkify=chunkify
to_str,
total_amount,
account,
account_path,
maximum_fee,
fee_info_items,
chunkify=chunkify,
)
async def require_confirm_stake(
addr_bytes: bytes,
value: int,
address_n: list[int],
maximum_fee: str,
fee_info_items: Iterable[tuple[str, str]],
network: EthereumNetworkInfo,
@ -57,12 +72,16 @@ async def require_confirm_stake(
addr_str = address_from_bytes(addr_bytes, network)
total_amount = format_ethereum_amount(value, None, network)
account, account_path = get_account_and_path(address_n)
await confirm_ethereum_staking_tx(
TR.ethereum__staking_stake, # title
TR.ethereum__staking_stake_intro, # intro_question
TR.ethereum__staking_stake, # verb
total_amount, # total_amount
maximum_fee, # maximum_fee
total_amount,
account,
account_path,
maximum_fee,
addr_str, # address
TR.ethereum__staking_stake_address, # address_title
fee_info_items, # info_items
@ -73,6 +92,7 @@ async def require_confirm_stake(
async def require_confirm_unstake(
addr_bytes: bytes,
value: int,
address_n: list[int],
maximum_fee: str,
fee_info_items: Iterable[tuple[str, str]],
network: EthereumNetworkInfo,
@ -81,13 +101,16 @@ async def require_confirm_unstake(
addr_str = address_from_bytes(addr_bytes, network)
total_amount = format_ethereum_amount(value, None, network)
account, account_path = get_account_and_path(address_n)
await confirm_ethereum_staking_tx(
TR.ethereum__staking_unstake, # title
TR.ethereum__staking_unstake_intro, # intro_question
TR.ethereum__staking_unstake, # verb
total_amount, # total_amount
maximum_fee, # maximum_fee
total_amount,
account,
account_path,
maximum_fee,
addr_str, # address
TR.ethereum__staking_stake_address, # address_title
fee_info_items, # info_items
@ -97,6 +120,7 @@ async def require_confirm_unstake(
async def require_confirm_claim(
addr_bytes: bytes,
address_n: list[int],
maximum_fee: str,
fee_info_items: Iterable[tuple[str, str]],
network: EthereumNetworkInfo,
@ -104,12 +128,16 @@ async def require_confirm_claim(
) -> None:
addr_str = address_from_bytes(addr_bytes, network)
account, account_path = get_account_and_path(address_n)
await confirm_ethereum_staking_tx(
TR.ethereum__staking_claim, # title
TR.ethereum__staking_claim_intro, # intro_question
TR.ethereum__staking_claim, # verb
"", # total_amount
maximum_fee, # maximum_fee
account,
account_path,
maximum_fee,
addr_str, # address
TR.ethereum__staking_claim_address, # address_title
fee_info_items, # info_items

View File

@ -138,6 +138,7 @@ async def confirm_tx_data(
await require_confirm_tx(
recipient,
value,
msg.address_n,
maximum_fee,
fee_items,
defs.network,
@ -175,6 +176,7 @@ async def handle_staking(
if func_sig == constants.SC_FUNC_SIG_CLAIM:
await _handle_staking_tx_claim(
data_reader,
msg,
address_bytes,
maximum_fee,
fee_items,
@ -325,6 +327,7 @@ async def _handle_staking_tx_stake(
await require_confirm_stake(
address_bytes,
int.from_bytes(msg.value, "big"),
msg.address_n,
maximum_fee,
fee_items,
network,
@ -364,6 +367,7 @@ async def _handle_staking_tx_unstake(
await require_confirm_unstake(
address_bytes,
value,
msg.address_n,
maximum_fee,
fee_items,
network,
@ -373,6 +377,7 @@ async def _handle_staking_tx_unstake(
async def _handle_staking_tx_claim(
data_reader: BufferReader,
msg: MsgInSignTx,
staking_addr: bytes,
maximum_fee: str,
fee_items: Iterable[tuple[str, str]],
@ -385,7 +390,9 @@ async def _handle_staking_tx_claim(
if data_reader.remaining_count() != 0:
raise DataError("Invalid staking transaction call")
await require_confirm_claim(staking_addr, maximum_fee, fee_items, network, chunkify)
await require_confirm_claim(
staking_addr, msg.address_n, maximum_fee, fee_items, network, chunkify
)
_progress_obj: ProgressLayout | None = None

View File

@ -1027,6 +1027,8 @@ if not utils.BITCOIN_ONLY:
async def confirm_ethereum_tx(
recipient: str,
total_amount: str,
account: str | None,
account_path: str | None,
maximum_fee: str,
fee_info_items: Iterable[tuple[str, str]],
br_name: str = "confirm_ethereum_tx",
@ -1042,8 +1044,8 @@ if not utils.BITCOIN_ONLY:
amount=None,
chunkify=chunkify,
text_mono=True,
account=None,
account_path=None,
account=account,
account_path=account_path,
address=None,
address_title=None,
br_code=ButtonRequestType.Other,
@ -1066,6 +1068,8 @@ if not utils.BITCOIN_ONLY:
intro_question: str,
verb: str,
total_amount: str,
account: str | None,
account_path: str | None,
maximum_fee: str,
address: str,
address_title: str,
@ -1090,8 +1094,8 @@ if not utils.BITCOIN_ONLY:
amount=None,
chunkify=False,
text_mono=False,
account=None,
account_path=None,
account=account,
account_path=account_path,
br_code=br_code,
br_name=br_name,
address=address,

View File

@ -1191,6 +1191,8 @@ if not utils.BITCOIN_ONLY:
intro_question: str,
verb: str,
total_amount: str,
_account: str | None,
_account_path: str | None,
maximum_fee: str,
address: str,
address_title: str,
@ -1268,6 +1270,8 @@ if not utils.BITCOIN_ONLY:
async def confirm_ethereum_tx(
recipient: str,
total_amount: str,
_account: str | None,
_account_path: str | None,
maximum_fee: str,
fee_info_items: Iterable[tuple[str, str]],
br_name: str = "confirm_ethereum_tx",

View File

@ -1097,6 +1097,8 @@ if not utils.BITCOIN_ONLY:
async def confirm_ethereum_tx(
recipient: str,
total_amount: str,
_account: str | None,
_account_path: str | None,
maximum_fee: str,
fee_info_items: Iterable[tuple[str, str]],
br_name: str = "confirm_ethereum_tx",
@ -1145,6 +1147,8 @@ if not utils.BITCOIN_ONLY:
intro_question: str,
verb: str,
total_amount: str,
_account: str | None,
_account_path: str | None,
maximum_fee: str,
address: str,
address_title: str,

View File

@ -19467,18 +19467,18 @@
"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "6ce1d66af3f9e857b66dd057a60f5f5bcba6e7a0a241a08855d109a2fc440ac7",
"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "6ce1d66af3f9e857b66dd057a60f5f5bcba6e7a0a241a08855d109a2fc440ac7",
"T3T1_cs_ethereum-test_signtx.py::test_signtx_fee_info": "6a43a117d79ced98980f2c3d63b8cf7c580326f8df601be465627f1131a8606d",
"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "de5a3f76a0c9bc879f9046285a050a36738d369ce2fc01e13733838795fe574b",
"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "534d5a30dda303900259c190868d8143af063282e35e685e71788e92d0937e38",
"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "d00a990e3511885aeea98d5ff004da4b59614faea1bdfb3efab445f431c282b4",
"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "4a36106048823d8f95f2ed06d988ae2c5d61ca2132f5f3b198eda08671d399ca",
"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "c0c90a36e3be72160ef50ed2355fa022fdcb2735c381f22512ebb5b4d9290a2f",
"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "35f51f28bc80f3517e6ce4fea2a4763833a828aa0f970a4766ee619f48e332e8",
"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "de5a3f76a0c9bc879f9046285a050a36738d369ce2fc01e13733838795fe574b",
"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "534d5a30dda303900259c190868d8143af063282e35e685e71788e92d0937e38",
"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "d00a990e3511885aeea98d5ff004da4b59614faea1bdfb3efab445f431c282b4",
"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "4a36106048823d8f95f2ed06d988ae2c5d61ca2132f5f3b198eda08671d399ca",
"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "c0c90a36e3be72160ef50ed2355fa022fdcb2735c381f22512ebb5b4d9290a2f",
"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "35f51f28bc80f3517e6ce4fea2a4763833a828aa0f970a4766ee619f48e332e8",
"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "f7d23a1ad9a22591de9cf34d411c757d157705ece74aef5764bca4e5039f3340",
"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "a1501dfb92f0db28e9313765c6ba37ef86b2b22d0bf3a2ed75b88567f0dc93d9",
"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "67a3a27ffe843ebd4d3d7ae265ccecf2879e7a0b220fd31a5208c1587aad713c",
"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "3f882efbfa16f689ce24fcc4caa91b64aac5ead63d11237a37448780e68c2f5b",
"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "1fe62393e7884571749d426904cabea5a49efced8ce3db6c51d5fa761c11943d",
"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "0bdba9f22c02c578ca339c29a9a932e625ac06d36f114d0aface334ebaa07843",
"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "f7d23a1ad9a22591de9cf34d411c757d157705ece74aef5764bca4e5039f3340",
"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "a1501dfb92f0db28e9313765c6ba37ef86b2b22d0bf3a2ed75b88567f0dc93d9",
"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "67a3a27ffe843ebd4d3d7ae265ccecf2879e7a0b220fd31a5208c1587aad713c",
"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "3f882efbfa16f689ce24fcc4caa91b64aac5ead63d11237a37448780e68c2f5b",
"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "1fe62393e7884571749d426904cabea5a49efced8ce3db6c51d5fa761c11943d",
"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "0bdba9f22c02c578ca339c29a9a932e625ac06d36f114d0aface334ebaa07843",
"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "db145237dd6797d9dd5204b63976d890465fa96aa121b5a84032f6d62955b6d1",
"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "db145237dd6797d9dd5204b63976d890465fa96aa121b5a84032f6d62955b6d1",
"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "db145237dd6797d9dd5204b63976d890465fa96aa121b5a84032f6d62955b6d1",
@ -20825,18 +20825,18 @@
"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "fe02b97c28cec0b8f6c03cd93fe6219b3b732390bb98badf5a6f35a82cb997ef",
"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "fe02b97c28cec0b8f6c03cd93fe6219b3b732390bb98badf5a6f35a82cb997ef",
"T3T1_de_ethereum-test_signtx.py::test_signtx_fee_info": "17a4d8511d786f95410c1cfe55ab6df1c54edd581637839380d504a9a943192e",
"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "f27b041783cc79a22c11ed668a003c906f1065aa76d8f16b30472d04409a154a",
"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "c33ae42431c166ca0cece0f9e22caacd96dde3afa5fef705aebafc649e92ce5b",
"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "f69d79f138e87dcde788d6fe50362e14c4954431f940dc9ac958c4caeceead93",
"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "d8a29f667f4e48fffe17f13cd698b19b855ce97c60d1e22628136fe08d55c44f",
"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "9e70a5e0158171f5f74fdcf801684dff0aea6d0f97076046b0f18af209d3325d",
"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "c6a47a4a4899ae0cb796692e3d0570440daceab947a0442ea2f62fa5e5a6fa74",
"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "f27b041783cc79a22c11ed668a003c906f1065aa76d8f16b30472d04409a154a",
"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "c33ae42431c166ca0cece0f9e22caacd96dde3afa5fef705aebafc649e92ce5b",
"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "f69d79f138e87dcde788d6fe50362e14c4954431f940dc9ac958c4caeceead93",
"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "d8a29f667f4e48fffe17f13cd698b19b855ce97c60d1e22628136fe08d55c44f",
"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "9e70a5e0158171f5f74fdcf801684dff0aea6d0f97076046b0f18af209d3325d",
"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "c6a47a4a4899ae0cb796692e3d0570440daceab947a0442ea2f62fa5e5a6fa74",
"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "d284e56e14343ea9dacaa363535bbec3b79b14f71c4ce6b4b63167efd54a7cc8",
"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "7f3d8d34e917b13228468fa24af4a9b4b9550f6ba46f5a2a24c6a4eaebc8fe5f",
"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "ae40b57c74e7bbd3d89f9276a154b266c72940d9a3958ab6a8860eb7dc9c4094",
"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "e90e3fc6ddfbd749b925ebcc50afe57f0f99902b6144427f132b3e17a2f34cd1",
"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "d2ac24d80a295746e4eb84d0789f3a167a751fe68a43bedd0a2501d22def025e",
"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "54b473af2dd5738cd3546be7c1b42a34494af6d491f5454ddacdca14f3e9d5c5",
"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "d284e56e14343ea9dacaa363535bbec3b79b14f71c4ce6b4b63167efd54a7cc8",
"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "7f3d8d34e917b13228468fa24af4a9b4b9550f6ba46f5a2a24c6a4eaebc8fe5f",
"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "ae40b57c74e7bbd3d89f9276a154b266c72940d9a3958ab6a8860eb7dc9c4094",
"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "e90e3fc6ddfbd749b925ebcc50afe57f0f99902b6144427f132b3e17a2f34cd1",
"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "d2ac24d80a295746e4eb84d0789f3a167a751fe68a43bedd0a2501d22def025e",
"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "54b473af2dd5738cd3546be7c1b42a34494af6d491f5454ddacdca14f3e9d5c5",
"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "adfe275fcc2caed0137079330cbc85aaccecf9e5fdc0404238db121212124edf",
"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "adfe275fcc2caed0137079330cbc85aaccecf9e5fdc0404238db121212124edf",
"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "adfe275fcc2caed0137079330cbc85aaccecf9e5fdc0404238db121212124edf",
@ -22183,18 +22183,18 @@
"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "dd2790ac7fa5c240b051e85342d6368d0deac5a5cf8c7c8c4af1c09e3cf7182f",
"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "dd2790ac7fa5c240b051e85342d6368d0deac5a5cf8c7c8c4af1c09e3cf7182f",
"T3T1_en_ethereum-test_signtx.py::test_signtx_fee_info": "b85b87c6946ad2074272ae7156fd6a5bfec4db17f12290c8b88d1bde1b551565",
"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "c9ea54681f77d78b130719dec5be110ae0268f499466cc4656e96aa090c7f057",
"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "ef7330fe5b7ef7d9bef858d63bd78401ffacb39ee2b07134f74c25ca0ac057e2",
"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "ee0a79a53b01e068bfee5ecc98597d4c6504b241ddff2eed22fadd0c4690913f",
"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "28a8ede2baa9b729d626e128451452e335e3161dbc651867c9ed70a2192d4944",
"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "e5b6b99c47e6f5bf2d0dda1c317db61858ca42f5ab67ef268379770bc01ccc86",
"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "47ab2304a91cfbf820996c7514b5cc25d2f5fa317c294f6f7d60914836a1e25f",
"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "c9ea54681f77d78b130719dec5be110ae0268f499466cc4656e96aa090c7f057",
"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "ef7330fe5b7ef7d9bef858d63bd78401ffacb39ee2b07134f74c25ca0ac057e2",
"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "ee0a79a53b01e068bfee5ecc98597d4c6504b241ddff2eed22fadd0c4690913f",
"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "28a8ede2baa9b729d626e128451452e335e3161dbc651867c9ed70a2192d4944",
"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "e5b6b99c47e6f5bf2d0dda1c317db61858ca42f5ab67ef268379770bc01ccc86",
"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "47ab2304a91cfbf820996c7514b5cc25d2f5fa317c294f6f7d60914836a1e25f",
"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "eaca0e98888546de42dccfc6f08cb371f4bbb0b2683b9809a95abdf21d93d137",
"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "6864d04cd868e5c6140011d07bfbafc7b94a1947e817ec41dca99cce329f01ca",
"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "8571b93330b2f8e1d0cfe5afa4ad4facc42c7ba15217b4aa4ee66fdf31fac767",
"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "5c6ad16fa5749fc08af9e54c88044b723665fa7c5cc669ef7b086e96dc74bc09",
"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "d800aacbe852eb06a4dc3f077c24042058878fce5c35a7c75050e881484e0739",
"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "46c83ead0992edc76ca8452682ec1a7c35f5562eedfb89b27cdf4b7b27573b05",
"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "eaca0e98888546de42dccfc6f08cb371f4bbb0b2683b9809a95abdf21d93d137",
"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "6864d04cd868e5c6140011d07bfbafc7b94a1947e817ec41dca99cce329f01ca",
"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "8571b93330b2f8e1d0cfe5afa4ad4facc42c7ba15217b4aa4ee66fdf31fac767",
"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "5c6ad16fa5749fc08af9e54c88044b723665fa7c5cc669ef7b086e96dc74bc09",
"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "d800aacbe852eb06a4dc3f077c24042058878fce5c35a7c75050e881484e0739",
"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "46c83ead0992edc76ca8452682ec1a7c35f5562eedfb89b27cdf4b7b27573b05",
"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "886a329a63547ee0f07547685dfc1c8677587c3471fe1bcba81c6a9363659185",
"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "886a329a63547ee0f07547685dfc1c8677587c3471fe1bcba81c6a9363659185",
"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "886a329a63547ee0f07547685dfc1c8677587c3471fe1bcba81c6a9363659185",
@ -23541,18 +23541,18 @@
"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "8f70757da8d2e04371c54ce284f59c7d1212eb3f4a9e035b1afa09dea6dda976",
"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "8f70757da8d2e04371c54ce284f59c7d1212eb3f4a9e035b1afa09dea6dda976",
"T3T1_es_ethereum-test_signtx.py::test_signtx_fee_info": "2fb56492bae54739eb8af2259ea05fff90397dc4ca16ed0ab859566a97c5ec48",
"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "82e98ccae78a78f96e67e7ba2d137036375d97c2e3644c4ecbc63941cbef8adc",
"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "69aa565c1f41969831a03a37075ff02a16333357a956aabdf0771af9be070fdd",
"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "45430e948c1725caf0769bb44bc338d1ecb4258d8a88a85e9849131674be08d9",
"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "601545c5963df3c325a2d72510d0ceb1e9c05cd753b802c9e44fb7735ca1bbe1",
"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "aaaacd4652ba80623098ea6606d5d284c3c8eb13938919339c25db8a120568de",
"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "7dfc04f0d6289822e0ae017dd517df67f2cedc26d7a7dfca0f952b1a7489896f",
"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "82e98ccae78a78f96e67e7ba2d137036375d97c2e3644c4ecbc63941cbef8adc",
"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "69aa565c1f41969831a03a37075ff02a16333357a956aabdf0771af9be070fdd",
"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "45430e948c1725caf0769bb44bc338d1ecb4258d8a88a85e9849131674be08d9",
"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "601545c5963df3c325a2d72510d0ceb1e9c05cd753b802c9e44fb7735ca1bbe1",
"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "aaaacd4652ba80623098ea6606d5d284c3c8eb13938919339c25db8a120568de",
"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "7dfc04f0d6289822e0ae017dd517df67f2cedc26d7a7dfca0f952b1a7489896f",
"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "2b15b2a238452fa4a9095eac6748b7c484353f44922ed0797a30797755384776",
"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "927f9b792254498b01d3893ac1f1f050b0ef3f571bb6c29ab58f9ee4c55650d3",
"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "cd74a5bf3f9e89420e0f5d7cfb011b81bd6c667a4685240f32d97f7cb08bdca1",
"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "5b3285edfebf1e9b71c5c8971603dbd311e747a8a48bd762039bf9ce511fc15a",
"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "de1c1127ae860aa7f009bfdbebec0708d49ddac3c6d0f067218ecc6fc74e25e1",
"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "af6c05f4a84a3ddd26f3d25924065b6c2ec5390025d9ac920cff25041215db02",
"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "2b15b2a238452fa4a9095eac6748b7c484353f44922ed0797a30797755384776",
"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "927f9b792254498b01d3893ac1f1f050b0ef3f571bb6c29ab58f9ee4c55650d3",
"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "cd74a5bf3f9e89420e0f5d7cfb011b81bd6c667a4685240f32d97f7cb08bdca1",
"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "5b3285edfebf1e9b71c5c8971603dbd311e747a8a48bd762039bf9ce511fc15a",
"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "de1c1127ae860aa7f009bfdbebec0708d49ddac3c6d0f067218ecc6fc74e25e1",
"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "af6c05f4a84a3ddd26f3d25924065b6c2ec5390025d9ac920cff25041215db02",
"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "9e2b64f79ece46f82e116b01abc0a03d1edf7bb2deb53a5216e6665f97ac2840",
"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "9e2b64f79ece46f82e116b01abc0a03d1edf7bb2deb53a5216e6665f97ac2840",
"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "9e2b64f79ece46f82e116b01abc0a03d1edf7bb2deb53a5216e6665f97ac2840",
@ -24899,18 +24899,18 @@
"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "19b948f557ebf500d80540e5b86a03f2be9dfa8e6a30686e4c3efa89689b78e1",
"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "19b948f557ebf500d80540e5b86a03f2be9dfa8e6a30686e4c3efa89689b78e1",
"T3T1_fr_ethereum-test_signtx.py::test_signtx_fee_info": "7f9aece317e149abd566d9028ad68752eb8226e2775d1655c3e60ef5a6980a63",
"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "530a5248700ab678e2a50cfc7ba82055244017d504103e3faf489b6597fa3c7c",
"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "2fbe548d3804327aaa755bdf487247c48f5c2692a38d84ebcc4acac742f9a97c",
"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "2429e6e0d42c8a884e78ff514b13c4ae79aaf6806be1defc1d36a13c91c52255",
"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "9c2e18f0027225df5cc9e34c3909b2d1dad1f693d75a1e5303d19c102a8f3c95",
"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "3087490d11bf2b6bd4227df53008f5a414145a0fde90274d5b17461b84e9840d",
"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "19122522ea3086aa7ad69ac4029ed1b7c589c32c459d0b923a799eb45bbe5993",
"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "530a5248700ab678e2a50cfc7ba82055244017d504103e3faf489b6597fa3c7c",
"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "2fbe548d3804327aaa755bdf487247c48f5c2692a38d84ebcc4acac742f9a97c",
"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "2429e6e0d42c8a884e78ff514b13c4ae79aaf6806be1defc1d36a13c91c52255",
"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "9c2e18f0027225df5cc9e34c3909b2d1dad1f693d75a1e5303d19c102a8f3c95",
"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "3087490d11bf2b6bd4227df53008f5a414145a0fde90274d5b17461b84e9840d",
"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "19122522ea3086aa7ad69ac4029ed1b7c589c32c459d0b923a799eb45bbe5993",
"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "6441c96b6becfa38138655e8f05ebbd1f13221858600778c534bc4981243c0b2",
"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "e3a2b87b37bb2fba493d88af15c4b2418948e2f74c83fcc8e6b3e84fd9f34f82",
"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "47321b89b053a91c2d1281477cafeaf0add040425beb8717496c1afed68ddf11",
"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "6932008bb490bcd8a5a9e561666ed28d4774eed08a3f0c3f0b626625fb8b47c6",
"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "b4d6d88db5a9ab2a9682682cfaadd44d075887ea9806ef5f8f189b1ace6e74c6",
"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "1e3f8b29466d4bfc7cdbebfdc2e3df28eddc13ff01e2869eba72ec50b6ee8c90",
"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "6441c96b6becfa38138655e8f05ebbd1f13221858600778c534bc4981243c0b2",
"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "e3a2b87b37bb2fba493d88af15c4b2418948e2f74c83fcc8e6b3e84fd9f34f82",
"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "47321b89b053a91c2d1281477cafeaf0add040425beb8717496c1afed68ddf11",
"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "6932008bb490bcd8a5a9e561666ed28d4774eed08a3f0c3f0b626625fb8b47c6",
"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "b4d6d88db5a9ab2a9682682cfaadd44d075887ea9806ef5f8f189b1ace6e74c6",
"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "1e3f8b29466d4bfc7cdbebfdc2e3df28eddc13ff01e2869eba72ec50b6ee8c90",
"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "84bc5711f80dff8ebb527d9204da271acc3ce29e17caacec880253ff12a418c2",
"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "84bc5711f80dff8ebb527d9204da271acc3ce29e17caacec880253ff12a418c2",
"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "84bc5711f80dff8ebb527d9204da271acc3ce29e17caacec880253ff12a418c2",
@ -26257,18 +26257,18 @@
"T3T1_pt_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "b06e4b38014e26e07636569fa11e736cf439c345088249a8255b17e6f8ca99c8",
"T3T1_pt_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "b06e4b38014e26e07636569fa11e736cf439c345088249a8255b17e6f8ca99c8",
"T3T1_pt_ethereum-test_signtx.py::test_signtx_fee_info": "fbe7b97531a1a06ff335360839d5c7ffc46adca1234a8d51f51185dbbf1c73c9",
"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "974ebc89d8530de01d5fd04008a1b78edcf9b36fa3e0adf1781e5e3b7708a350",
"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "ff4cf1a7a89f9c089cde3ab625da301c1af8e998fe21922d6e83a124961b4c05",
"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "47577146740a912be17d43ba16df22987d9457b02964212d7ca5ed168dbe68d4",
"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "da7072ef2fe4466c575d776e7836c0da67b10fc095d744a53d12cb509c93ddc9",
"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "50c9e0699cfe14710ad51aad303b1eea326e09c8f4c8f27366083bed7397607d",
"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "faa65dbc95970debaf3c3e3e82c286aa127541da8ff021b43bd9d19bdf6809e9",
"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "974ebc89d8530de01d5fd04008a1b78edcf9b36fa3e0adf1781e5e3b7708a350",
"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "ff4cf1a7a89f9c089cde3ab625da301c1af8e998fe21922d6e83a124961b4c05",
"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "47577146740a912be17d43ba16df22987d9457b02964212d7ca5ed168dbe68d4",
"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "da7072ef2fe4466c575d776e7836c0da67b10fc095d744a53d12cb509c93ddc9",
"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "50c9e0699cfe14710ad51aad303b1eea326e09c8f4c8f27366083bed7397607d",
"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "faa65dbc95970debaf3c3e3e82c286aa127541da8ff021b43bd9d19bdf6809e9",
"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "6404f817df4b3e919d19cc93f3daec90ba28020a2cb9b022f51d892be96c8908",
"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "10a20b78b223167e82bd4e5ebdd47d689b8567433d8e5eb42d1d9d2a119bd657",
"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "aa4f9c9fb94b162f98432b0a7c8ebfd0c3c5a0abb976e6aa6258d8591f88e6ac",
"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "b9efabdb918ef01d2a1169f80af965265c9174129b152ce728df14bc6a9ac8e2",
"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "2faad6f013095ca5be931021f7e589e117ce395634fc6ece73733649b2cccb42",
"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "5c8a33e1c9e2ff52714fdc9a32f39dce4a3772bca95e29931ed623f0f23aa42d",
"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "6404f817df4b3e919d19cc93f3daec90ba28020a2cb9b022f51d892be96c8908",
"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "10a20b78b223167e82bd4e5ebdd47d689b8567433d8e5eb42d1d9d2a119bd657",
"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "aa4f9c9fb94b162f98432b0a7c8ebfd0c3c5a0abb976e6aa6258d8591f88e6ac",
"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "b9efabdb918ef01d2a1169f80af965265c9174129b152ce728df14bc6a9ac8e2",
"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "2faad6f013095ca5be931021f7e589e117ce395634fc6ece73733649b2cccb42",
"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "5c8a33e1c9e2ff52714fdc9a32f39dce4a3772bca95e29931ed623f0f23aa42d",
"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "a31f83fbfe8b45f848ffa9542f48a0f8ccb71d88acc10a3bbc30ee8097cbb365",
"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "a31f83fbfe8b45f848ffa9542f48a0f8ccb71d88acc10a3bbc30ee8097cbb365",
"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "a31f83fbfe8b45f848ffa9542f48a0f8ccb71d88acc10a3bbc30ee8097cbb365",