Skip to content

feat(indexer): EVM protocol adapter scaffold + verified contract addresses - #4

Merged
Patrick-Ehimen merged 4 commits into
mainfrom
feat/evm-adapters
Jul 10, 2026
Merged

Patrick-Ehimen merged 4 commits into
mainfrom
feat/evm-adapters

Conversation

@Patrick-Ehimen

Copy link
Copy Markdown
Member

Summary

  • Scaffolds all 8 EVM protocol adapters (LayerZero V2, Across, Stargate, CCTP, Hop, Connext, Wormhole, Axelar) as stubs — each returns None until individually implemented in steps 2.2–2.9
  • Adds contracts.rs: a verified address registry mapping each protocol to its deployed contract address per chain, sourced from official docs
  • Expands AdapterDispatch from a single NoOp variant to 8 real variants with an all() constructor
  • Wires adapters::all() into each ChainRunner in main.rs

Contract address sources

Protocol Source
LayerZero V2 Etherscan (same address all chains)
Across docs.across.to/reference/contract-addresses
Stargate stargateprotocol.gitbook.io mainnet contracts
CCTP V2 developers.circle.com/cctp/evm-smart-contracts
Hop github.com/hop-protocol/hop mainnet.ts
Connext docs.connext.network/resources/deployments
Wormhole wormhole.com/docs/products/reference/contract-addresses
Axelar docs.axelar.dev (Etherscan verified)

What's next

Steps 2.2–2.9 implement each adapter one by one (real parse_event logic). Step 2.10 wires contract addresses into ChainRunner so filters only pull relevant logs.

Test plan

  • cargo build -p indexer passes with zero errors
  • Each adapter's parse_event verified against real logs in steps 2.2–2.9

- Add contracts.rs: verified address registry for all 8 protocols across
  7 EVM chains, sourced from official deployment docs. Uses CCTP V2
  (TokenMessengerV2, same address on all chains).
- Add stub adapter files for LayerZero V2, Across, Stargate, CCTP, Hop,
  Connext, Wormhole, Axelar — each returns None until implemented
- Expand AdapterDispatch enum from NoOp to 8 real variants with an
  all() constructor so main.rs stays clean
- Wire adapters::all() into each ChainRunner in main.rs
Clippy runs with -D warnings in CI. The correlation_id methods and
contracts.rs functions are intentionally unused until steps 2.2-2.10
implement each adapter. Suppress with #[allow(dead_code)] on each
method and #![allow(dead_code)] at module level for contracts.rs.
@Patrick-Ehimen
Patrick-Ehimen merged commit 32bb5b1 into main Jul 10, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant