← All Recipes
Bazantic // Recipe
On-Chain Transaction Authorization Verifier
on-chain-transaction-authorization-verifier
Verifies that an AI agent's proposed on-chain transaction matches the human's original authorization by decoding calldata through the Evzi Intent Firewall gateway's verifyProposal tool, checking constraints, and reporting the policy decision (ALLOW, REQUIRE APPROVAL, or REJECT) with decoded action details and all findings.
Recipe inputs
Complete fields before a run.
The transactions the agent proposes, as JSON objects with chainId, from, to and data (hex calldata). Not bare calldata strings - the verifier needs the chain and the addresses to check them against the authorization.
The frozen AuthorizedIntent the human approved, as a JSON object including its hash. Pass it through to verifyProposal byte for byte - it is hashed, and any edit makes it fail its own integrity check.
Output example
Representative published output.
"**REJECT**\n\nThe transaction is an ERC-20 `approve` on the canonical Base USDC token (`0x833589fC…bdA02913`), granting the spender `0x6fF5693b99212Da76ad316178A184AB56D299b43` an allowance of 115,792,089,237,316,195,423,570,985,008,687,907,853,269,984,665,640,564,039,457,584,007,913,129,639,935 — the maximum possible value, i.e. unlimited.\n\nFindings:\n- **Unlimited approval, explicitly forbidden (danger):** This grants unlimited access to your USDC at `0x833589fc…`, but your authorization said \"no unlimited approvals.\" The approval amount is uint256-max, not the 500 USDC (500000000) cap you set. If you sign it, the spender could drain your entire USDC balance on Base, now and at any point in the future, not just this one swap.\n- **Token identity checks out:** The on-chain lookup confirms the token is genuine USDC on Base (symbol USDC, marked canonical, ~$94.0M market cap in the returned data), so this is not a lookalike/impersonating token. No findings were raised about the token itself.\n- **On-chain data was returned in degraded mode:** The live Graph data came back flagged `degraded`, meaning some enrichment (e.g. reputation on the spender address `0x6fF5693b…`) may be incomplete. The spender was not independently vetted here, so treat it as unknown.\n\nI agree with the REJECT. The fix is straightforward: ask the agent to re-propose the approval for exactly 500000000 (500 USDC) rather than the unlimited amount, and to confirm what `0x6fF5693b99212Da76ad316178A184AB56D299b43` is before you approve anything to it."