Skip to content

feat(chains): add Arbitrum One (42161) with Aave V3 + Uniswap V3#34

Merged
Hiksang merged 2 commits into
mainfrom
qa/2026-05-24-arbitrum-chain
Jun 2, 2026
Merged

feat(chains): add Arbitrum One (42161) with Aave V3 + Uniswap V3#34
Hiksang merged 2 commits into
mainfrom
qa/2026-05-24-arbitrum-chain

Conversation

@Hiksang
Copy link
Copy Markdown
Collaborator

@Hiksang Hiksang commented May 23, 2026

Summary

Promotes Arbitrum One (chain_id 42161) from a bridge-only destination to a full source chain. The token table already existed (tokens/arbitrum.toml); this wires up routing + two staple protocols so swap / lending / lp work on Arbitrum.

Banner: 5 chains · 39 protocols → 6 chains · 41 protocols.

What's added

  • chains.toml [chain.arbitrum] — rpc arbitrum.drpc.org, explorer arbiscan.io, native ETH / wrapped WETH, multicall3; aggregators kyber + openocean = "arbitrum", lifi/relay = "auto"
  • aave-v3-arbitrum — addresses from bgd-labs/aave-address-book (AaveV3Arbitrum)
  • uniswap-v3-arbitrum — addresses from developers.uniswap.org v3 deployments
  • chain-id.test.ts: arbitrum removed from KNOWN_ORPHAN_TOKEN_TABLES, added to canonical chain_id map
  • docs: README / SKILL.md / protocols.md mirrors synced (arbitrum 🟡 staged)

Verification

  • pnpm -r build + pnpm -r lint + pnpm -r test (431 tests) pass
  • defi --chain arbitrum status → 2 protocols, chain_id 42161
  • Live read-only: lending rates --protocol aave-v3-arbitrum --asset USDC returns real mainnet data (supply 2.97% / borrow 3.87% / util 85.53%)
  • CI green on Node 20/22/24 (this PR)

Notes

  • Arbitrum marked 🟡 staged (addresses verified + read path live-confirmed, but no funded broadcast yet — same bar as monad).
  • arbitrum.drpc.org showed intermittent "Temporary internal error" (~1/3 read calls; transient + retryable). Flagging per QA SSOT §6 — no retry shim added. If it proves unreliable, the official arb1.arbitrum.io/rpc is the fallback.

🤖 Generated with Claude Code

Hiksang and others added 2 commits May 24, 2026 00:45
Promotes Arbitrum from a bridge-only destination to a full source
chain. The token table (tokens/arbitrum.toml) already existed; this
wires up routing + two staple protocols so swap/lending/lp commands
work on Arbitrum.

chains.toml [chain.arbitrum]:
- chain_id 42161, rpc https://arbitrum.drpc.org (matches base's drpc),
  explorer arbiscan.io, native ETH, wrapped WETH
  (0x82aF…Bab1), multicall3 canonical
- aggregators: kyber + openocean = "arbitrum", lifi/relay = "auto"
  (LiquidSwap omitted — HyperEVM-only)

Protocol configs (addresses verified against official sources):
- aave-v3-arbitrum (bgd-labs/aave-address-book AaveV3Arbitrum):
  pool 0x794a…14aD, addresses-provider 0xa976…3CDb,
  oracle 0xb56c…C7C7, data-provider 0x243A…c43b
- uniswap-v3-arbitrum (developers.uniswap.org v3 deployments):
  factory 0x1F98…F984, router(SwapRouter02) 0x68b3…5Fc45,
  quoter(QuoterV2) 0x61fF…0B21e, position-manager 0xC364…1FE88

Live read-only check: `lending rates --protocol aave-v3-arbitrum
--asset USDC` returns real market data (supply 2.97% / borrow 3.87%
/ util 85.53%), confirming the adapter + multicall path resolve
against mainnet. (arbitrum.drpc.org showed intermittent "Temporary
internal error" — transient RPC flakiness, ~1/3 calls; retryable.)

chain-id.test.ts: drop arbitrum from KNOWN_ORPHAN_TOKEN_TABLES (it's
now registered) + add arbitrum:42161 to the canonical chain_id map.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Banner count is computed dynamically from the registry, but the
README / SKILL.md / protocols.md prose hardcodes the totals. Update
all mirrors to 6 chains · 41 protocols (+arbitrum, +2 protocols):

- README.md (root + ts/packages): banner line
- SKILL.md (both mirrors): header count, --chain flag list,
  Chains table (+arbitrum 🟡 staged), references count
- protocols.md (both mirrors): new Arbitrum section (aave-v3-arbitrum,
  uniswap-v3-arbitrum) + aggregator support table (kyber/openocean
  now list arbitrum)

Arbitrum is marked 🟡 staged: addresses verified + read path
live-confirmed, but no funded broadcast yet (matches monad).

The slug-parity test enforces byte-identical ts/root mirrors, so both
copies are updated together.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@Hiksang Hiksang merged commit 176e853 into main Jun 2, 2026
4 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