How It Works

The intent lifecycle from submission to accountability, in 5 steps.

1

User Submits Intent

A user expresses what they want (e.g., swap 1 ETH for USDC at best price). The intent is formatted as an ERC-7683 cross-chain order with an intentHash.

The intent specifies constraints (minimum output, deadline) but not the execution path. The solver decides how to fulfill it.

2

Solver Executes

A registered solver picks up the intent and executes it on-chain. The solver must have an active bond (minimum 0.1 ETH staked in the SolverRegistry).

Solvers choose execution strategies: direct swaps, multi-hop routing, cross-chain bridges, or aggregation. The method is up to the solver; the outcome must meet the intent constraints.

3

Receipt Posted On-Chain

After execution, the solver posts a cryptographic receipt to the IntentReceiptHub. The receipt includes the intentHash, constraintsHash, evidenceHash, and solver signature.

V2 receipts add dual attestation: both solver and client sign via EIP-712. Privacy levels (public, semi-public, private) control what data is visible on-chain vs. stored off-chain.

4

Challenge Window Opens

A 1-hour challenge window begins. During this period, anyone can dispute the receipt by providing evidence and posting a dispute bond.

Deterministic violations (timeout expired, wrong amount) are resolved automatically. Complex disputes use optimistic resolution: the solver has 24 hours to post a counter-bond, or the challenger wins by default.

5

Finalization & Reputation Update

If no dispute is filed during the challenge window, the receipt finalizes. The solver's IntentScore is updated based on the outcome.

If a dispute was filed and resolved against the solver, the bond is slashed: 80% to the user, 15% to the challenger, 5% to the treasury. After 3 jailings, the solver is permanently banned.

Implementation Status

Protocol contracts and EIP-7702 delegation contracts are live on Sepolia testnet. Solver and watchtower are chain-connected with Cloud KMS signing and real on-chain data queries. Receipt posting, dispute resolution, and automated monitoring work end-to-end.

Dispute Resolution Paths

Receipt Posted | +-- [1 hour CHALLENGE_WINDOW] | +-- No dispute -> finalize() -> Reputation updated | +-- Dispute opened (with bond) | +-- Deterministic (timeout, wrong amount) | +-- resolveDeterministic() -> Auto-slash | +-- Optimistic (V2) | +-- [24h COUNTER_BOND_WINDOW] | +-- No counter-bond -> Challenger wins | +-- Counter-bond posted -> Escalate to Arbitrator | +-- [7d max] -> Arbitrator rules -> Slash or release