How msg.sender Resolves Across Chains
YOUR EOA
owner
WHAT ARRIVES
proxy(owner)
this is msg.sender there
DAPP DEVELOPERS
How to handle msg.sender across chains
The Quickstart named this as gotcha 1 in card 04; this card is the full trap and the fix.
A same-chain owner check passes locally and reverts every time cross-chain, so you whitelist the proxy itself instead.
WHAT YOU'LL LEARN
- 01 · WHO ACTUALLY CALLSThe destination sees the proxy, not the address you expected.
- 02 · THE TRAPA same-chain owner check passes locally, reverts every time cross-chain.
- 03 · THE FIXWhitelist the proxy itself instead.
RUN IT YOURSELF · forge test --match-test test_sameChainCheck_revertsWhenCalledViaProxy -vv — from eez-demos/snippets, Foundry only.
Verified against eez-core-protocol Git commit 9a1f815; interfaces may move.