Cross-chain intent-based swap protocol on Solana.
Users post swap intents on Solana. Solvers claim them, deliver tokens on the destination chain, and settle back on Solana to release escrowed funds.
| Field | Value |
|---|---|
| Program ID | FyBQEe7pQvEHhAHM4jGqSDM1MB9Xy81a8bnXcMnTDaVE |
| Deploy signature | 3gi1YQydowkaHdxrUiNFeovXFJfku9auoJps6r1DqcEs7KvRgpNjXkKJF7bfKodTe15VvmGbNp1U4QP5Rf2ic3eu |
| IDL account | eyLwv8pe3iWpPu7kPWyUekzTJNfgiwpm6BNfY6v7ZNE |
| Deploy authority | 455q3UD1KkfMP7zWrd2XcYoZW8LaVoiU969cmusengZ9 |
| Cluster | Devnet (https://api.devnet.solana.com) |
| Deployed at | 2026-06-25 |
Explorer links
User (browser)
└─ post_intent → escrows inputMint tokens in PDA vault
Solver agent (Docker)
├─ polls open intents every 4s
├─ claims profitable intents (claim_intent)
├─ delivers outputMint tokens on destination chain (EVM transfer)
└─ settles on Solana (settle_intent) → releases vault to solver
Guardian (relayer)
└─ co-signs settle_intent after verifying EVM delivery proof
| Account | Seeds | Description |
|---|---|---|
ProtocolConfig |
["protocol_config"] |
Global fee, guardian, total intents counter |
Intent |
["intent", creator, nonce_le] |
Single swap intent + escrow state |
EscrowVault |
["escrow", intent_pda] |
Token vault holding inputMint until settlement |
SolverProfile |
["solver", solver_pubkey] |
Per-solver reputation and whitelist status |
| Instruction | Who calls it | What it does |
|---|---|---|
initialize_protocol |
Admin (once) | Creates ProtocolConfig, sets fee & guardian |
post_intent |
User | Locks tokens in escrow, opens the intent |
claim_intent |
Solver | Locks the intent to this solver |
fill_intent |
Solver | Same-chain fill — transfers tokens directly |
settle_intent |
Solver + Guardian | Cross-chain settle — releases escrow after EVM proof |
cancel_intent |
Creator | Cancels an unclaimed intent, returns escrow |
expire_intent |
Anyone | Closes an expired intent |
register_solver |
Solver | Creates SolverProfile on-chain |
whitelist_solver |
Guardian | Approves a solver for cross-chain intents |
intentra/
├── programs/intentra/ Anchor program (Rust)
├── client/ Codama-generated TypeScript SDK
├── frontend/ Next.js 16 UI (wallet connect, live intents)
├── app/ Guardian / relayer bot (TypeScript)
├── solver/ Solver agent (TypeScript, Docker)
├── tests/ Anchor integration tests
└── codama/ IDL → SDK code generation
cd frontend
npm install
npm run dev
# → http://localhost:3000cd solver
cp .env.example .env
# fill in SOLVER_PRIVATE_KEY, PROGRAM_ID, etc.
npm install
npm run devcd solver
docker build -t intentra-solver .
docker run --env-file .env intentra-solveranchor testSOLVER_PRIVATE_KEY=<base58 or JSON array>
GUARDIAN_PRIVATE_KEY=<base58 or JSON array>
PROGRAM_ID=FyBQEe7pQvEHhAHM4jGqSDM1MB9Xy81a8bnXcMnTDaVE
SOLANA_RPC_URL=https://api.devnet.solana.com
SOLANA_WS_URL=wss://api.devnet.solana.com
EVM_PRIVATE_KEY=<hex>
EVM_CHAIN_2_RPC=https://eth-sepolia.g.alchemy.com/v2/<key>
NEXT_PUBLIC_SOLANA_NETWORK=devnet