Anatomy of an intent
An intent has two parts:
The intent hash is
keccak256(destination, routeHash, rewardHash), a deterministic identifier that both chains agree on without ever transmitting the full intent.
The intent lifecycle

- Publish and fund. The user (or a relayer) publishes the intent and transfers the reward tokens to a deterministic vault address. Funding can happen before publishing. The vault address is CREATE2-derived from the intent hash.
- Fulfill. A solver executes the route on the destination chain, recording the fulfillment in the destination Portal.
- Prove. A prover (chosen by the user) carries proof of fulfillment back to the source chain.
- Settle. The source-chain Portal verifies the proof and releases the reward from the vault to the solver.
- Refund (if no fulfillment by deadline). A permissionless refund service returns the reward to the user.
