feat(foreign-tx): avalanche and adi support - #4145
Conversation
There was a problem hiding this comment.
Pull request overview
Adds Avalanche C-Chain and ADI Chain as supported foreign EVM chains across the inspector, node wiring, health-checks, contract interface/ABI, SDK builders, docs, and test coverage.
Changes:
- Extend the contract interface (
ForeignChain/ForeignChainRpcRequest) and ABI/schema snapshots withAvalancheandAdi. - Wire Avalanche/ADI through node config + inspector fanout + verify-foreign-tx dispatch, plus health-check probing and golden vectors.
- Add SDK builders and e2e/sandbox/manual tests + docs updates for
eth_chainIdfingerprints.
Reviewed changes
Copilot reviewed 28 out of 28 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| docs/foreign-chain-transactions.md | Documents new chains’ fingerprint probes and expected network fingerprints. |
| crates/node/src/web.rs | Exposes provider counts for Avalanche/ADI in node web output + updates related tests. |
| crates/node/src/tests/foreign_chain_configuration.rs | Ensures Avalanche/ADI config slots are present in startup auto-registration test setup. |
| crates/node/src/providers/verify_foreign_tx/sign.rs | Adds request dispatch arms to execute Avalanche/ADI inspections. |
| crates/node/src/providers/verify_foreign_tx.rs | Adds Avalanche/ADI inspector fanout construction from config. |
| crates/node-config/src/foreign_chains.rs | Adds Avalanche/ADI optional config sections and includes them in configured-chain iteration. |
| crates/near-mpc-sdk/tests/avalanche.rs | Adds SDK integration test for building Avalanche requests. |
| crates/near-mpc-sdk/tests/adi.rs | Adds SDK integration test for building ADI requests. |
| crates/near-mpc-sdk/src/foreign_chain/avalanche.rs | Adds Avalanche SDK builder module and wraps EVM requests into Avalanche variant. |
| crates/near-mpc-sdk/src/foreign_chain/adi.rs | Adds ADI SDK builder module and wraps EVM requests into Adi variant. |
| crates/near-mpc-sdk/src/foreign_chain.rs | Exposes new SDK modules (avalanche, adi). |
| crates/near-mpc-contract-interface/src/types/foreign_chain.rs | Adds Avalanche/Adi enum variants + mapping tests. |
| crates/foreign-chain-inspector/tests/evm_inspector.rs | Runs the shared EVM inspector test suite for Avalanche/ADI marker types. |
| crates/foreign-chain-inspector/tests/avalanche_rpc_manual.rs | Adds ignored manual RPC sanity tests for Avalanche. |
| crates/foreign-chain-inspector/tests/adi_rpc_manual.rs | Adds ignored manual RPC sanity tests for ADI. |
| crates/foreign-chain-inspector/src/lib.rs | Exposes new inspector modules (avalanche, adi). |
| crates/foreign-chain-inspector/src/avalanche/inspector.rs | Adds Avalanche EVM marker type + type aliases to generic EvmInspector. |
| crates/foreign-chain-inspector/src/avalanche.rs | Adds Avalanche hashes and module wiring. |
| crates/foreign-chain-inspector/src/adi/inspector.rs | Adds ADI EVM marker type + type aliases to generic EvmInspector. |
| crates/foreign-chain-inspector/src/adi.rs | Adds ADI hashes and module wiring. |
| crates/foreign-chain-health-check/src/probe.rs | Adds Avalanche/ADI probe dispatch and updates EVM chain-id coverage tests. |
| crates/foreign-chain-health-check/src/lib.rs | Adds Avalanche/ADI health-check execution in the provider checker. |
| crates/foreign-chain-health-check/src/golden.rs | Adds Avalanche/ADI mainnet golden vectors for block-hash checks. |
| crates/e2e-tests/tests/foreign_chain_tx_validation.rs | Extends e2e foreign-tx signing coverage to include Avalanche/ADI. |
| crates/contract/tests/snapshots/abi__abi_has_not_changed.snap | Updates ABI snapshot for new enum variants and request schema unions. |
| crates/contract/tests/sandbox/foreign_chain_request.rs | Adds sandbox test cases for verifying Avalanche/ADI requests. |
| crates/contract/tests/sandbox/common.rs | Adds helper constructors for Avalanche/ADI EVM requests in sandbox tests. |
| crates/contract/src/snapshots/mpc_contract__foreign_chains_metadata__tests__foreign_chains_metadata_borsh_schema__should_not_change.snap | Updates Borsh schema snapshot for new foreign-chain variants. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Pull request overviewAdds Avalanche C-Chain and ADI Chain as foreign-transaction verification targets. Both are EVM-compatible, so neither introduces new inspector logic — each gets a marker type implementing Changes:
Reviewed changesPer-file summary
FindingsI traced every site that mentions an existing EVM chain ( Non-blocking (nits, follow-ups, suggestions):
✅ Approved |
Adds Avalanche C-Chain and ADI Chain to foreign transaction verification.
Both are fully EVM-compatible, so this is one PR of mechanical wiring — no new
inspector logic, both chains reuse the generic
EvmInspectorthe same wayPolygon and HyperEVM do.
The chains
finality:
latest/safe/finalizedall mean the last accepted block.Note: mainnet and Fuji share a genesis hash, so the
eth_chainIdfingerprint probe is the right network check for it.
(testnet 99999).
safe/finalizedanswer correctly and laglatest.Young chain (mainnet Dec 2025) with a smaller provider set (foundation RPC,
Alchemy, dRPC), but enough for a multi-provider quorum.
Changes
Standard new-EVM-chain wiring across the stack: enum variants in the contract
interface, inspector marker modules, node config slots, fingerprint probe +
golden vectors in the health check, node dispatch, SDK builders, and the
matching test rows, e2e coverage, and docs tables.
Testing
#[ignore]d manual tests were run against the live mainnet RPCsand pass: block-hash + log extraction on pinned real transactions, and
eth_chainIdfingerprints 43114 / 36900.Heads-up: trivially conflicts with the open SVM PRs (both append variants
after
Sui); whichever lands second rebases and keeps its variants last.