From f93c9c4a86d850fd65de0c9861159ac5fd8e2c55 Mon Sep 17 00:00:00 2001 From: Fielding Johnston Date: Sat, 25 Apr 2026 14:31:33 -0500 Subject: [PATCH 1/2] feat(chains): add Ethereum, Arbitrum, Optimism, Polygon, Avalanche, BNB MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Expands the registry from Base + Base Sepolia to all 7 target EVM mainnet chains plus Base Sepolia. Sablier Lockup v2.0 addresses sourced directly from sablier-labs/sdk's deployment broadcasts; verified against the two known-good values (Base mainnet + Base Sepolia) which match exactly. Native USDC addresses sourced from Circle's official contract addresses page. Sharp edges captured: 1. BNB Chain "USDC" is Binance-Peg, NOT Circle-native. The token at 0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d is custodied by Binance and uses 18 decimals (every other chain's USDC is 6). The chain entry carries a usdcNote field disclosing this; /create and /vaults render the note when chainId === 56 so users see the distinction before they lock. Test enforces that BNB stays at 18 decimals and every other chain stays at 6. 2. Treasury is the same EOA on every mainnet chain. EVM addresses derive from public keys, so the same private key gives the same address everywhere. The Base treasury has an EIP-7702 delegation, but that's per-chain and doesn't change token-receipt behavior. Test asserts treasury parity across mainnet chains. 3. Sablier streamStartBlock is set to each chain's exact v2.0 deployment block (pulled from Sablier's deployment broadcasts). Tightest safe value for the on-chain getLogs fallback when the indexer is unavailable. wagmi.ts auto-picks up the new entries via the chainIdToWagmiChain map — no further config change needed. Wallet picker now shows all 7 mainnet chains; testnet deployment still shows only Base Sepolia. Refs: RG-644a80 (data wiring portion; smoke testing remains) Co-Authored-By: Claude Opus 4.7 (1M context) --- packages/app/src/app/create/page.tsx | 6 ++ packages/app/src/app/vaults/page.tsx | 5 ++ packages/app/src/config/chains.test.ts | 35 +++++++- packages/app/src/config/chains.ts | 108 ++++++++++++++++++++++++- packages/app/src/config/wagmi.ts | 6 ++ 5 files changed, 156 insertions(+), 4 deletions(-) diff --git a/packages/app/src/app/create/page.tsx b/packages/app/src/app/create/page.tsx index 3561ba1..c260099 100644 --- a/packages/app/src/app/create/page.tsx +++ b/packages/app/src/app/create/page.tsx @@ -122,6 +122,7 @@ function CreateLockInner() { usdcDecimals, treasury, explorerUrl, + usdcNote, } = useMemo( () => getChainConfig( @@ -708,6 +709,11 @@ function CreateLockInner() { {formatUnits(totalAmount, usdcDecimals)} USDC (incl. {brokerFeePct} fee).

)} + {usdcNote && ( +

+ {usdcNote} +

+ )} {IS_TESTNET && isConnected && (