How It Works
When an agent performs an EVM action (e.g., a Uniswap swap), the protocol verifies it in four steps:1. Pre-State Capture
Before the action, the agent records the EVM state root at the target block number. This is the “before” snapshot.2. Action Execution
The agent performs the transaction(s). Each transaction includes:target— the contract address being calledcalldata— the encoded function callvalue— ETH sent with the callslippageBps— tolerance for price movement
3. Effect Hash Computation
After execution, the agent computes a deterministic hash of the resulting state change:4. On-Chain Verification
ActionVerifier.verifyAction() replays the same computation and produces:
Deterministic guarantee: Given the same pre-state root and calldata, the EVM always produces the same post-state hash. This is a mathematical proof, not a statistical confidence score.
The ActionVerifier Contract
Flow
- Computes
effectHashfrom the inputs (same formula as the agent) - Compares
effectHash == effectClaimHash→stateMatch - For each transaction, checks
AgentPolicyfor:- Is
targetinallowedTargets[agentId]? - Is
selector(first 4 bytes of calldata) inallowedSelectors[agentId]?
- Is
- Returns the combined result
Gas Cost
verifyAction() is a view function — it runs via eth_call and costs zero gas for the verifier. The only gas cost is the EAS attestation (~0.0001 ETH on Base).
Pre-Flight Dry Run
Before opening a dispute, theDisputeBridge service runs a pre-flight check:
EAS Attestation
Every verified action produces a permanent EAS attestation with theACTION_RECEIPT schema:
Attestations are non-revocable — once stamped, the result is permanent and queryable on EASScan.

