SafeSign Decision SDK
Contrat client/serveur cible pour décoder les requêtes prises en charge, exprimer l'intention, joindre des preuves et retourner ALLOW / WARN / REVIEW / BLOCK.
context + payload → evidence + decisionSafeSign est conçu comme une couche d'intégration pour wallets, fintechs et applications onchain : décoder la requête, ajouter du contexte, préserver le payload et exiger une décision explicite.

Le contrat produit est plus étroit que l'ancien récit UTXO. Les intégrations doivent exposer décisions et preuves SafeSign, sans mélanger produits business ou Office.
Contrat client/serveur cible pour décoder les requêtes prises en charge, exprimer l'intention, joindre des preuves et retourner ALLOW / WARN / REVIEW / BLOCK.
context + payload → evidence + decisionPrimitives local-first d'analyse et de politique réutilisables dans SafeSign, Guard et les intégrations wallet, sans garde de clés ni autorité de signature.
deterministic rules → explainable signalsSurface navigateur pouvant envelopper les requêtes prises en charge et présenter SafeSign avant de transmettre la requête originale inchangée.
provider request → explicit continue / rejectLes politiques signées, approbations et contrôles de déploiement doivent se placer au-dessus du noyau et être construits après stabilisation du contrat et de l'audit.
signed policy → organization decision constraintsLes acheteurs enterprise vérifieront les affirmations. Cette surface sépare donc les artefacts actuels des capacités production encore à valider ou auditer.
Le modèle doit passer du self-service au déploiement enterprise contractuel sans créer des produits sans lien pour chaque segment.
Évaluation self-service, contrats de référence, analyse locale et documentation pour favoriser l'adoption avant le procurement.
EVALUATION / ADOPTIONIntégration à l'usage ou sous contrat pour wallets, fintechs et produits onchain lorsque les garanties API sont mesurables.
SDK / API REVENUEPolicy enforcement, déploiement privé, preuves procurement, engagements support et multi-approval forment la couche institutionnelle.
ANNUAL CONTRACT / PRIVATE DEPLOYMENTLe SDK/API devra recevoir le contexte et un payload intact, puis retourner des preuves structurées et une recommandation. L'autorité de signature reste au wallet intégrateur.
// Target interface — illustrative, not a published package
const review = await safeSign.review({
origin,
chainId,
method,
payload, // preserved unchanged
expectedIntent, // optional user/app intent
});
review.decision // ALLOW | WARN | REVIEW | BLOCK
review.evidence // structured, explainable signals
review.payload // same signing payload supplied by integratorLe contrat doit être side-effect free : requête entrante, preuves sortantes, payload préservé et signer toujours autoritaire.
Ajouter la revue à la frontière fiable la plus étroite sans reconstruire transport, custody ou signing.
Intercepter les provider methods avant confirmation et afficher les preuves sans remplacer la requête originale.
Analyser après construction de la requête et avant invocation du signer ; les clés restent hors analyse.
Exécuter preuves et policy avant d'envoyer le package au signer ou custody existant.
Traiter l'intention machine comme entrée non fiable ; exiger policy gates et escalade humaine pour actions irréversibles ou sensibles.
Analyser le payload final, pas seulement les paramètres initiaux, pour que encoding/routing ne contournent pas la revue.
Réutiliser le modèle de preuves pour observabilité et incident triage sans accorder d'autorité de signature.
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 contrat doit être side-effect free : requête entrante, preuves sortantes, payload préservé et signer toujours autoritaire.
{
"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 → freshnessL'intégration doit échouer visiblement, préserver l'intégrité du payload, exposer les états non supportés et ne jamais convertir un échec d'analyse en approbation implicite.