Intercepter
Capture la requête avant confirmation sans garde de clés.
SafeSign est la couche de revue entre une requête wallet et une autorisation irréversible. Il décode, ajoute le contexte d'exécution, expose l'incertitude et laisse la décision finale à l'utilisateur.
PermitSingle · spender 0x42…b8 · amount MAX
Voici la requête qu'un drainer a besoin de vous faire signer. Faites-la traverser la couche d'analyse et regardez le verdict évoluer à mesure que les preuves arrivent.
eth_sendTransaction
from 0x9f1c…a034 (your account)
to 0xA0b8…eB48 (USDC token contract)
value 0
data 0x095ea7b3
000000000000000000000000c0ffee…b7d1 // spender
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVerdict actuelL'inconnu ne devient jamais sûr. Une preuve manquante reste manquante.
Parcours illustratif du contrat d'analyse publié. La décision affichée est celle que la politique renverrait pour ces preuves.
Toute autorisation irréversible emprunte le même chemin. UTXO Suite rend chaque étape lisible — et s'arrête à la seule qu'il ne doit jamais posséder : la signature.
Un wallet, une dApp ou un agent demande une signature. Rien n'est encore tenu pour acquis.
UTXO SuiteLa requête est décodée en une forme canonique : méthode, chaîne, origine, paramètres.
UTXO SuiteCe que la requête fait réellement, en clair : un transfert, une approbation, une délégation, un permit.
UTXO SuiteContrepartie, provenance et résultat attendu. La simulation est une preuve, jamais un oracle.
UTXO SuiteSignaux pondérés : autorité illimitée, code inconnu, contrats fraîchement déployés, destinataires incohérents.
UTXO SuiteVos règles appliquées de façon déterministe à ces preuves : une politique, pas une intuition.
UTXO SuiteALLOW, WARN, REVIEW ou BLOCK. Un BLOCK n'est jamais adouci par une autre couche.
UTXO SuiteVous autorisez explicitement. Même un ALLOW n'est pas une signature.
VousLes octets sur le point d'être signés sont comparés aux octets exacts que vous avez examinés.
UTXO SuiteLe signataire isolé vit dans le wallet. UTXO Suite ne détient jamais de clé ni de phrase de récupération.
Vigi WalletFacultatif. Une transaction signée n'est pas automatiquement une transaction diffusée.
Vigi WalletCe qui s'est réellement produit sur la chaîne est confronté à ce qui vous avait été annoncé.
UTXO SuiteAucune décision n'est une signature. L'autorisation vous appartient toujours.
L'inconnu ne devient jamais sûr. Une preuve manquante reste manquante.
SafeSign n'est pas un score magique. Le résultat utile est une explication traçable de la requête, de l'autorité potentiellement accordée et des inconnues restantes.
Capture la requête avant confirmation sans garde de clés.
Interprète transactions, typed data, approvals, Permit/Permit2 et PSBT pris en charge.
Compare origin, chaîne, destination, spender, chemin de code, simulation et politiques disponibles.
Présente conséquences et incertitudes pour permettre, revoir ou refuser explicitement.
L'évidence dépend de la chaîne, de la requête et du contexte disponible. Une information non vérifiée doit rester inconnue.
Expose spender, token, montant, deadline et autorité persistante.
Vérifie chaîne, destinataire, valeur native et cohérence avec le payload.
Décode les méthodes, résout proxy/delegatecall si possible et traite la simulation comme preuve, jamais comme garantie.
Inspecte inputs, outputs, change et fees des PSBT prises en charge pour comparer intention et transaction.
La sécurité devient dangereuse lorsqu'elle surestime sa certitude. SafeSign distingue ce qu'il explique de ce qu'il ne peut prouver.
Le navigateur et l'UI wallet donnent du contexte, pas une preuve. SafeSign doit reconstruire l'autorité depuis le payload et la comparer à l'intention.
Classer avant le scoring. Transferts, approvals, EIP-712, Permit2, multicalls et PSBT ont des risques différents.
Vérifier chain, destination, valeur native, frais et contrats intermédiaires.
Traiter l'allowance comme une autorité future persistante ; inspecter spender, portée et révocation.
Inspecter domain separator, verifying contract, chain, spender, montant, nonce et deadline.
Modéliser ensemble token permission, spender permission et signature deadline.
Décoder subcalls, mouvements de valeur et changements d'autorité ; le target principal ne décrit pas toute l'exécution.
Comparer inputs, outputs, change, fee, sighash et métadonnées avec le paiement attendu.
Une preuve inconnue doit rester explicitement inconnue. Une analyse absente ne doit jamais devenir ALLOW.
Recevoir la requête exacte et son origin avant confirmation.
Identifier la famille avant toute logique de risque générique.
Normaliser méthodes, paramètres, autorité et destinations.
Ajouter contexte contrat, policy, fraîcheur et simulation lorsqu'ils existent.
Comparer l'autorité reconstruite avec l'intention déclarée.
Retourner ALLOW, WARN, REVIEW ou BLOCK avec raisons et inconnues explicites.
Rendre le contrôle au wallet ou signer. L'analyse ne signe ni ne diffuse silencieusement.
Le navigateur et l'UI wallet donnent du contexte, pas une preuve. SafeSign doit reconstruire l'autorité depuis le payload et la comparer à l'intention.
{
"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"
}Une preuve inconnue doit rester explicitement inconnue. Une analyse absente ne doit jamais devenir ALLOW.
Une preuve inconnue doit rester explicitement inconnue. Une analyse absente ne doit jamais devenir ALLOW.
Ne pas deviner. Préserver la requête, exposer l'élément non supporté et exiger une revue.
unsupported → REVIEWContinuer avec preuves statiques et contextuelles en signalant l'absence de simulation.
simulation: unavailable → confidence: partialTraiter l'écart entre intention et autorité décodée comme une preuve majeure.
intent != authority → REVIEW/BLOCK policyLes données temporelles ont besoin de métadonnées de fraîcheur pour éviter qu'une observation ancienne paraisse actuelle.
observedAt + ttl → freshnessUne preuve inconnue doit rester explicitement inconnue. Une analyse absente ne doit jamais devenir ALLOW.