Skip to main content

Documentation Index

Fetch the complete documentation index at: https://eco.com/docs/llms.txt

Use this file to discover all available pages before exploring further.

A Programmable Address is a deterministic CREATE2 contract address with pre-programmed actions. When funds arrive, the actions execute automatically. The sender makes a normal ERC-20 transfer; the address handles routing, swapping, or settling — whatever it’s programmed to do.
REST endpoint reference: Gateway Fast Deposits API

What ships today

ProductSource chainsDestinationUse case
Circle Gateway DepositsBase, Optimism, ArbitrumCircle Gateway on PolygonFast, gasless USDC deposits into Gateway (20–40s)

How it works

  1. Address generation. Your app calls the API for a deposit address derived from (depositor, destination, chainId) via CREATE2. The address is deterministic — same inputs always return the same address.
  2. Token transfer. The user sends USDC to the address. First deposit triggers contract deployment automatically (no gas until funds actually arrive).
  3. Action execution. The contract publishes a Routes intent for the deposited amount.
  4. Fulfillment. Solvers compete to deliver the destination outcome.

Properties

Permissionless. Any wallet or app can generate an address via the API. No whitelisting, no KYC at the protocol level. Non-custodial. The deposit contract’s only operation is createIntent(). It cannot be drained, redirected, or upgraded. If the intent expires unfulfilled, an independent permissionless refund service returns the USDC to the depositor. Immutable. The address is CREATE2-derived from the inputs. Calling the endpoint again with identical inputs always returns the same address — and the address can be shared before the contract is deployed on-chain.

Funding methods

Funds can arrive at a Programmable Address by any of:
MethodUser pays gas?When to use
Direct ERC-20 transferYesSender already has source-chain gas
ERC-3009 transferWithAuthorizationNoRecommended for gasless UX (USDC-native)
EIP-2612 PermitNoFallback for tokens that support permit() but not ERC-3009
See Funding methods for signing code and field-by-field details.

Architecture

ContractRole
FactoryComputes deterministic addresses, deploys deposit contracts on first deposit
Deposit contractPer-destination contract — receives tokens, calls createIntent()
The factory is configured per source-token / destination-chain pair, with immutable parameters for Portal address, prover address, and intent-deadline duration.

Circle Gateway Deposits

Gasless USDC into Circle Gateway in 20–40 seconds.

Gateway API

Gateway endpoints + gasless funding.

Funding methods

EIP-712 signing code for ERC-3009 and Permit, plus the direct-transfer path.