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 persistent CREATE2 contract address that auto-executes a pre-programmed action when funds arrive. The sender makes a normal ERC-20 transfer; the address handles routing, swapping, or settling — whatever it’s programmed to do.

What ships today

ProductSource chainsDestinationUse case
Solana deposit addressesBaseAny Solana walletBridge USDC from EVM to Solana with no bridge UI
Gateway Fast DepositsBase, Optimism, ArbitrumCircle Gateway on PolygonFast, gasless USDC deposits into Gateway (20–40s)
Both share the same architecture (a factory + per-address deposit contracts) and use Routes for fulfillment. They differ in source chains, destination, and funding model.

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.

Roadmap

ItemStatus
EVM static deposit addresses (single address per user, multi-chain)Coming soon
Additional destinations beyond Gateway/SolanaOn roadmap
Self-serve programmable address SDKFuture

Solana deposit addresses

Static EVM address that auto-bridges to a Solana wallet.

Gateway Fast Deposits

Gasless USDC into Circle Gateway in 20–40 seconds.

Solana API

Solana deposit address endpoints + intent queries.

Gateway API

Gateway endpoints + gasless funding + intent queries.

Funding methods

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