Deployed Contracts
ChainRender is live on three testnets — the Ethereum Sepolia, Robinhood Chain, and Circle Arc testnets.
This page lists the core deployed contracts you integrate against. The canonical, complete, always-current address list is
deployment/additive/addresses.json (Sepolia) plus the per-chain chains.json manifest in the repository — this
page surfaces the key entries for convenience.
Always verify against the canonical file. Deployments evolve (new versions are added alongside old ones — nothing is ever removed). The repository's
addresses.json/chains.jsonare the source of truth; the addresses below are the current core set at the time of writing. Verify any address on a block explorer before integrating.
Networks
ChainRender is deployed on three testnets. App identity is the content hash, so the same app has the same hash on every chain — nothing bridges; only the infrastructure contract addresses differ per chain.
| Chain | Chain ID | Explorer | Gas |
|---|---|---|---|
| Ethereum Sepolia | 11155111 |
https://sepolia.etherscan.io | ETH |
| Robinhood Chain Testnet | 46630 |
https://explorer.testnet.chain.robinhood.com | ETH |
| Circle Arc Testnet | 5042002 |
https://testnet.arcscan.app | USDC |
- Canonical Sepolia addresses:
deployment/additive/addresses.json. - Canonical per-chain manifest (all chains):
chains.json, generated byscripts/build-chains-manifest.mjsfrom each chain'sdeployment/genesis-addresses.<chainId>.json. The builder reads it to populate the chain selector, so it can never drift from what was actually deployed.
Core render path (Sepolia)
| Contract | Address | Role |
|---|---|---|
| ComponentRegistry | 0x36a443515b96b992ee397dfd9a533de72b70c3c9 |
hash → app bytes (content-addressed store) |
| RenderRouter (context-aware, current) | 0x3d236f80ef66cd2a173b54b59d9e500d499a9720 |
renderHash / renderHashWithContext — the render entry point; the "ctxfix" router whose on-chain PresentationContext matches the viewer |
| Interpreter (V3 HTML, current) | 0x8996afa3042ddc4fb2a92d351cdcc4aa6bee77f0 |
walks the byte tree → HTML/SVG |
Additive history (all stay live): earlier router/interpreter versions remain callable —
RenderRouter_v1060x3bb7613e…(+ interpreter0x58122fe6…) and the superseded base0x0322b911…. The addresses above are the current "ctxfix" stack the live viewer renders through; pin to whichever version your app was built against.
Now on all three chains:
ComponentRegistryFastis the canonical component store on every chain — a gas-optimized (MCOPY) twin ofComponentRegistrythat reads back byte-identically; Sepolia keeps the legacyComponentRegistryabove for already-seeded apps.OpcodeInterpreterV3(a second render target that emits a self-contained SVG document from the same component bytes, alongside the HTMLV3Html/V4Html) is also live on all three chains.
Flagship app + theming (Sepolia, current)
| Contract / id | Address / hash | Role |
|---|---|---|
| Flagship app (SwapAppRoot) | 0x83f0c1928e673942f69ce1d85e7637bcc8b688ffeac5725913877c53b42e26d5 |
the live swap app (Quote / Venues / Route) |
| ChartRenderer | 0x3d016ffdf31a901da08fe651d684a417ab6189ea |
on-chain charting |
| ChartSlotAdapter | 0x83f999b1bfff7f5b62e7f06c75d08d414e770624 |
binds chart data → an image slot |
| Light theme id | 0x69c36880140cc2a8764c66006f943114dfeb53cc3dbb6449787033131a015509 |
the tokenized light theme |
| Dark theme id | 0x06e66fe5b3c18bc42f90397c0d1ed61802bdb105e61a821a4cab91831a590a56 |
the dark theme |
Proven balances — Milestone 1 (Sepolia)
The proof stack behind Proven Balances: it proves token balances against
Sepolia's own state root and renders them with block, age and grade. All six are source-verified on Etherscan.
Deployment record: deployments/xchain-m1-11155111.json.
| Contract | Address | Role |
|---|---|---|
| CanonicalTokenFactory | 0x8d65a1128d410641ca86a4fa96a0e0015c579806 |
ownerless factory for home tokens; its recordOf[token] is what verifiers prove |
| SameChainRootSource | 0xf8cdb83a52d275925b7305a3e596d8920b30bf1e |
Sepolia block hashes via BLOCKHASH + the EIP-2935 history contract (code hash pinned) — Grade A ceiling |
| XchainBalanceCache | 0xfac774e199684ac13c002168c1a7a96adfdc9c72 |
verifies record + balance proofs (permissionless registerToken / refresh); per-source entries |
| XchainBalanceResolver | 0x795864a65debca3d50945439aac90d043109e77e |
resolver kind xchain-balance — the free render (host label "Sepolia") |
| ScopeDisclosureResolver | 0xb42f3b2b14270b3bd0190a17776274908ae511b0 |
resolver kind scope-disclosure — renders what a contract's grade does not establish |
| CRPD demo token | 0xf69528c009406237565c12fcd6e5c9f207bd5504 |
a CanonicalToken made by the factory, used for the live demo render |
Testnet-disposable. These contracts may be redeployed in a later milestone (for example a CreateX redeploy of the factory, once tokens need the same address on several chains). Milestone 2 reuses them unchanged. Always take addresses from the deployment record.
Proven balances — Milestone 2 (Sepolia → Robinhood Chain Testnet)
Sepolia balances proven on Robinhood (Proven Balances, On another
chain). Deployed and accepted end to end on 2026-10-06; all five are source-verified (Etherscan for the sender,
Robinhood's Blockscout explorer for the rest). Deployment record:
deployments/xchain-m2-46630.json.
| Chain | Contract | Address | Role |
|---|---|---|---|
| Sepolia | ArbRootSender | 0xce1a5adf4228ce63ce00d0bbf68f9fb8deba06fc |
sends a recent Sepolia block hash (from the M1 SameChainRootSource, code hash pinned) to Robinhood as a retryable ticket; ownerless, holds nothing, caller pays |
| Robinhood | ArbParentRootSource | 0xd8e53abe4b6e23d3fcebe200d32eba305162ff9c |
accepts Sepolia block hashes only from the sender's alias 0xdf2b5adf…180d; append-only — Grade A ceiling, relative to Robinhood |
| Robinhood | XchainBalanceCache | 0x492729b97f6c02d4ffba942d59ca2c082b50a328 |
the unchanged M1 cache, home = Sepolia; its only root source is ArbParentRootSource |
| Robinhood | XchainBalanceResolverV2 | 0xbf5d12536428996e36dda117f9ce3691b481fffe |
resolver kind xchain-balance — host label "Robinhood Testnet", facet instant upgrades, 1-of-2 Safe, as of 2026-10 |
| Robinhood | ScopeDisclosureResolver | 0x49a1497328470aa0ca9a3ecb796eb6d2b868e636 |
resolver kind scope-disclosure on Robinhood |
The sender and receiver were deployed through CreateX (CREATE3) so each could name the other in its constructor.
Proven token on Robinhood: the Sepolia CRPD (0xf69528c0…5504), registered in the Robinhood cache.
Proven balances — Milestone 3, snapshot mode (existing tokens, Sepolia → Robinhood)
Balances of tokens ChainRender did not create, from the token's own balanceOf run on Sepolia
(Proven Balances, Tokens ChainRender didn't create). Deployed, accepted
and source-verified on 2026-10-06. The Robinhood cache reuses the Milestone 2 ArbParentRootSource as its only
root source. Deployment record: deployments/xchain-m3-46630.json.
| Chain | Contract | Address | Role |
|---|---|---|---|
| Sepolia | BalanceSnapshotter | 0x3493390302c9f8d0f1c3a0861960b77f33d63c74 |
runs a token's balanceOf / decimals (and once name / symbol) with exactly 100,000 gas and commits the answers in its own storage; ownerless, permissionless |
| Robinhood | SnapshotBalanceCache | 0x3ad98f060cbbc2952f2b7c30afc36a51d1cf055c |
proves the snapshotter's commitments (code hash 0x7c349593…f9ad pinned) against delivered Sepolia roots |
| Robinhood | SnapshotBalanceResolver | 0x8f1dd932c36423d5f60eebfe60c85c8cf2ff9713 |
resolver kind xchain-snapshot-balance — host label "Robinhood Testnet", facet instant upgrades, 1-of-2 Safe, as of 2026-10 |
Tokens proven on Robinhood: Sepolia WETH9 (0xfff99767…6b14) and USDC (0x1c7d4b19…7238).
Proven balances — Milestone 3, storage-layout mode (existing tokens, Sepolia → Robinhood)
Storage proofs of tokens ChainRender did not create, under content-addressed adoption claims
(Proven Balances, without a transaction per value). Grade C by construction.
Deployed, accepted and source-verified on 2026-10-07 (Etherscan; Robinhood's Blockscout explorer). Deployment record:
deployments/xchain-m3b-46630.json.
The three adapters are at the same address with the same code on both chains (CreateX CREATE3, a salt not bound to a chain): a claim names them by address + code hash, so one claim works everywhere.
| Chain | Contract | Address | Role |
|---|---|---|---|
| both | PlainPinning | 0x1ea8799342a963550f5b2ae1a75d98f7137afd9d |
pinning rule plain/v1 — no reachable delegation, a balanceOf selector; code hash 0x7f6b3f58…5efb |
| both | SlotProxyPinning | 0xb020a310236b79362a3f9a2c574a50b4a0d6df16 |
pinning rule slot-proxy/v1 — one constant implementation slot, implementation pinned by code hash; code hash 0xfec635be…27be |
| both | MappingWordLayout | 0x0115636a12904a6fc66929ec65d95c3e543fc116 |
balance layout mapping-word/v1 — one mapping word, low n bits; code hash 0xeef84dd2…5aaf |
| Sepolia | TokenAdoptionRegistry | 0x4fd6ed93f62d9b152db074ee5f1524ae102fe477 |
adopt (structural checks, witness) and confirm (same-chain proof via the M1 SameChainRootSource); ownerless, permissionless |
| Sepolia | AdoptedBalanceCache | 0xffdb6688ba039d8a2ee414c86a950e64ad49336f |
registers confirmed claims and proves balances under them; root source = the M1 SameChainRootSource |
| Sepolia | AdoptedBalanceResolver | 0x3a7ac5c7287622bf310ad6f5f64d695b53006b7f |
resolver kind xchain-adopted-balance — host label "Sepolia" |
| Robinhood | AdoptedBalanceCache | 0xfc843824a5243878ed4dbb3a7c235ef50934c553 |
the same cache code; root source = the M2 ArbParentRootSource; registry code hash 0x18098bcf…90bc pinned |
| Robinhood | AdoptedBalanceResolver | 0xf84c3f01c1d89af96328a45e984caf52ac7611d9 |
resolver kind xchain-adopted-balance — host label "Robinhood Testnet", facet instant upgrades, 1-of-2 Safe, as of 2026-10 |
Adapters on Robinhood: PlainPinning, SlotProxyPinning, MappingWordLayout.
Adopted on Sepolia and registered on both chains: WETH9 (0xfff99767…6b14) under claim
0xfae8aac6088f9c8b1b4a5d255388ffe92c0c1f2167da8c9fadb40f635d6cc4e5 (plain/v1 + mapping-word/v1, Solidity order,
slot 3, 256 bits; evidence 0x319df1e6…2657, pinned on IPFS as
bafkreidkcv46nvu7oayhvegbdiengoconle67ct6ovt7ecnxlnhl3bwkkm). Sepolia USDC is refused (Delegates), and is shown via snapshot mode.
Cross-chain swap — Milestone 4 (Sepolia ↔ Robinhood, no bridge)
A hash-timelock swap whose second lock checks the first by storage proof
(Proven Balances, Swapping across chains without a bridge). Deployed, accepted
and source-verified on 2026-10-07 (Etherscan; Robinhood's Blockscout explorer). Deployment record:
deployments/xchain-m4-46630.json. The swap is Grade C at most; proven lock states are Grade A relative to Robinhood,
always with its facet.
| Chain | Contract | Address | Role |
|---|---|---|---|
| both | HashTimelockSwap | 0x0cc5c1e149843b9daa5878cc34917233b49806eb |
the swap locks; same address and code on both chains (CreateX CREATE3, salt label cr.m4.htlc1, not chain-bound); code hash 0x81c87966…8466; ownerless |
| Robinhood | CanonicalTokenFactory | 0x416a27cb0f3dd05110777b403379e4b27cda34f5 |
the Milestone 1 factory, unchanged; tokens made here have Robinhood as home |
| Robinhood | SwapLockProofCache | 0x52157c234ed40a54352064cf7d0cd79269e208ff |
proves Sepolia lock states (root source = the M2 ArbParentRootSource) and guards the second lock; MIN_GAP 352,800 s, MIN_WINDOW 737,460 s (from Robinhood's maxTimeVariation); proven token definitions from the M2 XchainBalanceCache |
| Robinhood | SwapLockResolver | 0x690816d4cae09a124b663ed016cbc002cf637f19 |
resolver kind swap-lock — home label "Sepolia", host label "Robinhood Testnet", facet instant upgrades, 1-of-2 Safe, as of 2026-10 |
HashTimelockSwap on Robinhood: explorer.
Acceptance tokens: CRSA on Sepolia (0xed28bd4c…8fa8) and CRSB on Robinhood (0x5ba180d3…d5a4).
How to use these
- Render the flagship:
RenderRouter.renderHash(0x83f0c192…)— a freeeth_call. - Render with a theme/size:
RenderRouter.renderHashWithContext(appHash, ctx). - Check a component exists:
ComponentRegistry.exists(hash).
For the full deployment — every resolver, registry, and renderer (Sepolia is ~130 contracts) — read
deployment/additive/addresses.json. New capability is deployed additively (new contracts alongside the live
base, never replacing it), so the file grows over time and old addresses keep working.
Robinhood Chain Testnet (46630)
ChainRender runs the same core render path on the Robinhood Chain Testnet (chain 46630), deployed at
Robinhood-specific addresses. Because app identity is the content hash, an app deployed to both chains carries
the same hash on each — only the infrastructure contract addresses differ. (The on-chain library hashes below
are byte-identical to Sepolia: same bytes, same hash.)
Network: chain id 46630 · explorer https://explorer.testnet.chain.robinhood.com · gas token ETH · free
testnet gas via the site's Robinhood faucet toggle (Official / QuickNode / Chainstack / Chainlink).
Core render path (Robinhood)
| Contract | Address | Role |
|---|---|---|
| ComponentRegistryFast | 0x6e49b1dfd05248df06041ad17973de59d9e76c2b |
hash → app bytes (content-addressed store) |
| RenderRouter | 0xbfa38b3bcc0fbb32facffc497bbc38af4b587382 |
renderHash / renderHashWithContext — the render entry point |
| OpcodeInterpreterV3Html | 0x79518757d3717c371961b7f8870e1416b39c9c72 |
walks the byte tree → HTML/SVG (V4 HTML also live: 0xa4349577…) |
| SourceStoreFast | 0x9dd09d934f84165845c35eca6af4309d6aa08455 |
SSTORE2-backed source / chunk store |
Key registries, renderers & theming (Robinhood)
| Contract | Address |
|---|---|
| CompositionRegistry | 0xab628eb22bb731dccb75d981d186b03ac30bbd2e |
| SceneComponentRegistry | 0x73a84585c058ca9405de94213033668a86032410 |
| DependencyRegistry (on-chain libraries) | 0xae75db71dc78109f29b7946f65b3983a81e17686 |
| ThemeTokens | 0xcb33a04817a40deb1753b982e109a25672ca368a |
| ChartRenderer | 0xfa9f5df6419eab3b180c18909d06f70a197c01a1 |
| TrustGrade | 0x7317cf8dea1a987943143d05c59fcc9369a34f45 |
| SubnameStakeRegistrarV2 | 0x627e120abd54cef75f7b4340c9674a7245017f91 |
| Web3Serve | 0x574b2372f6bf61892b44c5ce9aecb9acd4ed4649 |
The full set — 109 contracts (every resolver, registry, renderer, verifier) — is in
deployment/genesis-addresses.46630.json, surfaced through the generated chains.json. Verify any address on the
Robinhood explorer before integrating.
On-chain libraries (Robinhood, DependencyRegistry 0xae75db71…)
Content-addressed, so these libHash values are byte-identical to Sepolia:
| Library | libHash | Size / parts |
|---|---|---|
| three (r160 UMD) | 0x59786fe6aa0043e6630f8b6771a9e8c7ff5dfd5b25cfbffa720d59c04fc3a741 |
166,990 B / 3 |
| icons (500 Lucide) | 0x1357bb6e8d2d5cfd83f947d83a5a0d06f8078c91923eb4a197bc4e10539e5180 |
20,995 B / 1 |
| p5 (2.3.2) | 0x0daa59ef280a524b8b95f5e9eb13924a678f52291c8bbb01b29f8dcee9b52db9 |
285,882 B / 4 |
| three (0.185.1) | 0x52a5452c0375b4125b988364a21c566924e0e74b1a56e2aede1579a1552ad51d |
86,915 B / 2 |
Circle Arc Testnet (5042002)
ChainRender runs the same core render path on the Circle Arc Testnet (chain 5042002), deployed at
Arc-specific addresses. As with Robinhood, app identity is the content hash — the same app carries the same
hash on Arc as on Sepolia/Robinhood; only the infrastructure addresses differ. (Arc's core addresses in fact came
out identical to Robinhood's: the same deployer deploying the same contracts in the same order yields the same
CREATE addresses — the chains remain fully independent deployments.)
Network: chain id 5042002 · explorer https://testnet.arcscan.app · gas token USDC · testnet USDC via the
site's Arc faucet toggle (Circle / Chainlink / thirdweb).
USDC gas — the one Arc quirk. Arc's native gas token is USDC, and Arc exposes USDC twice: as the native gas asset it uses 18 decimals (standard wei-style — gas math and native balances behave like any ETH-style chain), while the USDC ERC-20 token uses 6 decimals at the fixed address
0x3600000000000000000000000000000000000000. Don't conflate the two — read a USDC token amount at 6 decimals and the native balance at 18. Rendering itself is unaffected (view calls are chain-agnostic).
Core render path (Arc)
| Contract | Address | Role |
|---|---|---|
| ComponentRegistryFast | 0x6e49b1dfd05248df06041ad17973de59d9e76c2b |
hash → app bytes (content-addressed store) |
| RenderRouter | 0xbfa38b3bcc0fbb32facffc497bbc38af4b587382 |
renderHash / renderHashWithContext — the render entry point |
| OpcodeInterpreterV3Html | 0x79518757d3717c371961b7f8870e1416b39c9c72 |
walks the byte tree → HTML/SVG (V4 HTML also live: 0xa4349577…) |
| SourceStoreFast | 0x9dd09d934f84165845c35eca6af4309d6aa08455 |
SSTORE2-backed source / chunk store |
Key registries, renderers & theming (Arc)
| Contract | Address |
|---|---|
| CompositionRegistry | 0xab628eb22bb731dccb75d981d186b03ac30bbd2e |
| SceneComponentRegistry | 0x73a84585c058ca9405de94213033668a86032410 |
| DependencyRegistry (on-chain libraries) | 0xae75db71dc78109f29b7946f65b3983a81e17686 |
| ThemeTokens | 0xcb33a04817a40deb1753b982e109a25672ca368a |
| ChartRenderer | 0xfa9f5df6419eab3b180c18909d06f70a197c01a1 |
| TrustGrade | 0x7317cf8dea1a987943143d05c59fcc9369a34f45 |
| SubnameStakeRegistrarV2 | 0x627e120abd54cef75f7b4340c9674a7245017f91 |
| Web3Serve | 0x574b2372f6bf61892b44c5ce9aecb9acd4ed4649 |
The full set — 109 contracts — is in deployment/genesis-addresses.5042002.json, surfaced through the generated
chains.json. The on-chain library hashes are byte-identical to Sepolia/Robinhood (content-addressed). Verify
any address on the Arc explorer before integrating.
The additive deployment discipline
ChainRender never redeploys the world to add a feature. New contracts (a new resolver, a new registry, a new interpreter version) are deployed against the live base and their addresses merged into the address file, leaving everything existing untouched. This is why:
- Old apps never break — the contracts they reference are immutable and stay live.
- The address file is append-only — entries are added, never removed.
- You can pin to a specific version — an app references exactly the contract addresses it was built against.
Verifying a deployment
Every ChainRender contract is ownerless and immutable (no admin, no upgrade key). To verify:
- Read the contract's bytecode on a block explorer — confirm it matches the compiled artifact.
- Confirm there's no owner/admin function.
- Render an app through it against multiple RPCs — byte-identical output confirms honest behavior.
See Contracts → Verifying an App.
Related
On-chain libraries (DependencyRegistry)
Fetched by name (newest-wins), gzip-compressed, decompressed natively in the browser -- no CDN.
| Library | Content id (libHash) | Notes |
|---|---|---|
| p5 (UMD) | (see DependencyRegistry) | plain-script load, sets window.p5 |
| three (r160 UMD) | 0x59786fe6aa0043e6630f8b6771a9e8c7ff5dfd5b25cfbffa720d59c04fc3a741 |
plain-script load, sets window.THREE; r160 is the last UMD build |
| icons (500 Lucide) | 0x1357bb6e8d2d5cfd83f947d83a5a0d06f8078c91923eb4a197bc4e10539e5180 |
SVG sprite, one chunk, theme-adaptive |
DeFi resolvers
All caller-supplied-address, view-only, ownerless, fail-closed (a reverting/missing target renders "unavailable"),
and now deployed on all three chains. See DeFi Capabilities for detail.
| Contract | Kind | Purpose |
|---|---|---|
| ChainlinkFeedResolver | price |
Chainlink aggregator price/round data |
| UniswapV3PriceResolver | uniV3Price |
live V3 pool price (slot0) |
| UniswapV4PriceResolver | uniV4Price |
live V4 pool price (StateView.getSlot0) |
| AaveReserveResolver | aaveSupplyApy |
Aave reserve / supply-APY read |
| CurvePoolResolver | curvePool |
Curve StableSwap get_dy / composition |
| UniswapV3PositionResolver | uniV3Position |
a V3 LP position (positions(tokenId)) |
| AavePositionResolver | aavePosition |
an Aave user account (health factor, debt) |
| UniswapQuoteResolver | uniQuote |
pre-trade quote (QuoterV2, staticcall) |
| ApprovalStateResolver | approvalState |
ERC-20 allowance / approval state |
| PortfolioResolver | portfolio |
sums many reads into one aggregated total |
| CallResolver | staticread |
generic view reader (any hook/contract view fn) |
| MultiCallResolver | multiread |
batch several reads side-by-side |
RWA resolvers
Real-world-asset display + verification resolvers — on-chain reads rendered honestly, never enforcement or custody. Deployed on all three chains. Full detail (kinds, trust grades, the honest boundary) in RWA Capabilities.
| Contract | Kinds | Purpose |
|---|---|---|
| ProofOfReserveResolver | por-reserves · por-supply · por-coverage |
reserves vs totalSupply() coverage ratio (Grade A, computed on-chain) |
| Erc3643PermissionAdapter | erc3643-verified/-frozen/-status/-can-transfer |
ERC-3643 compliance display (graded ≤C — mutable authority) |
| CredentialStatusRegistry | (registry) | ownerless issuer-scoped attest / renew / revoke + expiry |
| CredentialLifecycleResolver | cred-status · cred-valid |
credential status bound to an expected issuer |
| VaultResolver | vault4626 · vault7540 |
ERC-4626 NAV / totals + ERC-7540 redemption queue (Grade A; trust = the vault's own accounting) |
(Addresses are per-deployment and additive; deployment/additive/addresses.json (Sepolia) and each chain's
genesis-addresses.<chainId>.json — surfaced through chains.json — are the authoritative live set.)
CoW / intent-DeFi resolvers (Sepolia)
Intent-based DeFi — CoW Protocol conditional/programmatic orders, rendered + verified trustlessly. These are deployed on Ethereum Sepolia (where CoW's ComposableCoW is deployed); they are portable to any chain where ComposableCoW exists, because its address is a caller argument, not a hardcoded constant. They are not part of the all-three-chains resolver set above. Full detail in Intent DeFi & CoW Protocol.
| Contract | Kind | Sepolia address | Role |
|---|---|---|---|
| CowTwapResolver | cowTwap |
0xF949E6fB52Df34Dcc86F674E51327567cD964395 |
TWAP schedule from the order definition + block.timestamp (Grade A) |
| CowConditionalOrderResolver | cowOrder |
0x752AcEd4a7D7bD9Bd604c3d7adD38373Eed3b6c1 |
live tradeability via STATICCALL to the real ComposableCoW (Grade A, fail-closed to not active) |
| CowIntentVerifyResolver | cowIntent |
0xCaa6E85510f6FDDA54Be92AaEb95e6779bdc1AB2 |
on-chain keccak256(fullAppData) == order.appData → verified / app-data mismatch (Grade A) |
| ComposableCoW (CoW Protocol, external) | — | 0xfdaFc9d1902f4e0b84f65F49f244b32b31013b74 |
CoW's conditional-order framework (deterministic across chains) |
ENS multichain resolver (Sepolia)
| Contract | Kinds | Sepolia address | Role |
|---|---|---|---|
| EnsMultichainResolver | ensApp · ensNameChain |
0x02a2c2E1E7fd8Aed8BF4dF7d9695c26F172C247f |
chainrender.app text manifest + ENSIP-19 chain-aware verified reverse (Grade A); ENS registry supplied at construction |
Addresses above are the current Sepolia set at the time of writing and come from this deployment's additive run — verify against
deployment/additive/addresses.json(the authoritative live set) before integrating. See ENS Names & Integration for the ENS reads and RWA Capabilities for the vault.