Pre-sign checks for your wallet
Your users sign transactions they can't read: an approval hidden in a swap, a token account handed to someone else, a signature that lets a contract move everything. presign-guard reads the transaction before your user signs it and answers in one call: green, orange or red, with reason codes your app can act on and an explanation your user can read.
What it checks
- Solana: every instruction decoded and the transaction simulated. A token account handed to someone else or the wallet assigned to a program is red; an unlimited delegate, a durable nonce or a change the instructions don't show is orange. Payments by Metaplex agents (Core
Execute) are unwrapped too. - EVM (Ethereum, Base and other chains): transactions, token approvals and EIP-712 signatures (Permit, Permit2, EIP-3009, Seaport orders, sign-in requests). Who gets access, unlimited allowances, plain-wallet or flagged spenders, unverified contracts, EIP-7702 delegations, look-alike tokens.
- XRP Ledger and Algorand: a new regular key or signer list, a disabled master key, a rekey, closing the account and fake stablecoins are red.
- Every chain: each party the transaction pays or hands control to is screened against the OFAC SDN list, synced from the US Treasury. Pass the site that asks for the signature and its phishing status and domain age are checked too.
- Also: a token verdict (is this token safe to buy or accept), an approvals audit of a wallet, and a wallet screen for any address.
One call before the confirm screen
curl -X POST https://presign-guard.fizzl.eu/v1/check/explain \
-H 'x-credit-key: pgc_…' -H 'content-type: application/json' \
-d '{ "type": "solana", "transaction": "AQAAAAAA…", "origin": "https://claim-airdrop.example", "lang": "en" }'
{
"verdict": "red",
"reasons": [{
"code": "SOLANA_TOKEN_ACCOUNT_TAKEOVER", "severity": "red", "subject": "9WzD…AWWM",
"details": { "tokenAccount": "2ocS…65aH", "authority": "AccountOwner",
"note": "hands this token account (and everything in it) to someone else" }
}],
"simulation": { "ok": true, "changes": [ … ] },
"explanation": { "lang": "en", "text": "Don't sign this: it gives your USDC account to another wallet …" }
}
Block on red, warn on orange, show the explanation (English or Dutch) next to the confirm button, and use the simulated changes for a balance preview. /v1/check gives the verdict without the explanation.
Pricing
| Call | Per call | With a credit pack |
|---|---|---|
Check (/v1/check), token verdict, wallet screen | $0.01 | 1 credit |
Check with explanation (/v1/check/explain) | $0.03 | 3 credits |
| Approvals audit of a wallet | $0.02 | 2 credits |
A pack of 1,000 credits costs $7.00 (100 for $0.80), valid for a year: your backend sends one x-credit-key header, no payment per call. A failed call gives its credits back. Paying per call over x402 also works (USDC on Base, Solana, the XRP Ledger, Algorand or Stellar). For higher volumes, a monthly plan or a test allowance, email frits@fizzl.eu.
Trust
- No keys: presign-guard only reads the transaction. It never holds a key and never signs anything.
- Signed answers: each verdict is signed, so your backend can prove what was checked and when.
- Open source: the code is on GitHub (AGPL-3.0), with every reason code. You can run it yourself.
- Sources: GoPlus, RugCheck and DexScreener for tokens and contracts, the OFAC SDN list from the US Treasury, and simulation on the chain's own RPC.
More
- presign-guard: the API, the OpenAPI document and a free quick check
- Solana: what gets caught on Solana, including Metaplex agents
- OFAC sanctions screening: the open list and the wallet screen