Transaction builder
Scope verification
Verify compares an attempt with the mandate. It runs before simulation, so an unauthorized action never gets that far.
The three checks
Every attempt is tested against three rules. All three must pass.
- Per-action cap: the amount must be at most the per-action cap.
- Total budget: the amount must be at most the budget that remains after what is already spent.
- Approved target: the venue or recipient must be the one named in the mandate.
Reading the result
The Builder lists each check with the numbers behind it, so a blocked attempt explains itself.
Per-action cap PASS 3 USDC vs cap 5 USDC
Total budget PASS 3 USDC vs 50 USDC remaining
Approved venue FAIL Unlisted venue is not in the mandate
Rejected by mandate: 1 rule failed.When a rule fails
The Verify step is marked blocked. Simulate and Execute are skipped, nothing is signed or broadcast, and the attempt is recorded as a REJECTED_BY_POLICY receipt.
Expiry and revocation
A mandate that has expired or been revoked cannot authorize anything. This comes from the mandate status, which the server calculates from its own clock, rather than from the three checks above.
In the Builder preview the amount already spent is treated as zero, so the full budget is available.
Defense in depth
The simulation function checks the rules again by itself and refuses to run a blocked attempt, even if the interface lets it through. It does not trust the button that called it.
