Intercept
Capture the wallet request before confirmation without taking custody of keys.
SafeSign is the review layer between a wallet request and an irreversible authorization. It decodes what can be decoded, adds execution context, surfaces uncertainty and leaves the final decision with the user.
PermitSingle · spender 0x42…b8 · amount MAX
This is the request a drainer needs you to sign. Walk it through the review layer and watch the verdict change as the evidence arrives.
eth_sendTransaction
from 0x9f1c…a034 (your account)
to 0xA0b8…eB48 (USDC token contract)
value 0
data 0x095ea7b3
000000000000000000000000c0ffee…b7d1 // spender
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffCurrent verdictUnknown never becomes safe. Missing evidence stays missing.
Illustrative walkthrough of the published review contract. The decision shown is what the policy would return for this evidence.
Every irreversible authorization travels the same path. UTXO Suite makes each step of that path readable — and stops at the one step it must never own: the signature itself.
A wallet, a dApp or an agent asks for a signature. Nothing is trusted yet.
UTXO SuiteThe request is decoded into one canonical shape: method, chain, origin, parameters.
UTXO SuiteWhat the request actually does, in plain terms: a transfer, an approval, a delegation, a permit.
UTXO SuiteCounterparty, origin and expected outcome. Simulation is evidence, never an oracle.
UTXO SuiteWeighted signals: unlimited authority, unknown code, fresh contracts, mismatched destinations.
UTXO SuiteYour rules, applied deterministically to that evidence — a policy, not a feeling.
UTXO SuiteALLOW, WARN, REVIEW or BLOCK. A BLOCK is never softened by another layer.
UTXO SuiteYou authorize explicitly. Even an ALLOW is not a signature.
YouThe bytes about to be signed are compared to the exact bytes you reviewed.
UTXO SuiteThe isolated signer runs inside the wallet. UTXO Suite never holds a key or a seed.
Vigi WalletOptional. A signed transaction is not automatically a broadcast one.
Vigi WalletWhat actually happened on-chain is checked against what you were promised.
UTXO SuiteNo decision is a signature. Authorization is always yours.
Unknown never becomes safe. Missing evidence stays missing.
SafeSign is not a magic risk score. The useful output is a traceable explanation of what was requested, which authority may be granted and which assumptions remain unresolved.
Capture the wallet request before confirmation without taking custody of keys.
Interpret transaction data, typed messages, approvals, Permit/Permit2 and supported PSBT structures.
Compare origin, chain, destination, spender, code path, simulation evidence and policy signals where available.
Present the material consequences and uncertainty so the user can allow, review or reject explicitly.
The exact evidence depends on chain, request type and available local or remote context. Unsupported evidence must remain visibly unknown rather than silently assumed safe.
Expose spender, token, amount, deadline and persistent spending authority instead of treating an approval as a harmless click.
Verify chain, recipient, native value and the relationship between the visible destination and the payload.
Decode methods, surface proxy/delegatecall context where resolvable, and treat simulation as evidence rather than a guarantee.
Inspect supported PSBT inputs, outputs, change and fee structure so signing intent can be compared with the transaction being authorized.
Transaction security becomes dangerous when confidence is overstated. SafeSign must be explicit about both what it can explain and what it cannot prove.
Browser copy and wallet UI are context, not proof. SafeSign should reconstruct authority from the payload and compare it with stated intent before a signer is asked to authorize anything.
Classify before scoring. Transfers, approvals, EIP-712, Permit2, multicalls and PSBTs expose different invariants and failure modes.
Verify chain, destination, native value, fee assumptions and intermediary contracts.
Treat allowance as durable future spending authority; inspect spender, scope and revocability.
Inspect domain separator, verifying contract, chain, spender, amount, nonce and deadline.
Model token permission, spender permission and signature deadline together; off-chain does not mean low impact.
Decode material subcalls, value movement and authority changes; the top-level target is not the full execution story.
Compare inputs, outputs, change, fee, sighash behavior and derivation metadata with intended payment.
Unknown evidence must remain visibly unknown. Missing analysis must never silently become ALLOW.
Receive the exact request and origin before confirmation.
Identify the request family before applying generic risk logic.
Normalize methods, parameters, authority and destinations.
Attach contract, policy, freshness and simulation context where available.
Compare reconstructed authority with the user's stated intent.
Return ALLOW, WARN, REVIEW or BLOCK with explicit reasons and unknowns.
Return control to the wallet or signer. Analysis never silently signs or broadcasts.
Browser copy and wallet UI are context, not proof. SafeSign should reconstruct authority from the payload and compare it with stated intent before a signer is asked to authorize anything.
{
"requestType": "eip712",
"origin": "https://app.example",
"chainId": 1,
"method": "eth_signTypedData_v4",
"intent": { "action": "swap", "asset": "USDC" },
"payload": "<original wallet payload>"
}{
"decision": "REVIEW",
"confidence": "partial",
"authority": [{ "type": "token_spend", "scope": "unlimited" }],
"evidence": [{ "signal": "new_spender", "severity": "high" }],
"unknowns": ["future_execution_state"],
"payloadIntegrity": "unchanged"
}Unknown evidence must remain visibly unknown. Missing analysis must never silently become ALLOW.
Unknown evidence must remain visibly unknown. Missing analysis must never silently become ALLOW.
Do not guess. Preserve the request, expose the unsupported surface and require explicit review.
unsupported → REVIEWContinue with static and contextual evidence, but make the missing simulation explicit.
simulation: unavailable → confidence: partialTreat a mismatch between stated intent and decoded authority as first-class evidence.
intent != authority → REVIEW/BLOCK policyTime-sensitive intelligence needs freshness metadata so old observations cannot masquerade as current facts.
observedAt + ttl → freshnessUnknown evidence must remain visibly unknown. Missing analysis must never silently become ALLOW.