Contracts
Small contracts, no owner, no upgrade path. Deployed on Arc.
Addresses
| Contract | Address |
|---|---|
| ARC10 vault | 0xe30F8128DEb386d7E6464ce88D2fAD8C3312a064 |
| FXX vault | 0x5c86Ed6C20bb79c7CB72e207f2882587C0CD220d |
| YLD1 vault | 0x722743ABaCb89c95AD889858b3dFd55d8105645D |
| ARC10 v1.1 vault | 0x849e4d8fD8dFA17d2Ec93eDd52367ee392C1a25e |
| AssetRegistry | 0x5e3A78D1FDA637A2e7803b1355951815168B667d |
| RevenueExecutor (yield leg, v1.1) | 0xb873a8cB82354E8845308651DdE003cA22458b12 |
| BootstrapExecutor | 0xEb973052951fCC923597c53da9E46C8D8D2a4748 |
| USDC (Arc native, ERC-20 face) | 0x3600000000000000000000000000000000000000 |
| EURC (upstream, Circle) | 0xbEf5f6d51CB62b58e6A8f77868681825C6fe21c1 |
| USYC (upstream, Hashnote) | 0x8a5D989Bbb96929F689B0200f435f53dA42bF490 |
The machine-readable list is at /api/contracts.
Architecture
Arc-native assets
USDC, EURC, USYC: ERC-20 float, decimals
AssetRegistry
permissionless listing, eligibility rules
ArcYieldVault ×3
ERC-4626 shares, NAV, epoch rebalance
reads flow left to right; each vault delegates position management and yield collection to its executor module
Sources are published and verifiable on the Arc explorer. The vault core is deliberately small enough to read in one sitting; position management and yield collection live behind an executor module set once at deployment.
The launch vaults run the bootstrap executor: it reports zero positions and harvests zero, so they hold exactly the USDC deposited in them. Executor addresses are immutable, so new executor logic means a new vault; migration is one redeem and one deposit.
ARC10 v1.1 is the first yield-leg vault. Its RevenueExecutor accepts native USDC from the ArcYield revenue wallet, counts it toward NAV immediately, and each epoch's rebalance sweeps it into the vault for shareholders. No owner, no withdraw path: USDC that enters the executor can only ever reach the vault. This is revenue share, stated as such; constituent positions and yield harvesting remain the next executor generation.
One Arc-specific note: native USDC reaches contracts with 18 decimals, so every amount in these contracts is an 18-decimal figure even though the USDC ERC-20 face shows 6. The site divides by 1012 for display.
AssetRegistry
| Function | Who | What |
|---|---|---|
register(token) | anyone | lists an ERC-20 on Arc, snapshots its float |
refreshSnapshot(token) | anyone | updates the float used for weighting |
isEligible(token) | view | listed, 7+ days old, 25,000+ USDC of float |
ArcYieldVault
| Function | Who | What |
|---|---|---|
deposit() | anyone, payable | mints shares at NAV for the sent USDC |
redeem(shares) | holder | burns shares, pays USDC at NAV from idle balance |
rebalance() | anyone, once per epoch | harvests yield, recaps weights, pays the 0.05 USDC tip |
totalAssets() | view | idle USDC plus the executor's position mark |
The vault has no owner functions at all: no pause, no allowlist, no parameter setters. The constants (15% cap, 24h epoch, 0.05 USDC tip) are compiled in.