Overview
The Eco Routes Protocol operates through the interaction of three distinct participant types, each with specific responsibilities in the cross-chain intent lifecycle.Users
Users are the intent creators who want to execute actions on destination chains.Responsibilities
- Create intents specifying desired cross-chain actions
- Fund rewards to incentivize solvers to fulfill their intents
- Set deadlines for when intents must be executed
- Specify execution details including target contracts and function calls
User Actions
Users interact with theIntentSource contract on the source chain:
Publishing an Intent
contracts/IntentSource.sol
Publishing and Funding
contracts/IntentSource.sol
Funding an Existing Intent
contracts/IntentSource.sol
Refunding
contracts/IntentSource.sol
Users can only refund intents after the deadline has passed and only if the intent hasn’t been proven as fulfilled.
Solvers
Solvers (also called fillers) are the executors who fulfill intents on destination chains in exchange for rewards.Responsibilities
- Monitor published intents across chains
- Provide liquidity for the tokens and native currency needed for execution
- Execute the intent’s calls on the destination chain
- Claim the claimant identifier to receive rewards
Solver Actions
Solvers interact with theInbox contract on the destination chain:
Fulfilling an Intent
contracts/Inbox.sol
Fulfilling and Proving
contracts/Inbox.sol
Claimant Identifier
Theclaimant is a bytes32 identifier that represents who will receive the rewards:
- On EVM chains, this is typically the solver’s address converted to
bytes32 - The claimant is stored in the Inbox’s claimants mapping:
mapping(bytes32 => bytes32) public claimants - This identifier is used by provers to determine who receives rewards on the source chain
Solvers must provide the tokens and native currency specified in the route upfront. They are compensated through the reward once the intent is proven.
Economic Model
Solvers are incentivized through rewards that should exceed their costs:- Revenue: Reward tokens and native currency from the intent creator
- Costs: Route execution tokens, gas fees, capital opportunity cost
- Profit: Reward value minus costs
Provers
Provers are smart contracts that verify intent fulfillment and enable reward distribution on the source chain.Responsibilities
- Verify that intents were correctly fulfilled on destination chains
- Transmit proofs back to the source chain
- Store proof data linking intents to claimants
- Validate withdrawal requests
Prover Architecture
The protocol supports multiple prover implementations:- HyperProver - Uses Hyperlane for cross-chain messaging
- MetaProver - Uses Caldera Metalayer for cross-chain messaging
- LayerZeroProver - Uses LayerZero for cross-chain messaging
- PolymerProver - Uses Polymer for cross-chain messaging
- LocalProver - For same-chain proving (testing/special cases)
Proving Process
After a solver fulfills an intent, the prover:- Receives proof initiation from the destination chain
- Transmits claimant data to the source chain via cross-chain messaging
- Stores the proof in its
provenIntentsmapping:
Proof Validation
When rewards are withdrawn, the IntentSource contract checks the prover:contracts/IntentSource.sol
The prover specified in the intent’s reward struct determines which proving mechanism is used. Users should choose provers based on their security requirements and supported chain pairs.
Interaction Flow
- User creates and funds an intent on the source chain
- Solver monitors for funded intents and selects profitable ones
- Solver fulfills the intent on the destination chain with their claimant identifier
- Prover verifies the fulfillment and transmits proof to the source chain
- Solver (or anyone) withdraws rewards to the claimant address on the source chain
Anyone can call the withdraw function, but rewards always go to the claimant specified by the solver during fulfillment. This enables permissionless reward distribution.