Deploy contracts. Any chain. Atomic.
The Deploy wizard takes a Solidity file plus a target chain, compiles it with forge inside arc, and ships it via the sealed signer-deployer enclave. The enclave's private key never leaves the host — arc receives signed transactions, not keys.
1 · The flow
- Visit /deploy.
- Connect a wallet (the wallet only signs the trigger; it never holds the deploy key).
- Paste a Solidity file or point at a GitHub URL.
- Pick a target chain from the 18-chain DEPLOY NOW config.
- arc compiles with forge, requests a signed deploy tx from the enclave, and submits.
- You get a deployment receipt with address, tx hash, block number, and gas used.
2 · Signer-deployer enclave
The enclave runs on a separate host. arc-api makes an authenticated request to the enclave's signer endpoint (arc-signer-deployer), gets back a signed raw transaction, and broadcasts it. The enclave's private key sits in a sealed file owned by the enclave's user account; arc-api never sees it.
The fill path is intentionally separated: the solver fill key is a different EOA, lives on a different host, and signs fills on destination chains. A compromise of one does not compromise the other.
The Telegram approval gate adds a human-in-the-loop step for high-value txes. Set ARC_SIGNER_AUTO_APPROVE=1 to bypass for low-value fills if you need throughput.
3 · Chains live today
DonutHookV2 + Entry pair is deployed on 4 chains (Optimism + Unichain + 2 more) for the full 70/20/10 fee split. Adapters on all other chains use the ecosystem fallback.
GET /v1/chains returns the full enriched chain list: name, USDC address, explorer URL, RPC. Use it as the source of truth instead of hard-coding a map in your dApp.
4 · Deploy-scheduler — gas-aware auto-deploy
The deploy-scheduler watches gas thresholds across all 56 configured networks and auto-deploys pending contracts when gas drops below the configured ceiling per chain. Configure ceilings in deploy-scheduler.env and submit deploys to the queue via POST /v1/deploy.
The scheduler is a systemd service arc-deploy-scheduler.service on the arc host.
5 · Donut fee split for new adapters
Every fill through arc produces a signed donut attestation. The adapter-owner inflow gets redistributed:
- 70% → adapter builder
- 20% → adapter reviewers
- 10% → adapter ecosystem (fallback for unregistered adapters)
To register a new adapter, add an entry to config/adapter_registry.json with builder and reviewer addresses. Until your adapter is registered, fills flow 100% to the ecosystem address — fail-closed.
6 · Health, modes, debugging
GET /v1/mode— reflects signer-deployer reachability. If the enclave is unreachable, deploys are queued but not submitted.GET /v1/health— exposes the deployer address and per-chain RPC health.arc-fill-monitor.service— systemd unit that scans 10 source chains for fills. Restart it after any config change.- Rate limits: per-token, sane defaults.
429 Too Many Requestsincludes aRetry-Afterheader.