What is Intent Proving?
After a solver fulfills an intent on the destination chain, they must prove the fulfillment on the source chain to claim their rewards. This proof validates that:- The intent was executed on the destination chain
- The correct claimant fulfilled it
- The execution matches the original intent hash
Proving Architecture
Prover Interface
All prover contracts implement theIProver interface:
IProver.sol
Proving Methods
There are two ways to prove intent fulfillment:Method 1: Fulfill and Prove Together
UsefulfillAndProve to atomically fulfill and initiate proving:
Method 2: Separate Fulfill and Prove
Fulfill first, then prove separately (allows batching multiple proofs):Proving Function
Fromcontracts/Inbox.sol:
Inbox.sol
- Verifies all intents are fulfilled
- Encodes chain ID + intent hash + claimant pairs
- Calls the prover contract to relay the proof message
Bridge-Specific Proving
- Hyperlane
- LayerZero
- Polymer
- Metalayer
Hyperlane uses the Mailbox pattern for cross-chain messaging:
Claiming Rewards
After the proof is delivered to the source chain, solvers can withdraw rewards.Withdraw Function
Fromcontracts/IntentSource.sol:
IntentSource.sol
Withdrawal Process
1
Wait for Proof Delivery
The proof must be delivered and processed on the source chain. Timing varies by bridge:
- Hyperlane: 1-5 minutes typically
- LayerZero: 2-10 minutes depending on confirmations
- Polymer: 10-30 minutes (IBC relay)
- Metalayer: 5-15 minutes
2
Call Withdraw
Anyone can call withdraw once the proof exists:
3
Receive Rewards
The vault automatically transfers rewards to the claimant:
Complete Proving Example
Here’s a complete example using Hyperlane:Batch Proving
Prove multiple intents in one transaction to save gas:Batch Withdrawal
Withdraw multiple rewards in one transaction:IntentSource.sol
Monitoring Proof Status
Check if a proof has been delivered:Proof Challenges
If an intent is proven on the wrong destination chain, it can be challenged:IntentSource.sol
Important Considerations
Proof Timing: Proof delivery time varies by bridge. Don’t attempt withdrawal until the proof is confirmed on the source chain.
Troubleshooting
Proof Not Appearing
Withdrawal Reverts
Next Steps
Creating Intents
Learn how users create and publish intents
Fulfilling Intents
Understand the fulfillment process
ERC-7683 Integration
Use standardized proving interfaces