Smart contracts demonstrating cross-chain messaging on the Superchain using interoperability.
- Counter that can only be incremented through cross-chain messages
- Uses
L2ToL2CrossDomainMessenger
for message verification - Tracks last incrementer's chain ID and address
- Events emitted for all increments with source chain details
- Sends cross-chain increment messages to
CrossChainCounter
instances - Uses
L2ToL2CrossDomainMessenger
for message passing
forge install
forge build
forge test
Deploy to multiple chains using either:
- Super CLI (recommended):
cd ../ && pnpm sup
- Direct Forge script:
forge script script/Deploy.s.sol --rpc-url $RPC_URL --broadcast
- User calls
increment(chainId, counterAddress)
onCrossChainCounterIncrementer
CrossChainCounterIncrementer
sends message viaL2ToL2CrossDomainMessenger
- Target chain's messenger delivers message to
CrossChainCounter
CrossChainCounter
verifies messenger and executes increment
- User calls
increment(chainId, counterAddress)
onCrossChainCounterIncrementer
by directly ending a message throughL2ToL2CrossDomainMessenger
- Target chain's messenger delivers message to
CrossChainCounter
CrossChainCounter
verifies messenger and executes increment
Tests are in test/
directory:
- Unit tests for both contracts
- Uses Foundry's cheatcodes for chain simulation
forge test
MIT