Skip to main content

Enforcing Transaction Outcomes with IntentGuard

Simulation and transaction previews are not enforceable. What appears in a wallet at signing time is not necessarily what lands onchain. Phishing, wallet draining, hidden transfers, and bad outcomes from compromised dapps or frontends are real risks today.

IntentGuard closes that gap. A transaction is only included in a block if it matches conditions you define for that specific transaction. There is no profile, no upfront setup, and no onchain registration. Protection is applied per transaction.

Prerequisites

A wallet that supports custom RPCs (MetaMask, Rabby, Frame), with the IntentGuard 2-step submission RPC added for your network.

Mainnet
https://rpc.intentguard.xyz/2-step-submission
Chain ID 1
Sepolia
https://sepolia.rpc.intentguard.xyz/2-step-submission
Chain ID 11155111

If your wallet does not support wallet_addEthereumChain, add the URL above as a custom RPC using the chain ID shown.


How it works

Step 1
Interact with the dapp of your choice
Use your wallet as you normally would. Sign the transaction the dapp asks for.
Step 2
Set up protection
Open protect.intentguard.xyz and define the conditions the transaction must satisfy. If they match at execution, it lands onchain. If not, it is dropped.

Step 2 repeats for every transaction you want to protect.


Per-transaction flow

1. Use your wallet normally

Open your dapp and sign the transaction the way you always do. Once signed, the transaction is held at the IntentGuard relay. It has not been broadcast and it is not yet onchain.

2. Generate the protection transaction

Open the protection app and define the conditions the original transaction must satisfy: expected outflows, inflows, and balance changes.

Submit the protection transaction. IntentGuard only includes the original transaction in a block if those conditions are met.

Nonce stays safe

If conditions are not met, the transaction is not included. No state change, no gas spent, and your nonce is not consumed. You can sign a different transaction with the same nonce afterward.


Verify the enforcer onchain

The Sepolia enforcement contract is at 0x66e15884225b3f70fe09d5ee4718c34ca0ab27e4 (view source on Etherscan, verified).

What you have just enabled

Every transaction signed through this RPC is held until you attach the conditions it must satisfy. If execution does not match those conditions, the transaction never settles. No state changes. No gas spent. No nonce consumed. Protection is applied per transaction, with no profile to maintain.