Skip to content

Commit 12b33bb

Browse files
Add RainbowCalibur to EIP-7702 delegator whitelist
Add Rainbow Wallet's EIP-7702 delegator contract (Calibur) to the on-device whitelist, enabling Ledger users to delegate their EOA to the RainbowCalibur implementation with a recognizable name shown on the device display. The contract is deployed at the same deterministic address across all supported chains, so a single chain_id = 0 (CHAIN_ID_ALL) entry covers them all. The address was verified byte-by-byte against the upstream deployment: 0x612373D7003d694220f7800EeaF8E3924c0951D3 Source and audits: https://github.com/Uniswap/calibur https://github.com/Uniswap/calibur/tree/main/audits Changes: - src/features/sign_authorization_eip7702/whitelist_7702.c: add a single CHAIN_ID_ALL entry for "RainbowCalibur" with the verified 20-byte address array. - tests/ragger/test_eip7702.py: add test_eip7702_rainbow_calibur_in_whitelist, which exercises the happy-path sign flow with the RainbowCalibur address on chain_id 1, verifying the whitelist match and that the signed authorization recovers to the device address.
1 parent f054b3b commit 12b33bb

2 files changed

Lines changed: 14 additions & 0 deletions

File tree

src/features/sign_authorization_eip7702/whitelist_7702.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ static const eip7702_whitelist_t EIP7702_WHITELIST[] = {
3131
.name = "Calibur",
3232
.address = {0x00, 0x00, 0x00, 0x00, 0x9B, 0x1D, 0x0a, 0xF2, 0x0D, 0x8C,
3333
0x6d, 0x0A, 0x44, 0xe1, 0x62, 0xd1, 0x1F, 0x9b, 0x8f, 0x00}},
34+
{.chain_id = 0,
35+
.name = "RainbowCalibur",
36+
.address = {0x61, 0x23, 0x73, 0xD7, 0x00, 0x3d, 0x69, 0x42, 0x20, 0xf7,
37+
0x80, 0x0E, 0xea, 0xF8, 0xE3, 0x92, 0x4c, 0x09, 0x51, 0xD3}},
3438
};
3539

3640
const char *get_delegate_name(const uint64_t *chain_id, const uint8_t *address) {

tests/ragger/test_eip7702.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,3 +159,13 @@ def test_eip7702_calibur_in_whitelist(scenario_navigator: NavigateWithScenario,
159159
bytes.fromhex("000000009B1D0aF20D8C6d0A44e162d11F9b8f00"),
160160
NONCE,
161161
CHAIN_ID_1)
162+
163+
164+
def test_eip7702_rainbow_calibur_in_whitelist(scenario_navigator: NavigateWithScenario, test_name: str):
165+
device = scenario_navigator.backend.device
166+
settings_toggle(device, scenario_navigator.navigator, [SettingID.EIP7702])
167+
common(scenario_navigator,
168+
test_name,
169+
bytes.fromhex("612373D7003d694220f7800EeaF8E3924c0951D3"),
170+
NONCE,
171+
CHAIN_ID_1)

0 commit comments

Comments
 (0)