feat(ethereum): Add Merkl claim support.
What changed, and why it matters
This commit adds support for displaying human-readable confirmation screens when users claim rewards through the Merkl/claim.xyz rewards distributor on Ethereum. It replaces a placeholder that previously forced blind signing for these transactions. The change lets the Trezor show the token and amount being claimed instead of just raw transaction data, but only for a specific known distributor address and only when the claim is for the signer themselves.
Review the clear-signing parser's handling of the omitted `bytes32[][] proofs` array to ensure the top-level length check cannot be bypassed by malformed ABI offsets or lengths. Verify that the hardcoded distributor address and chain restrictions are correct and that the fallback-to-blind-signing behavior is acceptable for user security. Consider whether the 4-token definition cap could lead to inconsistent UI behavior for larger claims.
Security signals we found
New clear-signing path for Merkl reward claims
Hardcoded allowlist to a single distributor contract address
Manual, partial validation of the nested `bytes32[][] proofs` parameter
Fallback to blind signing when safety constraints are not met
Cap on token-definition fetching (<=4 tokens) to limit resource use
Non-zero ETH value rejected for claim transactions
User-address uniformity and signer-match enforced before UI confirmation
Evidence from the diff
The patch implements clear-signing support for the claim(address[] users, address[] tokens, uint256[] amounts, bytes32[][] proofs) selector in Trezor’s Ethereum app. It introduces a CLAIM_DISPLAY_FORMAT using the existing clear-signing framework, parses the first three array parameters, manually validates only the top-level structure of the proofs array (skipping per-element parsing to avoid allocation), enforces that all users entries are identical and match the transaction sender, restricts the flow to the hardcoded Merkl/claim.xyz distributor address, and fetches token definitions from Trezor Connect for up to four tokens (with MORPHO hardcoded on Ethereum mainnet). If any safety check fails, the code falls back to blind signing by returning None.
Changed components
core/src/apps/ethereum/yielding.pycore/src/apps/ethereum/yielding_vaults.pycommon/tests/fixtures/ethereum/sign_tx.jsontests/ui_tests/fixtures.jsonInspect captured patch +303 / −61
diff --git a/common/tests/fixtures/ethereum/sign_tx.json b/common/tests/fixtures/ethereum/sign_tx.json
index f0869ed7..339a56ab 100644
--- a/common/tests/fixtures/ethereum/sign_tx.json
+++ b/common/tests/fixtures/ethereum/sign_tx.json
@@ -509,6 +509,69 @@
"sig_r": "de16620898c6fe3cc5b7d3c5ff6581c2a7845a69bd22f37559f610d6253cfd2f",
"sig_s": "58e928b596c930f2f302386025e1eb2a74b342dd9005ae84a161df16a5a295bf"
}
+ },
+ {
+ "name": "merkl_claim_single_unknown_token",
+ "skip_models": ["t1"],
+ "parameters": {
+ "comment": "Merkl claim: users=[signer], tokens=[0x0fedba...], amounts=[0x085985deab876834], proofs=[19 leaves]; known distributor on chain 1",
+ "data": "71ee95c0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000010000000000000000000000004f4f1488acb1ae1b46146ceff804f591dfe660ac00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000fedba9178b70e8b54e2af08ebffcf28a1e5a43b0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000085985deab87683400000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001364faf7f5ee9f5b459e66762232f6ab0279fd8ab6528df06e27f904c5c7e2423583b8ec99f8d6a98d35847722f25c4453f5197360fa17d47ec7e0fa5b1b13367a8a669530d902c20fb9fb9c3c69a3c572285fa43a040d7eb7d22f362774686d7c5ff909d98eda2b5db084e42339c2a429e34d427339064e30dd763d1a562d576479f6a3d276b2f67390420fa6b438c9347f2b6049af245a238f2c00899d581884b1e04381651c085a309bfc472c014ac6781c44563b499a33f6aad8e4f04cb2f50c79f2fef01dd4d5228bc0863dd463e1c42464a477cabcbe358760aaef395b67cff9336d50615279a714d0fda73682cd76ecb79a793cc67444d9c9bf84617094a8888ec415452794c573fd4763f4d007b6ed0b9144b5e44ef415a62d559594e90d3b14e9727ccd373a6ff9de79d81004f8d9438d15b170fc4e17a95792037b2f62394b48c45e42c413842e6527d2cb580abb0027d68f4737fe22aa1c78fe48b39760b3d79bf093b92f1b1e06b3466262eecf1fcec634b9f7a297c5bb1d826c8052366d43298286026e2adc9097ad1ce23343a749afa3eda75e9a46a36078fad8ec53b10425ef4c741b3080f0e202cb991edb8964064761e0b220f0bc8ddc10a2a7b6d0f3bfaf8fd330edb1214a8ae12dfe77932a5bee0e973007fa6f02912ee554616811ddc8a74543f7a51956d3435c5503ce74b10a23807d5f055df5ae3b33a4501aa45cbd1e051bb049fd59be3681e03684341ff3ef684d2ee67037d6190504e460c7f56243d1808b4653f0c257dba19729d5b181ef43ba0fe1e802c950a6a6fd6fa408e79277be3e34537fd5f5e060bd9963ac61d06f81be7bf28af8bbaa",
+ "path": "m/44'/60'/0'/0/1",
+ "to_address": "0x3Ef3D8bA38EBe18DB133cEc108f4D14CE00Dd9Ae",
+ "chain_id": 1,
+ "nonce": "0x0",
+ "gas_price": "0x14",
+ "gas_limit": "0x14",
+ "tx_type": null,
+ "value": "0x0"
+ },
+ "result": {
+ "sig_v": 38,
+ "sig_r": "bf92bf4da6889e835172b43c4432c7be5cd4c951c12100070ae8f9c6efa89b6c",
+ "sig_s": "2319eb5be80352885dade9f0c8ff9f437493cdf8dd1490d0cb36ec312a34b4da"
+ }
+ },
+ {
+ "name": "merkl_claim_multiple_tokens",
+ "skip_models": ["t1"],
+ "parameters": {
+ "comment": "Merkl claim: users=[signer, signer], tokens=[0x58d97b..., 0x0fedba...], amounts=[0x16ffd023e945f7, 0x085985deab876834], proofs=[19 leaves each]; known distributor on chain 1",
+ "data": "71ee95c0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000000020000000000000000000000004f4f1488acb1ae1b46146ceff804f591dfe660ac0000000000000000000000004f4f1488acb1ae1b46146ceff804f591dfe660ac000000000000000000000000000000000000000000000000000000000000000200000000000000000000000058d97b57bb95320f9a05dc918aef65434969c2b20000000000000000000000000fedba9178b70e8b54e2af08ebffcf28a1e5a43b00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000016ffd023e945f7000000000000000000000000000000000000000000000000085985deab8768340000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000002c0000000000000000000000000000000000000000000000000000000000000013569aebf90ff10ac097a50546701ae153e99286f8c241f4ed91106ead272cce863810cfb729513e166b992002039f613de7bdcd6c45ce0a888499b870b1eab46e3d4a652b2a0ae46ec2a113face89d447c92284a298dccbe47d684bd53b64232d876b2fc7136fa1043ebb3b844dcdd9c13f4422cafe5173fe62a7d2bf709f5197ce3a5573d31c95d286d19db7a421e12c57c1eef6786cee048b50a5e033e5b2e31e24183247a8015a7be1dcc25ad0842d764f2634e10387e87774fd29e82f0e5ade85c3ed85fde553a7bb2d735b0ec35f45d8c385409b2dc44a5ec69857ddf445c8ffe9f1841ae94a9e9347648d98a03104c6069f3275264837a9717e9bef6777e518f9843d605f5294b8396c4a3c605f6e8cbba45fbeed07ef538004b51ee109f3f5d8a356cfea44c0b179dcf9d383c3eee20b65ebd1cddd5bba69837e4857362c1abdd40db583a507462a94fc8c0082281c10b22cacf3ed22141d597da373f3e4590ad59736eab415ed0e0aa47cbaffb3317efe1ee85cbf2e470882c6622a791fbc20939ec1866c6c1e6e6fc2a06122af055eba428da8edd234189b2ef4af57333313fb84b79c8a37e19dff644d59d67249dd91c70f0241429b25d27332bacbfb50f6cd33f88ee0e657b03e33878d301aecfec3e7203919cc6b0a666ffd39b43742e6aa9b332c9bfd5d5283373c5449dd4ce43da5bef2c7ca459b8177a16953a4501aa45cbd1e051bb049fd59be3681e03684341ff3ef684d2ee67037d6190504e460c7f56243d1808b4653f0c257dba19729d5b181ef43ba0fe1e802c950a6a6fd6fa408e79277be3e34537fd5f5e060bd9963ac61d06f81be7bf28af8bbaa000000000000000000000000000000000000000000000000000000000000001364faf7f5ee9f5b459e66762232f6ab0279fd8ab6528df06e27f904c5c7e2423583b8ec99f8d6a98d35847722f25c4453f5197360fa17d47ec7e0fa5b1b13367a8a669530d902c20fb9fb9c3c69a3c572285fa43a040d7eb7d22f362774686d7c5ff909d98eda2b5db084e42339c2a429e34d427339064e30dd763d1a562d576479f6a3d276b2f67390420fa6b438c9347f2b6049af245a238f2c00899d581884b1e04381651c085a309bfc472c014ac6781c44563b499a33f6aad8e4f04cb2f50c79f2fef01dd4d5228bc0863dd463e1c42464a477cabcbe358760aaef395b67cff9336d50615279a714d0fda73682cd76ecb79a793cc67444d9c9bf84617094a8888ec415452794c573fd4763f4d007b6ed0b9144b5e44ef415a62d559594e90d3b14e9727ccd373a6ff9de79d81004f8d9438d15b170fc4e17a95792037b2f62394b48c45e42c413842e6527d2cb580abb0027d68f4737fe22aa1c78fe48b39760b3d79bf093b92f1b1e06b3466262eecf1fcec634b9f7a297c5bb1d826c8052366d43298286026e2adc9097ad1ce23343a749afa3eda75e9a46a36078fad8ec53b10425ef4c741b3080f0e202cb991edb8964064761e0b220f0bc8ddc10a2a7b6d0f3bfaf8fd330edb1214a8ae12dfe77932a5bee0e973007fa6f02912ee554616811ddc8a74543f7a51956d3435c5503ce74b10a23807d5f055df5ae3b33a4501aa45cbd1e051bb049fd59be3681e03684341ff3ef684d2ee67037d6190504e460c7f56243d1808b4653f0c257dba19729d5b181ef43ba0fe1e802c950a6a6fd6fa408e79277be3e34537fd5f5e060bd9963ac61d06f81be7bf28af8bbaa",
+ "path": "m/44'/60'/0'/0/1",
+ "to_address": "0x3Ef3D8bA38EBe18DB133cEc108f4D14CE00Dd9Ae",
+ "chain_id": 1,
+ "nonce": "0x0",
+ "gas_price": "0x14",
+ "gas_limit": "0x14",
+ "tx_type": null,
+ "value": "0x0"
+ },
+ "result": {
+ "sig_v": 38,
+ "sig_r": "eb321d658cdc5b2ede5d5e63bf663b2193f95f9c0ad1120aa809b9e8009367e2",
+ "sig_s": "7c32bc4951f877e981652e7f90f4e7654c393f55238408327039c765192a7a00"
+ }
+ },
+ {
+ "name": "merkl_claim_multiple_different_users",
+ "skip_models": ["t1"],
+ "parameters": {
+ "comment": "Merkl claim: users=[0x9ea3..., 0x9ea3...] (not the signer), tokens=[0x58d97b..., 0x0fedba...], amounts=[0x16ffd023e945f7, 0x085985deab876834]; unknown distributor on chain 8453",
+ "data": "71ee95c0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000000020000000000000000000000009ea3721b5bf3b64b4418c38b603154d2d597fae30000000000000000000000009ea3721b5bf3b64b4418c38b603154d2d597fae3000000000000000000000000000000000000000000000000000000000000000200000000000000000000000058d97b57bb95320f9a05dc918aef65434969c2b20000000000000000000000000fedba9178b70e8b54e2af08ebffcf28a1e5a43b00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000016ffd023e945f7000000000000000000000000000000000000000000000000085985deab8768340000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000002c0000000000000000000000000000000000000000000000000000000000000013569aebf90ff10ac097a50546701ae153e99286f8c241f4ed91106ead272cce863810cfb729513e166b992002039f613de7bdcd6c45ce0a888499b870b1eab46e3d4a652b2a0ae46ec2a113face89d447c92284a298dccbe47d684bd53b64232d876b2fc7136fa1043ebb3b844dcdd9c13f4422cafe5173fe62a7d2bf709f5197ce3a5573d31c95d286d19db7a421e12c57c1eef6786cee048b50a5e033e5b2e31e24183247a8015a7be1dcc25ad0842d764f2634e10387e87774fd29e82f0e5ade85c3ed85fde553a7bb2d735b0ec35f45d8c385409b2dc44a5ec69857ddf445c8ffe9f1841ae94a9e9347648d98a03104c6069f3275264837a9717e9bef6777e518f9843d605f5294b8396c4a3c605f6e8cbba45fbeed07ef538004b51ee109f3f5d8a356cfea44c0b179dcf9d383c3eee20b65ebd1cddd5bba69837e4857362c1abdd40db583a507462a94fc8c0082281c10b22cacf3ed22141d597da373f3e4590ad59736eab415ed0e0aa47cbaffb3317efe1ee85cbf2e470882c6622a791fbc20939ec1866c6c1e6e6fc2a06122af055eba428da8edd234189b2ef4af57333313fb84b79c8a37e19dff644d59d67249dd91c70f0241429b25d27332bacbfb50f6cd33f88ee0e657b03e33878d301aecfec3e7203919cc6b0a666ffd39b43742e6aa9b332c9bfd5d5283373c5449dd4ce43da5bef2c7ca459b8177a16953a4501aa45cbd1e051bb049fd59be3681e03684341ff3ef684d2ee67037d6190504e460c7f56243d1808b4653f0c257dba19729d5b181ef43ba0fe1e802c950a6a6fd6fa408e79277be3e34537fd5f5e060bd9963ac61d06f81be7bf28af8bbaa000000000000000000000000000000000000000000000000000000000000001364faf7f5ee9f5b459e66762232f6ab0279fd8ab6528df06e27f904c5c7e2423583b8ec99f8d6a98d35847722f25c4453f5197360fa17d47ec7e0fa5b1b13367a8a669530d902c20fb9fb9c3c69a3c572285fa43a040d7eb7d22f362774686d7c5ff909d98eda2b5db084e42339c2a429e34d427339064e30dd763d1a562d576479f6a3d276b2f67390420fa6b438c9347f2b6049af245a238f2c00899d581884b1e04381651c085a309bfc472c014ac6781c44563b499a33f6aad8e4f04cb2f50c79f2fef01dd4d5228bc0863dd463e1c42464a477cabcbe358760aaef395b67cff9336d50615279a714d0fda73682cd76ecb79a793cc67444d9c9bf84617094a8888ec415452794c573fd4763f4d007b6ed0b9144b5e44ef415a62d559594e90d3b14e9727ccd373a6ff9de79d81004f8d9438d15b170fc4e17a95792037b2f62394b48c45e42c413842e6527d2cb580abb0027d68f4737fe22aa1c78fe48b39760b3d79bf093b92f1b1e06b3466262eecf1fcec634b9f7a297c5bb1d826c8052366d43298286026e2adc9097ad1ce23343a749afa3eda75e9a46a36078fad8ec53b10425ef4c741b3080f0e202cb991edb8964064761e0b220f0bc8ddc10a2a7b6d0f3bfaf8fd330edb1214a8ae12dfe77932a5bee0e973007fa6f02912ee554616811ddc8a74543f7a51956d3435c5503ce74b10a23807d5f055df5ae3b33a4501aa45cbd1e051bb049fd59be3681e03684341ff3ef684d2ee67037d6190504e460c7f56243d1808b4653f0c257dba19729d5b181ef43ba0fe1e802c950a6a6fd6fa408e79277be3e34537fd5f5e060bd9963ac61d06f81be7bf28af8bbaa",
+ "path": "m/44'/60'/0'/0/1",
+ "to_address": "0x3Ef3D8bA38EBe18DB133cEc108f4D14CE00Dd9Ae",
+ "chain_id": 8453,
+ "nonce": "0x0",
+ "gas_price": "0x14",
+ "gas_limit": "0x14",
+ "tx_type": null,
+ "value": "0x0"
+ },
+ "result": {
+ "sig_v": 16941,
+ "sig_r": "986b2714ce571b625ddc9ed9c5ce4adb947f416ef6705c49fafbe2fbfa7b221d",
+ "sig_s": "2580e9f1d2c7254e8ed4814ddcf81df004d3df5dda3a2325220dbad6ce50904f"
+ }
}
]
}
diff --git a/core/src/apps/ethereum/yielding.py b/core/src/apps/ethereum/yielding.py
index 4c16a8e6..03e97210 100644
--- a/core/src/apps/ethereum/yielding.py
+++ b/core/src/apps/ethereum/yielding.py
@@ -2,7 +2,7 @@ from typing import TYPE_CHECKING
from trezor.wire import DataError
-from .clear_signing import Atomic, DisplayFormat, parse_address, parse_uint256
+from .clear_signing import Array, Atomic, DisplayFormat, parse_address, parse_uint256
from .yielding_vaults import UNKNOWN_VAULT, lookup_vault
if TYPE_CHECKING:
@@ -82,6 +82,22 @@ REDEEM_DISPLAY_FORMAT = DisplayFormat(
field_definitions=[],
)
+# claim(address[] users, address[] tokens, uint256[] amounts, bytes32[][] proofs)
+# The proofs parameter is intentionally omitted from `parameter_definitions`:
+# we don't display it, so we skip the per-element parsing/allocations and only
+# manually validate the top-level array structure (see `_prepare_merkl_claim`).
+CLAIM_DISPLAY_FORMAT = DisplayFormat(
+ binding_context=None,
+ func_sig=FUNC_SIG_CLAIM,
+ intent="Claim",
+ parameter_definitions=[
+ Array(Atomic(parse_address)), # users
+ Array(Atomic(parse_address)), # tokens
+ Array(Atomic(parse_uint256)), # amounts
+ ],
+ field_definitions=[],
+)
+
async def get_approver(
msg: MsgInSignTx,
@@ -131,7 +147,7 @@ async def get_approver(
token=token,
)
elif func_sig == FUNC_SIG_CLAIM:
- handler = _prepare_claim_rewards(
+ handler = await _prepare_merkl_claim(
calldata=calldata,
msg=msg,
network=network,
@@ -200,7 +216,7 @@ async def _prepare_vault_tx(
)
-def _prepare_claim_rewards(
+async def _prepare_merkl_claim(
calldata: memoryview,
msg: MsgInSignTx,
network: EthereumNetworkInfo,
@@ -209,10 +225,8 @@ def _prepare_claim_rewards(
sender_bytes: AnyBytes,
) -> Coroutine[Any, Any, None] | None:
- return None
- # TODO: Finalize the UI in the next iteration.
-
- from .clear_signing import InvalidFunctionCall, parse_address
+ from .clear_signing import InvalidFunctionCall
+ from .definitions import Definitions
from .layout import require_confirm_claim_rewards
from .yielding_vaults import get_token_label
@@ -220,70 +234,73 @@ def _prepare_claim_rewards(
if int.from_bytes(msg.value, "big") != 0:
raise DataError(
- "Non-zero ETH transfer with ERC-4626 vault transaction not allowed"
+ "Non-zero ETH transfer with claim rewards transaction not allowed"
)
- # claim(address[] users, address[] tokens, uint256[] amounts, bytes32[][] proofs)
- # All 4 params are dynamic; first 128 bytes are their ABI offsets (relative to abi_base).
- try:
- from trezor.utils import BufferReader
-
- data_reader = BufferReader(bytes(calldata))
- param_base = data_reader.offset
-
- receivers_param_offset = int.from_bytes(data_reader.read_memoryview(32), "big")
- tokens_param_offset = int.from_bytes(data_reader.read_memoryview(32), "big")
- amounts_param_offset = int.from_bytes(data_reader.read_memoryview(32), "big")
- proofs_param_offset = int.from_bytes(data_reader.read_memoryview(32), "big")
+ defs = Definitions(network, {})
- def _read_array_length(param_offset: int) -> int:
- data_reader.seek(param_base + param_offset)
- return int.from_bytes(data_reader.read_memoryview(32), "big")
+ try:
+ parameters, _ = await CLAIM_DISPLAY_FORMAT.parse_calldata(calldata, msg, defs)
+ users, tokens, amounts = parameters
+ if (
+ not isinstance(users, list)
+ or not isinstance(tokens, list)
+ or not isinstance(amounts, list)
+ ):
+ raise ValueError
- receivers_array_length = _read_array_length(receivers_param_offset)
- tokens_array_length = _read_array_length(tokens_param_offset)
- amounts_array_length = _read_array_length(amounts_param_offset)
- proofs_array_length = _read_array_length(proofs_param_offset)
+ # The proofs head sits at offset 96, right after the three parsed array
+ # heads. We only validate that proofs is a well-formed top-level array
+ # whose length matches the others — we never read its elements.
+ _PROOFS_HEAD_OFFSET = 3 * 32
+ if _PROOFS_HEAD_OFFSET + 32 > len(calldata):
+ raise ValueError
+ proofs_body = int.from_bytes(
+ calldata[_PROOFS_HEAD_OFFSET : _PROOFS_HEAD_OFFSET + 32], "big"
+ )
+ if proofs_body + 32 > len(calldata):
+ raise ValueError
+ proofs_length = int.from_bytes(calldata[proofs_body : proofs_body + 32], "big")
if (
- receivers_array_length != tokens_array_length
- or tokens_array_length != amounts_array_length
- or amounts_array_length != proofs_array_length
+ len(users) != len(tokens)
+ or len(tokens) != len(amounts)
+ or len(amounts) != proofs_length
):
raise ValueError
- data_reader.seek(param_base + receivers_param_offset + 32)
- first_receiver_address = parse_address(data_reader.read_memoryview(32))
- if not isinstance(first_receiver_address, bytes):
- raise InvalidFunctionCall
-
- # Check if all users are the same. We validate if it's the sender in _is_vault_tx_safe()
- # If either of these conditions are unmet, we revert to blind signing (return None).
- for i in range(1, receivers_array_length):
- data_reader.seek(param_base + receivers_param_offset + 32 + i * 32)
- other = parse_address(data_reader.read_memoryview(32))
- if other != first_receiver_address:
- return None
-
- token_labels: list[str] = []
- for i in range(tokens_array_length):
- data_reader.seek(param_base + tokens_param_offset + 32 + i * 32)
- addr = parse_address(data_reader.read_memoryview(32))
- if not isinstance(addr, bytes):
- raise InvalidFunctionCall
- label = get_token_label(addr, network)
- token_labels.append(label)
-
- except (ValueError, EOFError, InvalidFunctionCall):
+ if len(users) == 0:
+ raise ValueError
+
+ first_user = users[0]
+ if not isinstance(first_user, bytes):
+ raise ValueError
+
+ except (ValueError, InvalidFunctionCall):
raise DataError("Invalid data for claim rewards transaction")
- # We don't show claim flows for any unknown distributor for now.
+ # All receivers must be the same; otherwise revert to blind signing.
+ for other in users[1:]:
+ if other != first_user:
+ return None
+
+ # We don't show claim flows for non claim.xyz or for non-signer users.
if (
- msg.to != _MERKL_XYZ_CLAIM_DISTRIBUTOR_ADDR
- or sender_bytes != first_receiver_address
+ msg.to.lower() != _MERKL_XYZ_CLAIM_DISTRIBUTOR_ADDR
+ or sender_bytes != first_user
):
return None
+ # Not sure about the UX if we fetch too many defintions so capping definition fetching to 4 for now.
+ try_fetch_definitions = len(tokens) <= 4
+
+ token_labels: list[str] = []
+ for token in tokens:
+ if not isinstance(token, bytes):
+ raise DataError("Invalid data for claim rewards transaction")
+ label = await get_token_label(token, network, msg, try_fetch_definitions)
+ token_labels.append(label)
+
return require_confirm_claim_rewards(
address_n=msg.address_n,
maximum_fee=maximum_fee,
diff --git a/core/src/apps/ethereum/yielding_vaults.py b/core/src/apps/ethereum/yielding_vaults.py
index d9e6892a..f91cedef 100644
--- a/core/src/apps/ethereum/yielding_vaults.py
+++ b/core/src/apps/ethereum/yielding_vaults.py
@@ -4,6 +4,8 @@ if TYPE_CHECKING:
from buffer_types import AnyBytes
from trezor.messages import EthereumNetworkInfo
+ from .keychain import MsgInSignTx
+
from trezor.messages import EthereumTokenInfo
from .tokens import UNKNOWN_TOKEN
@@ -97,15 +99,31 @@ UNKNOWN_VAULT = EthereumVaultInfo(
)
-def get_token_label(token_addr: AnyBytes, network: EthereumNetworkInfo) -> str:
- # Only known token for now. We can use clear signing here to request token definitions from Connect, once it is done.
- # Would move it to EthereumVaultInfo but there don't seem to be plans to add more tokens for now.
+async def get_token_label(
+ token_addr: AnyBytes,
+ network: EthereumNetworkInfo,
+ msg: MsgInSignTx,
+ try_fetch_definitions: bool,
+) -> str:
+ # MORPHO is hardcoded. We support it regardless of Trezor Connect support.
# https://etherscan.io/token/0x58d97b57bb95320f9a05dc918aef65434969c2b2
_MORPHO_ADDR = b"\x58\xd9\x7b\x57\xbb\x95\x32\x0f\x9a\x05\xdc\x91\x8a\xef\x65\x43\x49\x69\xc2\xb2"
if token_addr == _MORPHO_ADDR and network.chain_id == 1:
return "MORPHO"
- else:
- return "UNKNOWN"
+
+ if try_fetch_definitions and msg.supports_definition_request:
+ from .clear_signing import request_definitions
+
+ addr = bytes(token_addr)
+ received_definitions, _ = await request_definitions(
+ msg.chain_id, addr, func_sig=None
+ )
+ if received_definitions is not None:
+ token = received_definitions.get_token(addr)
+ if token is not UNKNOWN_TOKEN:
+ return token.symbol
+
+ return "UNKNOWN"
def lookup_vault(
diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json
index 100df12f..936a46db 100644
--- a/tests/ui_tests/fixtures.json
+++ b/tests/ui_tests/fixtures.json
@@ -2221,6 +2221,9 @@
"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "37a4f53857f00cebcf60153f91ad34e91401ed5df4cad20420f174eaae2b5f22",
"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "37a4f53857f00cebcf60153f91ad34e91401ed5df4cad20420f174eaae2b5f22",
"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "37a4f53857f00cebcf60153f91ad34e91401ed5df4cad20420f174eaae2b5f22",
+"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_different_users]": "64b122490c1d7970f4496aaf039ba06eb35438d2f6262ef643d1d36e73e7e8f9",
+"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_tokens]": "ef7990cebc567c04848d5749937e2aed70610c975444f85c7aafd85b7a8fcd1a",
+"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-merkl_claim_single_unknown_token]": "e7334fd0e8a3e0c59b449eaf232f09ca04b7ed253e6836444f4c5aa1f240ba50",
"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-newcontract]": "254cc04d73b6d5b9b81951ccbd4b178f979046d57e2f428a53d0f0012a8c2892",
"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "71e09d0b1c7d6431cb0bbd882fc096a7729b6ee04beffe1f07ae3f4792ec2671",
"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "77b096aa2085056ab17153af2920ec0f6b805ab8bbbc46a3c998dd4d619d41e9",
@@ -2297,6 +2300,9 @@
"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "7e53e80c1cabd54a473c961c2e673e235ec03a06caa2786f707f5f538ac37271",
"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "7e53e80c1cabd54a473c961c2e673e235ec03a06caa2786f707f5f538ac37271",
"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "7e53e80c1cabd54a473c961c2e673e235ec03a06caa2786f707f5f538ac37271",
+"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_different_users]": "4a588c6a3437b2f03ee55ad908181f1264d9cf02d54cdf5cf2629bbe6f98ff9f",
+"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_tokens]": "ef7990cebc567c04848d5749937e2aed70610c975444f85c7aafd85b7a8fcd1a",
+"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-merkl_claim_single_unknown_token]": "e7334fd0e8a3e0c59b449eaf232f09ca04b7ed253e6836444f4c5aa1f240ba50",
"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-newcontract]": "254cc04d73b6d5b9b81951ccbd4b178f979046d57e2f428a53d0f0012a8c2892",
"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "8bb03145ccda4b8122068ac1b0fe4a279e8846013135251a9437fa846cc2a65e",
"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "c7c39cbdb27b7ac61270843f3eed9dfffda23e8e2825cf30b0b8d8d3f08fe73e",
@@ -3964,6 +3970,9 @@
"T2T1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "83aab986c7b511967b581c5122904ae571e73c21cf13e1cb56b9050ce73dc492",
"T2T1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "83aab986c7b511967b581c5122904ae571e73c21cf13e1cb56b9050ce73dc492",
"T2T1_de_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "83aab986c7b511967b581c5122904ae571e73c21cf13e1cb56b9050ce73dc492",
+"T2T1_de_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_different_users]": "3e9be544f8fa0fe91cd72b511b94899d5e2023d78514f47b6131e99a0f18ed01",
+"T2T1_de_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_tokens]": "963960536bdd31441fbbb88c057b15425863fd8c493cae6571a899a42f57fc02",
+"T2T1_de_ethereum-test_signtx.py::test_signtx[False-merkl_claim_single_unknown_token]": "02d0b3126f8a4ca00c57990b14ea81c27183c5dc6d95a7794c04019e9a65ca80",
"T2T1_de_ethereum-test_signtx.py::test_signtx[False-newcontract]": "0a954e3e1f0a58ab3174ff5667c6527c265e3cfac8f00c27abf3142cfe210673",
"T2T1_de_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "7323acc5c1fc2ac9169e191ac1352f9284ba373fd4266ba05ff94dad77757a3a",
"T2T1_de_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "3b519d07965ab43bef15c535d07470fb76103dd456d11f2659258e9b4f0b869c",
@@ -4040,6 +4049,9 @@
"T2T1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "e08a2f8f28186fae2d388717aa8de61ca56719f2fbd8a8e60a1b28e872feb849",
"T2T1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "e08a2f8f28186fae2d388717aa8de61ca56719f2fbd8a8e60a1b28e872feb849",
"T2T1_de_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "e08a2f8f28186fae2d388717aa8de61ca56719f2fbd8a8e60a1b28e872feb849",
+"T2T1_de_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_different_users]": "624814dbca2134ab55a67475162a364ac609d7b24f333ed4ddaf273f8b369a58",
+"T2T1_de_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_tokens]": "963960536bdd31441fbbb88c057b15425863fd8c493cae6571a899a42f57fc02",
+"T2T1_de_ethereum-test_signtx.py::test_signtx[True-merkl_claim_single_unknown_token]": "02d0b3126f8a4ca00c57990b14ea81c27183c5dc6d95a7794c04019e9a65ca80",
"T2T1_de_ethereum-test_signtx.py::test_signtx[True-newcontract]": "0a954e3e1f0a58ab3174ff5667c6527c265e3cfac8f00c27abf3142cfe210673",
"T2T1_de_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "3edc9f5e8eb1bde283570ff8ce17c9d2c8ac2d14bab00cf4087afa309aaa79d7",
"T2T1_de_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "e44a5dd58e1c7790d2a8757f354362f3f23deb00194551c29371648129207e02",
@@ -5707,6 +5719,9 @@
"T2T1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "9c44d6895e1d2db5b3988f9bdc47fc2c070d2073dba69d192b692f98fdfd9bf8",
"T2T1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "9c44d6895e1d2db5b3988f9bdc47fc2c070d2073dba69d192b692f98fdfd9bf8",
"T2T1_en_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "9c44d6895e1d2db5b3988f9bdc47fc2c070d2073dba69d192b692f98fdfd9bf8",
+"T2T1_en_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_different_users]": "a3f9dae96c67355155e038d4d83b0274bf00565ffd1589ff1504371c4f192b72",
+"T2T1_en_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_tokens]": "7d1287d80f813a11cf161da6f2d37b13327540f7b931b3dbca7b5df34adc1e05",
+"T2T1_en_ethereum-test_signtx.py::test_signtx[False-merkl_claim_single_unknown_token]": "940dd518831b62cbba94f8da449765a4227ab9aaae8c1d7d30b23857a67adf97",
"T2T1_en_ethereum-test_signtx.py::test_signtx[False-newcontract]": "8d7c4b37171126e854f31204e3fa2cc1daad55994cd0bafc8a18fd53da62824c",
"T2T1_en_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "03fd18cb9a1ab5a4b81aa42875567caaf4c81d68ad56ce920b23eafd3b2d1652",
"T2T1_en_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "94f6038020115480db41b6ba2259557acd338cfcf5f37bc54b4e0a6d7f420a40",
@@ -5783,6 +5798,9 @@
"T2T1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "334e1c5665800e5c3cbe5789558a88334ac522f90f2938e291244e3e0e07366b",
"T2T1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "334e1c5665800e5c3cbe5789558a88334ac522f90f2938e291244e3e0e07366b",
"T2T1_en_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "334e1c5665800e5c3cbe5789558a88334ac522f90f2938e291244e3e0e07366b",
+"T2T1_en_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_different_users]": "937183637825560a471413c791b5ab10724f480e6298a8a747b02274a4abf5f8",
+"T2T1_en_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_tokens]": "7d1287d80f813a11cf161da6f2d37b13327540f7b931b3dbca7b5df34adc1e05",
+"T2T1_en_ethereum-test_signtx.py::test_signtx[True-merkl_claim_single_unknown_token]": "940dd518831b62cbba94f8da449765a4227ab9aaae8c1d7d30b23857a67adf97",
"T2T1_en_ethereum-test_signtx.py::test_signtx[True-newcontract]": "8d7c4b37171126e854f31204e3fa2cc1daad55994cd0bafc8a18fd53da62824c",
"T2T1_en_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "027687bc904cb54515be4e55929387099a91139e8070a1ca36011413fdc4ef2f",
"T2T1_en_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "9be3c6806390fd7788ea2785ada5fb7bb185b0bf82cba37a66024092b57b7b80",
@@ -7468,6 +7486,9 @@
"T2T1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "ff7d8dc6aecd5a915cb98b3ddac4a61a58be182dfc92a742730ca40bad49c1c9",
"T2T1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "ff7d8dc6aecd5a915cb98b3ddac4a61a58be182dfc92a742730ca40bad49c1c9",
"T2T1_es_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "ff7d8dc6aecd5a915cb98b3ddac4a61a58be182dfc92a742730ca40bad49c1c9",
+"T2T1_es_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_different_users]": "20bf38913bff365e0c11da69d553efcfc958333b71f7db4748ae06d550d1eb2c",
+"T2T1_es_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_tokens]": "6545eb467efbe349f4984d611b16f55d332de64cf53c95673434c940cc44434c",
+"T2T1_es_ethereum-test_signtx.py::test_signtx[False-merkl_claim_single_unknown_token]": "e27a98536383d38e240e4cb06633c3eff158c3c36165d6da09ed2b0bdb6622a0",
"T2T1_es_ethereum-test_signtx.py::test_signtx[False-newcontract]": "ec545756c12ee0c1765b9238b9e1a3d15b9abff796ed58c068a7d04ad9b573f3",
"T2T1_es_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "98390daa064dbefcfbbe43650550001a0a953d41b74a49931e75dfb89cd1a97a",
"T2T1_es_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "10bacc51fcd2c3057490d1fddd36af2d20bdce81eb72fee172154d678b22cf80",
@@ -7544,6 +7565,9 @@
"T2T1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "64ef4425aeb1eb584d9c4d64ad82bc305340885bea77bbe91ea24a206d0c75ed",
"T2T1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "64ef4425aeb1eb584d9c4d64ad82bc305340885bea77bbe91ea24a206d0c75ed",
"T2T1_es_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "64ef4425aeb1eb584d9c4d64ad82bc305340885bea77bbe91ea24a206d0c75ed",
+"T2T1_es_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_different_users]": "cb973bb70fc98879c9a10dddcfd7de271463576ff38fc05f2961003e78ce343b",
+"T2T1_es_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_tokens]": "6545eb467efbe349f4984d611b16f55d332de64cf53c95673434c940cc44434c",
+"T2T1_es_ethereum-test_signtx.py::test_signtx[True-merkl_claim_single_unknown_token]": "e27a98536383d38e240e4cb06633c3eff158c3c36165d6da09ed2b0bdb6622a0",
"T2T1_es_ethereum-test_signtx.py::test_signtx[True-newcontract]": "ec545756c12ee0c1765b9238b9e1a3d15b9abff796ed58c068a7d04ad9b573f3",
"T2T1_es_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "77f9cc7dca9ef079b1b3fdb5b2ebfe1011c9ed5f946626c5f144ba7db275dbe1",
"T2T1_es_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "94a5a8795bb7b4997587f703e33ab55025c15bf05c8a229a635dd032dd4eb09a",
@@ -9211,6 +9235,9 @@
"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "3932650a6696f4c60b2b4bfd2b570c5d83f5b4235a659e33fda44694774f29fa",
"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "3932650a6696f4c60b2b4bfd2b570c5d83f5b4235a659e33fda44694774f29fa",
"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "3932650a6696f4c60b2b4bfd2b570c5d83f5b4235a659e33fda44694774f29fa",
+"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_different_users]": "24f3562da6b21bec6300a2bb1244302788aba3fbaa97b09dda0aae7f8c1f3928",
+"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_tokens]": "aa92c6e37a237d817eab522adb9868f3755ae5a4383baff8e36a1f6c07f459e1",
+"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-merkl_claim_single_unknown_token]": "e9dceb411535ad3936689f2a3a3c28702c091484263d4bcb0a021c1f1fcbd59a",
"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-newcontract]": "419531a14559b39b5ee0a40cc61cacea9eb400446af0fbe4b6a6f62c370c8607",
"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "d8504de725219f7a54afdf807454b217bff358dfb90f0f7eccf6814b53f9c9e2",
"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "af32f16392c97a159f0e82c2463f1a3b081364cf7cdeebe4e0f0de2c3a3cf76f",
@@ -9287,6 +9314,9 @@
"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "d865d2c19a14a7f2ad7ee7bf6a2e95b4f90576d464e66e60ab5f3dfcaaa5e1a2",
"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "d865d2c19a14a7f2ad7ee7bf6a2e95b4f90576d464e66e60ab5f3dfcaaa5e1a2",
"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "d865d2c19a14a7f2ad7ee7bf6a2e95b4f90576d464e66e60ab5f3dfcaaa5e1a2",
+"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_different_users]": "d4fa31e0895b082a31db455f053ad37ccf0f5f36c2fef37526c5cc7e2ed9fa70",
+"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_tokens]": "aa92c6e37a237d817eab522adb9868f3755ae5a4383baff8e36a1f6c07f459e1",
+"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-merkl_claim_single_unknown_token]": "e9dceb411535ad3936689f2a3a3c28702c091484263d4bcb0a021c1f1fcbd59a",
"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-newcontract]": "419531a14559b39b5ee0a40cc61cacea9eb400446af0fbe4b6a6f62c370c8607",
"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "1702b0ae97a49bf975a7c2ca69af64622899b3d13520171801ee9cd6c4d04a52",
"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "bcbf0b97469d789ac9e46962763bd921a23d77b9575df2b8d37a9512c8140f58",
@@ -10954,6 +10984,9 @@
"T2T1_pt_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "53af6f9bbb5a3acdccec604c537af566496e35f7d34818dbb25f063c6118011d",
"T2T1_pt_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "53af6f9bbb5a3acdccec604c537af566496e35f7d34818dbb25f063c6118011d",
"T2T1_pt_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "53af6f9bbb5a3acdccec604c537af566496e35f7d34818dbb25f063c6118011d",
+"T2T1_pt_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_different_users]": "4e79cea955bfa2c9fcad58b1b265fc5a0ea394db1fa776744dbc555c8f96b38b",
+"T2T1_pt_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_tokens]": "b10b2b8cf1e603bb0ae2f45bb8b57fdf69652db1923a26270b93538b87bcc4f6",
+"T2T1_pt_ethereum-test_signtx.py::test_signtx[False-merkl_claim_single_unknown_token]": "0639dca22b2989f6b717217cd54ab902f02b9f167952faaff5c14f0c7b8c0e35",
"T2T1_pt_ethereum-test_signtx.py::test_signtx[False-newcontract]": "3e374d9a5c8ff2b8fa91de2afd3e5722cb943fd9d266d27f8afca2d93cac7f5e",
"T2T1_pt_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "f98833d8d08db07227afaf3c49e1048bc41af2ac6cf05aaeceec243346cfde31",
"T2T1_pt_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "d55540024f8d03bdf0176022c3ca4210a841bcc1e1c843ab5c02f8656a8d9a0d",
@@ -11030,6 +11063,9 @@
"T2T1_pt_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "568f1af6fa52c4e3b66a0f604862644aaff09b6f54485f05b9bf0535118ce108",
"T2T1_pt_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "568f1af6fa52c4e3b66a0f604862644aaff09b6f54485f05b9bf0535118ce108",
"T2T1_pt_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "568f1af6fa52c4e3b66a0f604862644aaff09b6f54485f05b9bf0535118ce108",
+"T2T1_pt_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_different_users]": "1fff33fff4187c04628bba9ef0f741848501517bcc6bfcff9fdcfaa7cbeb5245",
+"T2T1_pt_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_tokens]": "b10b2b8cf1e603bb0ae2f45bb8b57fdf69652db1923a26270b93538b87bcc4f6",
+"T2T1_pt_ethereum-test_signtx.py::test_signtx[True-merkl_claim_single_unknown_token]": "0639dca22b2989f6b717217cd54ab902f02b9f167952faaff5c14f0c7b8c0e35",
"T2T1_pt_ethereum-test_signtx.py::test_signtx[True-newcontract]": "3e374d9a5c8ff2b8fa91de2afd3e5722cb943fd9d266d27f8afca2d93cac7f5e",
"T2T1_pt_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "185ec4b313ac38a8f30e3d98285931f22840e6dd32715d62ce53b14650386443",
"T2T1_pt_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "3ffb3c701969ec9b9ecfa435250840a7a167021cc5a808d0ac3457d89c2b9287",
@@ -12948,6 +12984,9 @@
"T3B1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "d5af19e55ac063166d4d3bee04eb4d76261effc8d3cf74d2932eae4b01c4293c",
"T3B1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "d5af19e55ac063166d4d3bee04eb4d76261effc8d3cf74d2932eae4b01c4293c",
"T3B1_cs_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "d5af19e55ac063166d4d3bee04eb4d76261effc8d3cf74d2932eae4b01c4293c",
+"T3B1_cs_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_different_users]": "ee3b84dbde101d85e618aff86d3aee94551f2a572eca321253e293ef81f1c213",
+"T3B1_cs_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_tokens]": "197a8882b024d87024557b38ebb4614fd587053f2d792fae44b95ce53ce2a601",
+"T3B1_cs_ethereum-test_signtx.py::test_signtx[False-merkl_claim_single_unknown_token]": "c60a766b1b1a313441ae8fad890bc629bb50f71047deab3986c52ab6e7eb96f6",
"T3B1_cs_ethereum-test_signtx.py::test_signtx[False-newcontract]": "cdc4b01c1f09040fe1c3cab1a260922764d19a1c27be687f333d9b0749526512",
"T3B1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "760e4f96045561c6adadc39ed0a9b2152ab01d4b3cf29dc19fe5601f91696f2a",
"T3B1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "25b0f69d2bb229cddeb474cd50cd247257d4e330527809ce660b57cf3bfaf308",
@@ -13024,6 +13063,9 @@
"T3B1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "cd39c36e46242076f6065ed0aa53bb05f7fb934b59ee48534c0efd026517c2a3",
"T3B1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "cd39c36e46242076f6065ed0aa53bb05f7fb934b59ee48534c0efd026517c2a3",
"T3B1_cs_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "cd39c36e46242076f6065ed0aa53bb05f7fb934b59ee48534c0efd026517c2a3",
+"T3B1_cs_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_different_users]": "b1f80163a9601d5b23f5ce4520880390cb7ac507a1af0e3aa6a25ecd2e0cb09b",
+"T3B1_cs_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_tokens]": "197a8882b024d87024557b38ebb4614fd587053f2d792fae44b95ce53ce2a601",
+"T3B1_cs_ethereum-test_signtx.py::test_signtx[True-merkl_claim_single_unknown_token]": "c60a766b1b1a313441ae8fad890bc629bb50f71047deab3986c52ab6e7eb96f6",
"T3B1_cs_ethereum-test_signtx.py::test_signtx[True-newcontract]": "cdc4b01c1f09040fe1c3cab1a260922764d19a1c27be687f333d9b0749526512",
"T3B1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "3446f394a0c656de6e31b0aa0f1ca8181f327289ec4f93079806689f74486535",
"T3B1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "b562e8f955b375f88f93427cac7f82e51bbcea9349f165d5f375c34c70bf7071",
@@ -14619,6 +14661,9 @@
"T3B1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "20054f81e4fe111feb728f4b60fd0bda930f0bc04d525a4e6c088e1660ab4b38",
"T3B1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "20054f81e4fe111feb728f4b60fd0bda930f0bc04d525a4e6c088e1660ab4b38",
"T3B1_de_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "20054f81e4fe111feb728f4b60fd0bda930f0bc04d525a4e6c088e1660ab4b38",
+"T3B1_de_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_different_users]": "edf27e420be8db3a438140d8884e5fd03be8b24c01220bfa114dfa5400df72e6",
+"T3B1_de_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_tokens]": "7b7223a418b7e90fab6f6421eee8a46f8acd78c1ecefd73975bfb9d14874fa05",
+"T3B1_de_ethereum-test_signtx.py::test_signtx[False-merkl_claim_single_unknown_token]": "53d985b1d3f44213376ffe8f05a04484978b9d985bbbf0cc61aa7b0914f8461e",
"T3B1_de_ethereum-test_signtx.py::test_signtx[False-newcontract]": "6deec676fb642f451a823180e1a516ce104f8735dbe1fb8f54cdcee230e17680",
"T3B1_de_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "23d7e384f1c4145df41bf81d749f7c45190d7ad88e33616b687a9a707ac8c9a9",
"T3B1_de_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "fa23149e7420258e8adbf43d7ac8ea676f8d2401184c057c357f629ea5623049",
@@ -14695,6 +14740,9 @@
"T3B1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "94c25d4d74e180c825ee5645602bc600db53da4b226bc677943b792bf4a1821b",
"T3B1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "94c25d4d74e180c825ee5645602bc600db53da4b226bc677943b792bf4a1821b",
"T3B1_de_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "94c25d4d74e180c825ee5645602bc600db53da4b226bc677943b792bf4a1821b",
+"T3B1_de_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_different_users]": "f454611a1c7a4182a13b4ef955ee0b38c82da9cf1804400dc35fe34420ebeeda",
+"T3B1_de_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_tokens]": "7b7223a418b7e90fab6f6421eee8a46f8acd78c1ecefd73975bfb9d14874fa05",
+"T3B1_de_ethereum-test_signtx.py::test_signtx[True-merkl_claim_single_unknown_token]": "53d985b1d3f44213376ffe8f05a04484978b9d985bbbf0cc61aa7b0914f8461e",
"T3B1_de_ethereum-test_signtx.py::test_signtx[True-newcontract]": "6deec676fb642f451a823180e1a516ce104f8735dbe1fb8f54cdcee230e17680",
"T3B1_de_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "484b1f53c1794a44a30cc899d6a10a8912366d323ec04c51e3c0d91b0471db4f",
"T3B1_de_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "9a84ef6485b97c87c1a47957a0f39b691707c4e0066d2f27a49288da10233830",
@@ -16290,6 +16338,9 @@
"T3B1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "bc1c25971a312571c4c67c195f35ed8902a3d7200cf8f723ad7f7aa7992d8cc0",
"T3B1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "bc1c25971a312571c4c67c195f35ed8902a3d7200cf8f723ad7f7aa7992d8cc0",
"T3B1_en_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "bc1c25971a312571c4c67c195f35ed8902a3d7200cf8f723ad7f7aa7992d8cc0",
+"T3B1_en_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_different_users]": "4e5ee68e7074303e5d26fc763c73be753c41665c69a4f620c731ef4c14e99bf0",
+"T3B1_en_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_tokens]": "31d15b1fbdfbed9d8767f2ff49c0f68a48ecc556fb87fe3b6a117c984c77b193",
+"T3B1_en_ethereum-test_signtx.py::test_signtx[False-merkl_claim_single_unknown_token]": "f37db6f6d9019eb490ddec4a47132b8716d75c23db433c6581cbae205712d99f",
"T3B1_en_ethereum-test_signtx.py::test_signtx[False-newcontract]": "e35db6ec5f474746e392ccd6eeca81ca73488cc080ec4e4c456d2bd552cf9c78",
"T3B1_en_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "5f42437f55d21caf3364efd316b45a566e8c41ab9334acd8bbd7e58fad6b629d",
"T3B1_en_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "82e60b1434fbb771685f59bf2cfc4ee0088271e3e3a7fc95c0ac22d064af9068",
@@ -16366,6 +16417,9 @@
"T3B1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "bc301484c89966c3273ff94e35327b161c665086b070ed1dc10fe9ed0aed8b54",
"T3B1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "bc301484c89966c3273ff94e35327b161c665086b070ed1dc10fe9ed0aed8b54",
"T3B1_en_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "bc301484c89966c3273ff94e35327b161c665086b070ed1dc10fe9ed0aed8b54",
+"T3B1_en_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_different_users]": "59fba96a9abcb09b5265d3d49286e42a2461926ec8637ba251b90ca6b0bf4bd0",
+"T3B1_en_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_tokens]": "31d15b1fbdfbed9d8767f2ff49c0f68a48ecc556fb87fe3b6a117c984c77b193",
+"T3B1_en_ethereum-test_signtx.py::test_signtx[True-merkl_claim_single_unknown_token]": "f37db6f6d9019eb490ddec4a47132b8716d75c23db433c6581cbae205712d99f",
"T3B1_en_ethereum-test_signtx.py::test_signtx[True-newcontract]": "e35db6ec5f474746e392ccd6eeca81ca73488cc080ec4e4c456d2bd552cf9c78",
"T3B1_en_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "437b11c6be57f7b3a26390c7f42009d225b31eecef16d98998426eb07ee241df",
"T3B1_en_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "5e9ca17c268ac0921072fd74076f357c3eefe18c2acd43d4ac9920f59ffe0cf4",
@@ -17961,6 +18015,9 @@
"T3B1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "0d7e25e4055558d53ed4eaf43b839b45667a5f5746b07fe262158309db0accb8",
"T3B1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "0d7e25e4055558d53ed4eaf43b839b45667a5f5746b07fe262158309db0accb8",
"T3B1_es_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "0d7e25e4055558d53ed4eaf43b839b45667a5f5746b07fe262158309db0accb8",
+"T3B1_es_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_different_users]": "09a77cead394f07533cb2d06383b75b1e4687d5dca20c23c4b2314cb16e4552a",
+"T3B1_es_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_tokens]": "85710bbeb0f1005a4be7fe812290375887ba56f51672fe1213360b26eb6cd177",
+"T3B1_es_ethereum-test_signtx.py::test_signtx[False-merkl_claim_single_unknown_token]": "4e46e3f015f37a5d55b3836faae020e8323446952aa83555847901dd47a8dd30",
"T3B1_es_ethereum-test_signtx.py::test_signtx[False-newcontract]": "c8e114b406b0b65c94e6938e683a8f14a5164343147667e3db8d104a26f8c414",
"T3B1_es_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "7570774a2b0acfa34d23900d5314f023c3d30c53cd794fac1b3cfa13e0209383",
"T3B1_es_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "d14b344fa6252a14b43e9c4156cf23deee086d1def9bd5d8de4af45bb7933a65",
@@ -18037,6 +18094,9 @@
"T3B1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "4b223de3b95281d4f7f304e88cfb41f5165eebbd5da70f60775f7a605452bbfb",
"T3B1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "4b223de3b95281d4f7f304e88cfb41f5165eebbd5da70f60775f7a605452bbfb",
"T3B1_es_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "4b223de3b95281d4f7f304e88cfb41f5165eebbd5da70f60775f7a605452bbfb",
+"T3B1_es_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_different_users]": "fb9e42327e8cd9a97008ab04c49667cf4a08394738247278aa148591e9778676",
+"T3B1_es_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_tokens]": "85710bbeb0f1005a4be7fe812290375887ba56f51672fe1213360b26eb6cd177",
+"T3B1_es_ethereum-test_signtx.py::test_signtx[True-merkl_claim_single_unknown_token]": "4e46e3f015f37a5d55b3836faae020e8323446952aa83555847901dd47a8dd30",
"T3B1_es_ethereum-test_signtx.py::test_signtx[True-newcontract]": "c8e114b406b0b65c94e6938e683a8f14a5164343147667e3db8d104a26f8c414",
"T3B1_es_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "e7ad700b5e6b08ba9b878c0d2e7ef87fe8691f5158e1b6e203b69cfca24068e2",
"T3B1_es_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "af5b49e7fae61ee7879ce9f08ac76ee53a5072a6b050b3272e4adfac8a45eb45",
@@ -19632,6 +19692,9 @@
"T3B1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "a6a82d97910524aa74f3b391feedf2152840457750e94b77e243904b45d1a500",
"T3B1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "a6a82d97910524aa74f3b391feedf2152840457750e94b77e243904b45d1a500",
"T3B1_fr_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "a6a82d97910524aa74f3b391feedf2152840457750e94b77e243904b45d1a500",
+"T3B1_fr_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_different_users]": "4ef30b20b1e0287d03fc7a1aebae0f5d9688e97d864ef53c5e79f6af40d30df0",
+"T3B1_fr_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_tokens]": "15170ced68692555d159d370b585720099c82362b473df92ef9fb15c5bfaff68",
+"T3B1_fr_ethereum-test_signtx.py::test_signtx[False-merkl_claim_single_unknown_token]": "63bbb7caf07a6d4bdecc24570e172136a36b00f0e6e8a398b9f25d82019f28c7",
"T3B1_fr_ethereum-test_signtx.py::test_signtx[False-newcontract]": "ea9c00c635743bc65d8eaab6b4600a22985491e93e6e8403f745a842481b5095",
"T3B1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "e2f6ce968a1c3ba3b235a02ddcc6ee14c0336213870354c2b83d586e5fa4fd5b",
"T3B1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "a3d6373081012d5a76576997be01962abaee75f6af7034c6fd1d35d98b4c7158",
@@ -19708,6 +19771,9 @@
"T3B1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "d0ef9b9f28cfe0f3a3013036cbbca7fd6fd20a6e0f56ef4915dd1915f766ccfb",
"T3B1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "d0ef9b9f28cfe0f3a3013036cbbca7fd6fd20a6e0f56ef4915dd1915f766ccfb",
"T3B1_fr_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "d0ef9b9f28cfe0f3a3013036cbbca7fd6fd20a6e0f56ef4915dd1915f766ccfb",
+"T3B1_fr_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_different_users]": "a20d499631a100c4dbb6610073b5659bd42284986d430a4a246b413b90835933",
+"T3B1_fr_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_tokens]": "15170ced68692555d159d370b585720099c82362b473df92ef9fb15c5bfaff68",
+"T3B1_fr_ethereum-test_signtx.py::test_signtx[True-merkl_claim_single_unknown_token]": "63bbb7caf07a6d4bdecc24570e172136a36b00f0e6e8a398b9f25d82019f28c7",
"T3B1_fr_ethereum-test_signtx.py::test_signtx[True-newcontract]": "ea9c00c635743bc65d8eaab6b4600a22985491e93e6e8403f745a842481b5095",
"T3B1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "28183424d1a7bcd99763f63999c5cb5c04816d778c9861e6786b5ceb26537ec6",
"T3B1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "b3705303c3f961c0a9c914273bccd95fc1a6df2e5d3f44fbd0c5c9c6245f7db6",
@@ -21303,6 +21369,9 @@
"T3B1_pt_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "fa18483228ccb45fbaeda262abe030129ec9f3e17a3324223140c5cb2a19fa4c",
"T3B1_pt_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "fa18483228ccb45fbaeda262abe030129ec9f3e17a3324223140c5cb2a19fa4c",
"T3B1_pt_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "fa18483228ccb45fbaeda262abe030129ec9f3e17a3324223140c5cb2a19fa4c",
+"T3B1_pt_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_different_users]": "e59fcf29b182d13ba04ee81786ea5dd57bce4bf9652882da519c6a5df6570351",
+"T3B1_pt_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_tokens]": "4154fd47cddb87ba55abaa1af0fad883fbf4d0208d61b650d5d32c7787b1a7ab",
+"T3B1_pt_ethereum-test_signtx.py::test_signtx[False-merkl_claim_single_unknown_token]": "c448f2c954ecc1bd9c31035c8003c52ac644841ea4ba92dd297a993f985dc91e",
"T3B1_pt_ethereum-test_signtx.py::test_signtx[False-newcontract]": "b6cfb48f4dc6f38b9e59b518bb0d4803321a1655070065dc20b3af4f5054e5fb",
"T3B1_pt_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "c47f361478727e73007d4f05038661f365c9a7fd0a7c90f0d27308b94024c6ef",
"T3B1_pt_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "40f4608ddac56fd2ba1351e9cbcbf0143b6089426af5b3dae05988ea1f7fee81",
@@ -21379,6 +21448,9 @@
"T3B1_pt_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "fa7a7d88cf7ac7ded6038ed9c961113be5063f8d60b8ba2f96f786694ee3ece2",
"T3B1_pt_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "fa7a7d88cf7ac7ded6038ed9c961113be5063f8d60b8ba2f96f786694ee3ece2",
"T3B1_pt_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "fa7a7d88cf7ac7ded6038ed9c961113be5063f8d60b8ba2f96f786694ee3ece2",
+"T3B1_pt_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_different_users]": "e964d640ac7c16281083de47badd62770e44028d2746c26c8735ecfe373a2250",
+"T3B1_pt_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_tokens]": "4154fd47cddb87ba55abaa1af0fad883fbf4d0208d61b650d5d32c7787b1a7ab",
+"T3B1_pt_ethereum-test_signtx.py::test_signtx[True-merkl_claim_single_unknown_token]": "c448f2c954ecc1bd9c31035c8003c52ac644841ea4ba92dd297a993f985dc91e",
"T3B1_pt_ethereum-test_signtx.py::test_signtx[True-newcontract]": "b6cfb48f4dc6f38b9e59b518bb0d4803321a1655070065dc20b3af4f5054e5fb",
"T3B1_pt_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "1f059aa3cb81b44d176ccef04a698dccbd09cd00deef66bc3b9ca2b3ad494f13",
"T3B1_pt_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "e3ab49cbd297c9559bf403b8e6741a06ae51767e8f525b1da8b772afa3339569",
@@ -23368,6 +23440,9 @@
"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "f26f7aa880aa4c6c23e27afc0dedccd0a08c3639b495dc9221af87f273b82946",
"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "f26f7aa880aa4c6c23e27afc0dedccd0a08c3639b495dc9221af87f273b82946",
"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "f26f7aa880aa4c6c23e27afc0dedccd0a08c3639b495dc9221af87f273b82946",
+"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_different_users]": "c7511fc48e06aaab8d73eaf3114a171efa487180b636336ff1b5b5d876fbc37c",
+"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_tokens]": "1cae759cbaefe75f2dd7787b4fe71abfcdd4ccc9b67f14323fecf783274a0015",
+"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-merkl_claim_single_unknown_token]": "6839f9a69acf6cbd87b56e0fdf9220408e672bac2e9e704ee88762822b35ee38",
"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-newcontract]": "aa937c643cd8dbc656ce5b70db78a7f1db70f0a56fdb63de569ef4695f90ec33",
"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "4fea3aeebb321b52dbf6ac24b8dc422729a0a661aac9ab39d22e0bd5421b2f7e",
"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "d201a780aaa6ea305449f2d68f08fc7fa5498bb7bb505c83efb2dd53f66e30d6",
@@ -23444,6 +23519,9 @@
"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "2e52c006ab9718c84bc07bdae1e8c3cfae41942925514a548006b5a9f4e04e1f",
"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "2e52c006ab9718c84bc07bdae1e8c3cfae41942925514a548006b5a9f4e04e1f",
"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "2e52c006ab9718c84bc07bdae1e8c3cfae41942925514a548006b5a9f4e04e1f",
+"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_different_users]": "1dfafb824c93dbd2aed360f1f8d3e09c904d21485366afd7cf89ab606acac2a1",
+"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_tokens]": "1cae759cbaefe75f2dd7787b4fe71abfcdd4ccc9b67f14323fecf783274a0015",
+"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-merkl_claim_single_unknown_token]": "6839f9a69acf6cbd87b56e0fdf9220408e672bac2e9e704ee88762822b35ee38",
"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-newcontract]": "aa937c643cd8dbc656ce5b70db78a7f1db70f0a56fdb63de569ef4695f90ec33",
"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "481f7fe58d4e94a305461d9406e42bf3e3b849017c414e67126d7a5bc19c901b",
"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "79c7c4c281c593912cfe46ce48d062d3db728e708f140eff0ce9620836e48e30",
@@ -25072,6 +25150,9 @@
"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "0c5dfa6396375801b4c1f842151a3fa6195224afd844a4fa45d46689e5a68ae9",
"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "0c5dfa6396375801b4c1f842151a3fa6195224afd844a4fa45d46689e5a68ae9",
"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "0c5dfa6396375801b4c1f842151a3fa6195224afd844a4fa45d46689e5a68ae9",
+"T3T1_de_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_different_users]": "b8c4272171908b7c9a8c78ad82c63fa3d789ae633d49f291e96f576641241859",
+"T3T1_de_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_tokens]": "a1579bb0871b07171a21f6ce895364f031428191541e5d0081aee376dd0cbd6d",
+"T3T1_de_ethereum-test_signtx.py::test_signtx[False-merkl_claim_single_unknown_token]": "732f0ce654f8a8c078f459ff1e5d565b7307658b0428ca987f91a9763cb0e757",
"T3T1_de_ethereum-test_signtx.py::test_signtx[False-newcontract]": "5e157ac6f3e8ad02c9dca4d6a9435794e24b4f7d1fd351b4ec02a6f158e7ab75",
"T3T1_de_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "31399015d5f1fffb76910cbd34a6a1e9a2eceee27264e53903e7549dd9ba201c",
"T3T1_de_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "ca2a820035d79d217ef31fa186bbcb43ffc311fc8265a47a1ed02a82e326ee99",
@@ -25148,6 +25229,9 @@
"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "52937384b35bb25cd90b72daa070385a5ea961792902e7f2446344a537d1fb95",
"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "52937384b35bb25cd90b72daa070385a5ea961792902e7f2446344a537d1fb95",
"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "52937384b35bb25cd90b72daa070385a5ea961792902e7f2446344a537d1fb95",
+"T3T1_de_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_different_users]": "ecaacf59957c240e893f952c61ad83c48b64594673f830886582c2ef85665d19",
+"T3T1_de_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_tokens]": "a1579bb0871b07171a21f6ce895364f031428191541e5d0081aee376dd0cbd6d",
+"T3T1_de_ethereum-test_signtx.py::test_signtx[True-merkl_claim_single_unknown_token]": "732f0ce654f8a8c078f459ff1e5d565b7307658b0428ca987f91a9763cb0e757",
"T3T1_de_ethereum-test_signtx.py::test_signtx[True-newcontract]": "5e157ac6f3e8ad02c9dca4d6a9435794e24b4f7d1fd351b4ec02a6f158e7ab75",
"T3T1_de_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "2115dcda86f24c4f78ca02d7d6b6b06dd704ebe261d753a940b464f246312e0c",
"T3T1_de_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "242cdc2e9895101c08c0fb5c96737c7c1c87c0adb250cc6d385fc5d4d929fad5",
@@ -26776,6 +26860,9 @@
"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "c043dc9457e768dae664ae750cf36476d6bc414f62d7066749907b29a5c3e7ca",
"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "c043dc9457e768dae664ae750cf36476d6bc414f62d7066749907b29a5c3e7ca",
"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "c043dc9457e768dae664ae750cf36476d6bc414f62d7066749907b29a5c3e7ca",
+"T3T1_en_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_different_users]": "0af0d1b5aef305238a83cfb72d54357b1c732e5cc051c38f320b71ffb89ceccd",
+"T3T1_en_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_tokens]": "6ea01a9d0d1da5b4b3cdb91e51efcad511368113e20145f64cfed82d103d4571",
+"T3T1_en_ethereum-test_signtx.py::test_signtx[False-merkl_claim_single_unknown_token]": "955eeeab8558975953bb983dc6c4546434c2ab6ef170341604403f762cc7193d",
"T3T1_en_ethereum-test_signtx.py::test_signtx[False-newcontract]": "706514161394e20ff3820f6bedcbaee297320f1de3d210a342c10f5a94607108",
"T3T1_en_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "ced84150a68f13cabab5eab6529463018cb66a5826c4184c6a2d0b0880f14e2b",
"T3T1_en_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "4527cf5add723cfc129b43b7096d2737878e7e8f081ad02ee07d0326d60efeeb",
@@ -26852,6 +26939,9 @@
"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "3cb25909bfe0f07a6775597e670a629dc91733996c2c87e2c0bd3121c483ef04",
"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "3cb25909bfe0f07a6775597e670a629dc91733996c2c87e2c0bd3121c483ef04",
"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "3cb25909bfe0f07a6775597e670a629dc91733996c2c87e2c0bd3121c483ef04",
+"T3T1_en_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_different_users]": "7ff90f27f85cc56bb4bd4a00c2c75358b7b91607db6e133062088de48bd6f638",
+"T3T1_en_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_tokens]": "6ea01a9d0d1da5b4b3cdb91e51efcad511368113e20145f64cfed82d103d4571",
+"T3T1_en_ethereum-test_signtx.py::test_signtx[True-merkl_claim_single_unknown_token]": "955eeeab8558975953bb983dc6c4546434c2ab6ef170341604403f762cc7193d",
"T3T1_en_ethereum-test_signtx.py::test_signtx[True-newcontract]": "706514161394e20ff3820f6bedcbaee297320f1de3d210a342c10f5a94607108",
"T3T1_en_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "e5d6755f2fd2cab0cde0aa935de064e5c2466d550c26724839699043e1111aff",
"T3T1_en_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "c3224e37bcd752a087da3983388db1fc8a4348ae21f48a510d1ea7264f03c871",
@@ -28480,6 +28570,9 @@
"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "b9d00e77c74397d8c3ec7d47a7a2b01ee71e20ffe604e2440338a896fbbe1c0b",
"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "b9d00e77c74397d8c3ec7d47a7a2b01ee71e20ffe604e2440338a896fbbe1c0b",
"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "b9d00e77c74397d8c3ec7d47a7a2b01ee71e20ffe604e2440338a896fbbe1c0b",
+"T3T1_es_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_different_users]": "8bfb143bf89f2792ca32b8b27e53a536aa463b61553b58756eb9b6c3b85c8967",
+"T3T1_es_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_tokens]": "2da8303a11ccfc2a92e024b0690b4b1a911d257f8a9b6ac6a6433d1fce016f6e",
+"T3T1_es_ethereum-test_signtx.py::test_signtx[False-merkl_claim_single_unknown_token]": "e0f47cc055964523a85fe663df43db673aa316e4515e9d8d8a608dcc8dcb049a",
"T3T1_es_ethereum-test_signtx.py::test_signtx[False-newcontract]": "8ba05e9de00a74e05c6bb472ee50dc91eb00073984bc812e32399774a00731ce",
"T3T1_es_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "6f46b326b81aed31fec027139e1aec20243e88b0c02f422ce0e902f549cea123",
"T3T1_es_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "ef9905a9aa6294f2f437a73e79d06df2243071c8e4106660ccf69ff09ba61fc3",
@@ -28556,6 +28649,9 @@
"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "d44806683248a2a302b732794f210925b433e72702d82ca76a4e18aca3d0e598",
"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "d44806683248a2a302b732794f210925b433e72702d82ca76a4e18aca3d0e598",
"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "d44806683248a2a302b732794f210925b433e72702d82ca76a4e18aca3d0e598",
+"T3T1_es_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_different_users]": "d21df13164d1ef9bc4eae18d0e8e1b0ec246940b672b6a259ba3fc93facd47cd",
+"T3T1_es_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_tokens]": "2da8303a11ccfc2a92e024b0690b4b1a911d257f8a9b6ac6a6433d1fce016f6e",
+"T3T1_es_ethereum-test_signtx.py::test_signtx[True-merkl_claim_single_unknown_token]": "e0f47cc055964523a85fe663df43db673aa316e4515e9d8d8a608dcc8dcb049a",
"T3T1_es_ethereum-test_signtx.py::test_signtx[True-newcontract]": "8ba05e9de00a74e05c6bb472ee50dc91eb00073984bc812e32399774a00731ce",
"T3T1_es_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "4fd53de7d32f2b65fe75c0f031c82d3c7d2a45eca1bb5a82190be03c5f9a3c25",
"T3T1_es_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "119c5c4c3550611557c161edac87f19b58f08910a75f007ccd153700526c54cc",
@@ -30184,6 +30280,9 @@
"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "eaf7bb584fe4ba9c569f5a74c7daf8f356540ef777ac72393f8c12eac8b41d94",
"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "eaf7bb584fe4ba9c569f5a74c7daf8f356540ef777ac72393f8c12eac8b41d94",
"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "eaf7bb584fe4ba9c569f5a74c7daf8f356540ef777ac72393f8c12eac8b41d94",
+"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_different_users]": "f7e25865d62d427315796fd821ddf4e90b3291e1bb43e98b2ec5d9e0f8e8c517",
+"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_tokens]": "f4e186d04ec0f1ae633513f0db99989681e96e9c8ed232863ad6b34776f07541",
+"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-merkl_claim_single_unknown_token]": "46a42c85367bfda4a6ab9d90684c0b1d40e198fc2df00d9d265a9410267ea3d0",
"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-newcontract]": "3e405936210b5b061e5e2a2901780be052d77d37a7d57931afcd73bc45b5cbb4",
"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "9bf070e035cb9fed2d1a716b46033966d1ab576af9160bc58610e00db50d2691",
"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "36c38078ffa499331831c0b7c4c053c8307dadfd0b7d2072ab8c5e4af7985e74",
@@ -30260,6 +30359,9 @@
"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "e6149cb82d5b1f888ab96ae224595956b7a633580de537b1be04e58f36af5b3e",
"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "e6149cb82d5b1f888ab96ae224595956b7a633580de537b1be04e58f36af5b3e",
"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "e6149cb82d5b1f888ab96ae224595956b7a633580de537b1be04e58f36af5b3e",
+"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_different_users]": "4d775fd644852ed87307bb9b3c8a211d631dbe5eeaffcadc7e3eb7289b14088b",
+"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_tokens]": "f4e186d04ec0f1ae633513f0db99989681e96e9c8ed232863ad6b34776f07541",
+"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-merkl_claim_single_unknown_token]": "46a42c85367bfda4a6ab9d90684c0b1d40e198fc2df00d9d265a9410267ea3d0",
"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-newcontract]": "3e405936210b5b061e5e2a2901780be052d77d37a7d57931afcd73bc45b5cbb4",
"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "a82d34bf337fc899d78c72ab40a6301574e9ccf8a909a47c8ec1e7f3667750fb",
"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "751d68a78d84b845830875201ba8717d7c5a4cedcf45462ea2102b0a8ae37780",
@@ -31888,6 +31990,9 @@
"T3T1_pt_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "dbbd2f12224279bfb7163927f5c27c3c471b4a9123fc5e62876d7b9500787525",
"T3T1_pt_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "dbbd2f12224279bfb7163927f5c27c3c471b4a9123fc5e62876d7b9500787525",
"T3T1_pt_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "dbbd2f12224279bfb7163927f5c27c3c471b4a9123fc5e62876d7b9500787525",
+"T3T1_pt_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_different_users]": "ecf453f3adf7e88cb94d73dd258a4717276f96b6b6f1dc59ef3a846c26beba81",
+"T3T1_pt_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_tokens]": "0aa2b472d9467b3a603678b1fe0fb39f74d6af1208ffa424c0c046a79fff2e25",
+"T3T1_pt_ethereum-test_signtx.py::test_signtx[False-merkl_claim_single_unknown_token]": "4726a8a7c107b110649912894ff81006b8ec2ac0d1e7d0111f3974cc8c84094a",
"T3T1_pt_ethereum-test_signtx.py::test_signtx[False-newcontract]": "9ac5cca7f9a41e369a38488dc33171e490b3d14f84009287e91d10ea11847c84",
"T3T1_pt_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "e4c1a85d616c348b7c64c26ce1dbf60e0c7dc764c0a1bc4485477c0b2e838590",
"T3T1_pt_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "1ecd8b1963aa2d80feb23d68febe162c9e8514d101342cd4b46df6150210e85e",
@@ -31964,6 +32069,9 @@
"T3T1_pt_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "4ae719ecfee4354482a897c942dda8bf2b3332e8b803c53492124e72dc75b9e0",
"T3T1_pt_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "4ae719ecfee4354482a897c942dda8bf2b3332e8b803c53492124e72dc75b9e0",
"T3T1_pt_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "4ae719ecfee4354482a897c942dda8bf2b3332e8b803c53492124e72dc75b9e0",
+"T3T1_pt_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_different_users]": "25ec28dce1255e95ad788dd8bd1615902f06eec9b57d3c53625ebd5d94caa60a",
+"T3T1_pt_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_tokens]": "0aa2b472d9467b3a603678b1fe0fb39f74d6af1208ffa424c0c046a79fff2e25",
+"T3T1_pt_ethereum-test_signtx.py::test_signtx[True-merkl_claim_single_unknown_token]": "4726a8a7c107b110649912894ff81006b8ec2ac0d1e7d0111f3974cc8c84094a",
"T3T1_pt_ethereum-test_signtx.py::test_signtx[True-newcontract]": "9ac5cca7f9a41e369a38488dc33171e490b3d14f84009287e91d10ea11847c84",
"T3T1_pt_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "fb6a1a1645995704ad35d8aa5af3831b7ac147f87bd16fd25ac7937ac551894c",
"T3T1_pt_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "8785ef51058b83009855492e1e255340d5d9f91b31a0794c5bf69aaf9d76d937",
@@ -34238,6 +34346,9 @@
"T3W1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "5fa34b02f918d48c921c040c204175b8ea104a68a47dd25381e5661a85fba226",
"T3W1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "5fa34b02f918d48c921c040c204175b8ea104a68a47dd25381e5661a85fba226",
"T3W1_cs_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "5fa34b02f918d48c921c040c204175b8ea104a68a47dd25381e5661a85fba226",
+"T3W1_cs_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_different_users]": "1a768e8fac1d03e04f7f638a6b241cae37f8423e25782625da9d7f26c9033ab4",
+"T3W1_cs_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_tokens]": "e844154299876bee633b7623e86161d81af3ae856bac0de145fb4a31cf661533",
+"T3W1_cs_ethereum-test_signtx.py::test_signtx[False-merkl_claim_single_unknown_token]": "5627fd28e0c92aa7e667f42b8e7097092f57e42824024bb88c5c3300db3b6cbd",
"T3W1_cs_ethereum-test_signtx.py::test_signtx[False-newcontract]": "ec17295ac84a14f366e55965c900a904a449e6e17ab15d6bd14d4079f384009f",
"T3W1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "367b66390d3d46e31a832ca60aecd539cedcfde5e4a65dd921ccf21026dde069",
"T3W1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "d73985aee9f886e4e4c62980b083b254d4cfb05fddc30d3d67a80ae319480f2a",
@@ -34314,6 +34425,9 @@
"T3W1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "f808b6fd3df777ceede844c068e2a061d016f35d44a3df1e7614ce201038b22c",
"T3W1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "f808b6fd3df777ceede844c068e2a061d016f35d44a3df1e7614ce201038b22c",
"T3W1_cs_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "f808b6fd3df777ceede844c068e2a061d016f35d44a3df1e7614ce201038b22c",
+"T3W1_cs_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_different_users]": "e9712b61a7176158e6521bf3f255d945306bfaaa3a9c07ff90a138e826beb251",
+"T3W1_cs_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_tokens]": "e844154299876bee633b7623e86161d81af3ae856bac0de145fb4a31cf661533",
+"T3W1_cs_ethereum-test_signtx.py::test_signtx[True-merkl_claim_single_unknown_token]": "5627fd28e0c92aa7e667f42b8e7097092f57e42824024bb88c5c3300db3b6cbd",
"T3W1_cs_ethereum-test_signtx.py::test_signtx[True-newcontract]": "ec17295ac84a14f366e55965c900a904a449e6e17ab15d6bd14d4079f384009f",
"T3W1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "70257100f0bf578900fc7bb77cd9489cbb471c16ec2d4f9e1fe222cc15cc7678",
"T3W1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "354408179b2020ada430964a4a8a3b42fe345d9f33d630c6ce56c314469f4995",
@@ -35952,6 +36066,9 @@
"T3W1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "c37feafe38d6db82706979eb84f6e5c3d56bc987513c02694dd7cda0c1198c28",
"T3W1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "c37feafe38d6db82706979eb84f6e5c3d56bc987513c02694dd7cda0c1198c28",
"T3W1_de_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "c37feafe38d6db82706979eb84f6e5c3d56bc987513c02694dd7cda0c1198c28",
+"T3W1_de_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_different_users]": "9d7d011009ec7bc74aa78fcb096f370126fdb78ea157e5be2fc95a6df57d88a9",
+"T3W1_de_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_tokens]": "480913e7c9f31c1b4bfe6f7812f61e68d32457fc5d5fc9dbe61e9b37ef0f5930",
+"T3W1_de_ethereum-test_signtx.py::test_signtx[False-merkl_claim_single_unknown_token]": "6899f0ff99aa9c3da69208a5241accded70cf69114cb2945b989cafd8c859b13",
"T3W1_de_ethereum-test_signtx.py::test_signtx[False-newcontract]": "f245c96a5388f0a55557349097fc70bc7a689d2275970a2d15d476f7ae1de5ff",
"T3W1_de_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "972c4f4c8f15d3ceebd595130786f7336b35ebcb7bab10d0b85bb77559d1e92f",
"T3W1_de_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "957f5d5733c1eb64b60c77f2d0fbcb49927d72c499472e6a43a8dbd414ebda91",
@@ -36028,6 +36145,9 @@
"T3W1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "60c817f613c2fc52f31d6e24e8f16becce5f184248a438a272153a1f901837c6",
"T3W1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "60c817f613c2fc52f31d6e24e8f16becce5f184248a438a272153a1f901837c6",
"T3W1_de_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "60c817f613c2fc52f31d6e24e8f16becce5f184248a438a272153a1f901837c6",
+"T3W1_de_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_different_users]": "ea759a673cfe7041ae2f06d7010acaa10a81c5d231cd48cd8e3160a3f2c48264",
+"T3W1_de_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_tokens]": "480913e7c9f31c1b4bfe6f7812f61e68d32457fc5d5fc9dbe61e9b37ef0f5930",
+"T3W1_de_ethereum-test_signtx.py::test_signtx[True-merkl_claim_single_unknown_token]": "6899f0ff99aa9c3da69208a5241accded70cf69114cb2945b989cafd8c859b13",
"T3W1_de_ethereum-test_signtx.py::test_signtx[True-newcontract]": "f245c96a5388f0a55557349097fc70bc7a689d2275970a2d15d476f7ae1de5ff",
"T3W1_de_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "a89ef92678263dcff780f2dd60bea994fc7c6e57acd8554247af14ab650fa776",
"T3W1_de_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "cba865a306ed64b09c453c005a23300e97234af6109863f6205d6015d6f18153",
@@ -37666,6 +37786,9 @@
"T3W1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "47a7902fc51296c0617173b0008ce91d0a4f1e3bae4de3543efe68ad71d16da1",
"T3W1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "47a7902fc51296c0617173b0008ce91d0a4f1e3bae4de3543efe68ad71d16da1",
"T3W1_en_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "47a7902fc51296c0617173b0008ce91d0a4f1e3bae4de3543efe68ad71d16da1",
+"T3W1_en_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_different_users]": "528587f28bef9541f4653927e1e8239eba50633990afb947383979e22b05e945",
+"T3W1_en_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_tokens]": "4c4bf99ad797b50853466991ce549df4553e5c4fab3145f6ff1a367c3406c1fa",
+"T3W1_en_ethereum-test_signtx.py::test_signtx[False-merkl_claim_single_unknown_token]": "6cc7fb8d132e674c7f2ff29f9463bde5f4bd52554a7dc3ab4682a1c19b59e641",
"T3W1_en_ethereum-test_signtx.py::test_signtx[False-newcontract]": "45ca225ea729109d4cbde0d0a609c8d37a2c3187c2e032bb53b5e06acb115090",
"T3W1_en_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "d724cd60ea48be6f4d789afc67292c1a4f6fdcc7ec1551288a88efffc2cf7b01",
"T3W1_en_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "180717c4c446a757a07b8040c400190a042ab97f54df64b5fe3fe1202163613d",
@@ -37742,6 +37865,9 @@
"T3W1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "6f5acaa434440f10b5b611fe646b65b46f11416eb5d71638cb22a7f7e574a4cc",
"T3W1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "6f5acaa434440f10b5b611fe646b65b46f11416eb5d71638cb22a7f7e574a4cc",
"T3W1_en_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "6f5acaa434440f10b5b611fe646b65b46f11416eb5d71638cb22a7f7e574a4cc",
+"T3W1_en_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_different_users]": "083da8b05c8329c56a033abb9c1987452b7a81ff3921d09642a9b4979ecaddc0",
+"T3W1_en_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_tokens]": "4c4bf99ad797b50853466991ce549df4553e5c4fab3145f6ff1a367c3406c1fa",
+"T3W1_en_ethereum-test_signtx.py::test_signtx[True-merkl_claim_single_unknown_token]": "6cc7fb8d132e674c7f2ff29f9463bde5f4bd52554a7dc3ab4682a1c19b59e641",
"T3W1_en_ethereum-test_signtx.py::test_signtx[True-newcontract]": "45ca225ea729109d4cbde0d0a609c8d37a2c3187c2e032bb53b5e06acb115090",
"T3W1_en_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "b1fd414647e8d12ec0dde8dc6a8a3609bf0211911dd8c0c7f5229bb5c1562441",
"T3W1_en_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "2dbd12db0ffdab1052d4b723009b6757a13156534b6bf008fb1273ebe482b871",
@@ -39380,6 +39506,9 @@
"T3W1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "41a4e67afd805ecbae4e9fdfc4f9a0c6768cd1c51bfe838e35143ef8d54fa0f1",
"T3W1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "41a4e67afd805ecbae4e9fdfc4f9a0c6768cd1c51bfe838e35143ef8d54fa0f1",
"T3W1_es_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "41a4e67afd805ecbae4e9fdfc4f9a0c6768cd1c51bfe838e35143ef8d54fa0f1",
+"T3W1_es_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_different_users]": "6806e744181fead2fd56208e073f64c026248d6db24252c16fcf098350b42d7a",
+"T3W1_es_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_tokens]": "c2d3b28b95b2059247824e2ee8355043e11c1226900bac15108b0f81e6a04eff",
+"T3W1_es_ethereum-test_signtx.py::test_signtx[False-merkl_claim_single_unknown_token]": "91ca58593ccc78d1c21f6fa42bb4c971f34180ef1beb0ca1b3acf90277774f99",
"T3W1_es_ethereum-test_signtx.py::test_signtx[False-newcontract]": "502cca0aa58bf0ce6293ad228e508b0cacf67947395b0fbceb2c35577bcc3aa2",
"T3W1_es_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "fb0afd44d4a7c9309147023cce17ac8057c95453ef568faab291f1a1b8e49040",
"T3W1_es_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "af406f07b969a5718b580639c5d338a15fd24501f90d8ee8bbb68e73536f3500",
@@ -39456,6 +39585,9 @@
"T3W1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "ce72c2eff7ba2a269077a6d22126c432255ff1c0b1c4ab645abae8c621fca95b",
"T3W1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "ce72c2eff7ba2a269077a6d22126c432255ff1c0b1c4ab645abae8c621fca95b",
"T3W1_es_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "ce72c2eff7ba2a269077a6d22126c432255ff1c0b1c4ab645abae8c621fca95b",
+"T3W1_es_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_different_users]": "f20d799ba68e5759c9c45a02a3efe0daa59185c1afc843d9c385dbe664cba16b",
+"T3W1_es_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_tokens]": "c2d3b28b95b2059247824e2ee8355043e11c1226900bac15108b0f81e6a04eff",
+"T3W1_es_ethereum-test_signtx.py::test_signtx[True-merkl_claim_single_unknown_token]": "91ca58593ccc78d1c21f6fa42bb4c971f34180ef1beb0ca1b3acf90277774f99",
"T3W1_es_ethereum-test_signtx.py::test_signtx[True-newcontract]": "502cca0aa58bf0ce6293ad228e508b0cacf67947395b0fbceb2c35577bcc3aa2",
"T3W1_es_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "1fa65ed9230fc6e97e8e743356b737c67f42fb41ca93f987b4870c68131eb994",
"T3W1_es_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "84598eaa1f4dc09b58eddf5e409c9116ddd19b7144c55de9ab11078386c2b80b",
@@ -41094,6 +41226,9 @@
"T3W1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "b433c324416d325b2eea99b6bf206da2ed68061bab3427ddfb626237e8cd7c58",
"T3W1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "b433c324416d325b2eea99b6bf206da2ed68061bab3427ddfb626237e8cd7c58",
"T3W1_fr_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "b433c324416d325b2eea99b6bf206da2ed68061bab3427ddfb626237e8cd7c58",
+"T3W1_fr_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_different_users]": "9f62a783d035eba562b3f84def0da4b1146d03c37308795d493a36bfc0ba4788",
+"T3W1_fr_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_tokens]": "ebc3e8b9e32505c2919ceaff0907d5ac4cb6fb453706fafc574dd76b1b0569b0",
+"T3W1_fr_ethereum-test_signtx.py::test_signtx[False-merkl_claim_single_unknown_token]": "443f70981d8ece514f3b88305324a7399cc8b50773908a7a598124ab80a90eb0",
"T3W1_fr_ethereum-test_signtx.py::test_signtx[False-newcontract]": "446198580e406a1c0c5c7f00d01111288c693184081d0be38c04f91dae373b69",
"T3W1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "103e0a97822077f978fdf4f59cb201dbeea0bef2e12158ff594074ea741ec21b",
"T3W1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "878f903ab086c16be0beadf2f58ae589d45e0f648b588820eb3c2bac93bd60e0",
@@ -41170,6 +41305,9 @@
"T3W1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "14eb377fb5617261575afb0b8c5800f139e4a36d6744260b538b23522aafd94e",
"T3W1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "14eb377fb5617261575afb0b8c5800f139e4a36d6744260b538b23522aafd94e",
"T3W1_fr_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "14eb377fb5617261575afb0b8c5800f139e4a36d6744260b538b23522aafd94e",
+"T3W1_fr_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_different_users]": "8fcc298b6d60018bc336e5972fdf3f6ec244dade37aa6fec0ed8bf348b9ed40e",
+"T3W1_fr_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_tokens]": "ebc3e8b9e32505c2919ceaff0907d5ac4cb6fb453706fafc574dd76b1b0569b0",
+"T3W1_fr_ethereum-test_signtx.py::test_signtx[True-merkl_claim_single_unknown_token]": "443f70981d8ece514f3b88305324a7399cc8b50773908a7a598124ab80a90eb0",
"T3W1_fr_ethereum-test_signtx.py::test_signtx[True-newcontract]": "446198580e406a1c0c5c7f00d01111288c693184081d0be38c04f91dae373b69",
"T3W1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "f97911b3a6a46f442d7c0102dffe24b9744a3983de80730a2b31d170be500f32",
"T3W1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "b2c4c89393719ab3660c011ff513078beb4d6e7649e5cdc5c5b6c0053bc08813",
@@ -42813,6 +42951,9 @@
"T3W1_pt_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "a49551df9c3f73664cdf3e199fe30458e67efc67d1d50712b0fbaefcf576e9c7",
"T3W1_pt_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "a49551df9c3f73664cdf3e199fe30458e67efc67d1d50712b0fbaefcf576e9c7",
"T3W1_pt_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "a49551df9c3f73664cdf3e199fe30458e67efc67d1d50712b0fbaefcf576e9c7",
+"T3W1_pt_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_different_users]": "b6cd719eac8301c99923a8490a12068daada453984bd169a09721b5d9fc476c2",
+"T3W1_pt_ethereum-test_signtx.py::test_signtx[False-merkl_claim_multiple_tokens]": "b4021baf53a71c29ea0656523d5ddd2a09d27c4a0a317112afd6d9dc985d868c",
+"T3W1_pt_ethereum-test_signtx.py::test_signtx[False-merkl_claim_single_unknown_token]": "b4054b26aac2957d89398d5e2cb09a5978f9d0b005e1c3a5850c658df5d00a5e",
"T3W1_pt_ethereum-test_signtx.py::test_signtx[False-newcontract]": "9432f9e73ed4128662dc476ff3b31d528db6e7cee4715eb5e8f3e48cbbb88439",
"T3W1_pt_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "08cef0fe42dd4c02f6ef83e3341c058c27e5eb6730a8cd1146ececb2a8ca36fa",
"T3W1_pt_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "e8d1909c9d2d6c5216d25b6cd411787108ebaa45e8fd7d481f0cb52e5b62fc93",
@@ -42889,6 +43030,9 @@
"T3W1_pt_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "38317094c6763ef2a8ceb8ea20680f6d366c9051de47de60ce94bb422bd58635",
"T3W1_pt_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "38317094c6763ef2a8ceb8ea20680f6d366c9051de47de60ce94bb422bd58635",
"T3W1_pt_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "38317094c6763ef2a8ceb8ea20680f6d366c9051de47de60ce94bb422bd58635",
+"T3W1_pt_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_different_users]": "d39f15b24e2e7fc1028b2c7c355fbb10c836e10fe31223fd02e3e9b0a5f50d45",
+"T3W1_pt_ethereum-test_signtx.py::test_signtx[True-merkl_claim_multiple_tokens]": "b4021baf53a71c29ea0656523d5ddd2a09d27c4a0a317112afd6d9dc985d868c",
+"T3W1_pt_ethereum-test_signtx.py::test_signtx[True-merkl_claim_single_unknown_token]": "b4054b26aac2957d89398d5e2cb09a5978f9d0b005e1c3a5850c658df5d00a5e",
"T3W1_pt_ethereum-test_signtx.py::test_signtx[True-newcontract]": "9432f9e73ed4128662dc476ff3b31d528db6e7cee4715eb5e8f3e48cbbb88439",
"T3W1_pt_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "9c1bf1becf53dfb2af34a12f613b5913fa8444f907fdcb6b31ee4906144d02ca",
"T3W1_pt_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "4e7837e7caadc1e05d57bdb49d9c83d0df9c22cd93b6c6354da05b50a6497389",
Why this scored 39/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.