feat(connect): add ethereumSignAuth7702 method - #30801
Merged
Merged
Conversation
martykan
marked this pull request as ready for review
August 5, 2026 09:36
martykan
requested review from
marekrjpolak,
mroz22,
szymonlesisz and
vdovhanych
as code owners
August 5, 2026 09:36
Host side of EIP-7702 authorization/revocation signing, added to firmware
2.12.4 by trezor-firmware#7340. Callers pass path, chainId, delegate and
nonce and get back the { yParity, r, s } signature that forms one entry of
a transaction authorizationList. Authorizing the zero address revokes an
existing delegation.
The method is gated behind __experimental: true, the same way the nostr
methods are, because the protobuf message is marked experimental and the
device additionally requires experimental features to be enabled. Firmware
accepts only a small allowlist of delegates and refuses authorization (but
not revocation) under strict safety checks, hence the e2e setup lowering
them.
The delegate is normalized to its EIP-55 checksummed form, since the device
renders it exactly as received; a mixed-case address that does not match
its checksum is rejected as a likely typo. chainId and nonce are uint64 on
the wire but capped at Number.MAX_SAFE_INTEGER, so a value JavaScript
cannot hold exactly is refused rather than rounded into a different
authorization. Network definitions are downloaded for any chainId other
than 0 so the device can name the chain instead of showing a raw id.
E2e fixtures are derived from trezor-common, both the signature vectors and
the two error cases. They are wired into the opt-in `experimental` CI group
rather than the `ethereum` one, as they need firmware 2.12.4+ with
experimental features on.
Unrelated to trezor-firmware#7275, which removed EIP-7702 *transactions*
(tx_type 4) from ethereumSignTransaction.
Co-Authored-By: Claude <noreply@anthropic.com>
martykan
force-pushed
the
feat/connect-eip7702-sign-auth
branch
from
August 5, 2026 12:47
971373e to
afbe510
Compare
Contributor
|
✅ Previously successful run of [Test] suite-native Android E2E workflow has been found. |
szymonlesisz
approved these changes
Aug 5, 2026
szymonlesisz
left a comment
Contributor
There was a problem hiding this comment.
i cant say i fully understand what is it for :) but the test are green and i dont see any obvious flaws 👍
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Adds
TrezorConnect.ethereumSignAuth7702, the host side of EIP-7702 authorization/revocation signing shipped in firmware 2.12.4 by trezor/trezor-firmware#7340.Callers pass
path,chainId,delegateandnonceand get back the{ yParity, r, s }signature that forms one entry of a transactionauthorizationList; authorizing the zero address revokes an existing delegation instead.The method is gated behind
__experimental: true(same pattern as the nostr methods), because the protobuf message is marked experimental and the device additionally requires experimental features to be enabled.E2E run
Notes for QA
FW 2.12.4+ required
Device setup (via trezorctl):
0x5A7FC11397E9a8AD41BF10bf13F22B0a63f96f6d) and MetaMask (0x63c0c19a282a1B52b07dD5a65b58948A07DAE32B) as delegates; anything else must fail withUnknown EIP-7702 delegate address.Related Issue
Related to trezor/trezor-firmware#6394
🤖 LLM Test Recommendations
Summary: This change set introduces a brand-new TrezorConnect method, ethereumSignAuth7702 (EIP-7702 authorization signing), across method registration, types, implementation, fixtures, and CI matrix. No Suite E2E test directly covers the new method, so the recommended strategy is to run the existing Ethereum signing and TrezorConnect integration tests as regression smoke tests. The highest-value tests are those that exercise ethereum transaction/message signing and TrezorConnect init, where registration or type changes could surface failures.
Changed files (13)
packages/connect-common/src/callableMethods.tspackages/connect-common/src/types/api/ethereum.type-test.tspackages/connect-common/src/types/api/ethereum/common.tspackages/connect-common/src/types/api/ethereum/ethereumSignAuth7702.tspackages/connect-common/src/types/api/ethereum/index.tspackages/connect-explorer/src/data/methods/ethereum/signAuth7702.tspackages/connect/e2e/__fixtures__/ethereumSignAuth7702.tspackages/connect/e2e/__fixtures__/index.tspackages/connect/src/api/ethereum/api/ethereumSignAuth7702.test.tspackages/connect/src/api/ethereum/api/ethereumSignAuth7702.tspackages/connect/src/api/ethereum/api/index.tspackages/connect/src/data/config.tsscripts/ci/connect-test-matrix-generator.jsRecommended tests (5)
🔴 High priority (2)
suite/e2e/tests/trezor-connect/ethereumSignTransaction.test.ts— Directly exercises TrezorConnect Ethereum signing (ethereumSignTransaction), which lives in the same connect Ethereum API family as the new ethereumSignAuth7702 method. This is the strongest Suite E2E proxy for catching regressions in ethereum method registration, shared types, and device signing flow.suite/e2e/tests/wallet/send-eth.test.ts— Validates the Suite Ethereum send flow end-to-end, including custom fee handling and device confirmation of ethereum transaction data. Changes to ethereum common types and method config could affect how Suite composes or confirms Ethereum transactions.🟡 Medium priority (3)
suite/e2e/tests/trezor-connect/ethereumSignMessage.test.ts— Tests another Ethereum signing method through TrezorConnect (ethereumSignMessage) and shares the connect permissions, init, and ethereum API infrastructure that the new method was wired into. Useful for detecting registration or type-export regressions.suite/e2e/tests/trezor-connect/error.test.ts— Covers TrezorConnect.init in suite-desktop core mode and ethereumGetAddress error handling. Adding a new ethereum method to callableMethods/config changes the global method table, so this is a good smoke test for connect initialization remaining healthy.suite/e2e/tests/wallet/sign-and-verify-eth.test.ts— Exercises Ethereum message signing inside the Suite wallet and verifies device prompts/toasts. Shares the underlying ethereum signing stack with the new method, though it does not touch the new API directly.packages/connect-common/src/types/api/ethereum.type-test.tspackages/connect-common/src/types/api/ethereum/ethereumSignAuth7702.tspackages/connect-common/src/types/api/ethereum/index.tspackages/connect-explorer/src/data/methods/ethereum/signAuth7702.tspackages/connect/e2e/__fixtures__/ethereumSignAuth7702.tspackages/connect/e2e/__fixtures__/index.tspackages/connect/src/api/ethereum/api/ethereumSignAuth7702.test.tspackages/connect/src/api/ethereum/api/ethereumSignAuth7702.tspackages/connect/src/api/ethereum/api/index.tsscripts/ci/connect-test-matrix-generator.jsUpdated: 2026-08-05T12:51:19.008Z
🌐 Preview deployments
🌐 Suite Web preview: https://dev.suite.sldev.cz/suite-web/feat/connect-eip7702-sign-auth/web/
🔍 Currents Test Results
🔍 Suite desktop test results: View in Currents
🔍 Suite web test results: View in Currents
🔍 Suite native android test results: View in Currents
🔒 Quarantined E2E Tests
Trezor Suite (web) — 3 test(s)
Updated: 2026-08-05T12:54:06.316Z • 3 test(s) total
Trezor Suite (desktop) — 2 test(s)
Updated: 2026-08-05T12:53:50.806Z • 2 test(s) total