Abfangen
Erfasst die Anfrage vor Bestätigung, ohne Schlüssel zu verwahren.
SafeSign ist die Prüfschicht zwischen Wallet-Anfrage und irreversibler Autorisierung. Es dekodiert, ergänzt Ausführungskontext, zeigt Unsicherheit und lässt die endgültige Entscheidung beim Nutzer.
PermitSingle · spender 0x42…b8 · amount MAX
Das ist die Anfrage, die ein Drainer dich signieren lassen muss. Schick sie durch die Analyseschicht und sieh zu, wie sich das Urteil mit jedem Beleg ändert.
eth_sendTransaction
from 0x9f1c…a034 (your account)
to 0xA0b8…eB48 (USDC token contract)
value 0
data 0x095ea7b3
000000000000000000000000c0ffee…b7d1 // spender
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffAktuelles UrteilUnbekannt wird nie sicher. Fehlende Belege bleiben fehlend.
Illustrativer Durchlauf des veröffentlichten Analysevertrags. Die gezeigte Entscheidung ist die, die die Policy für diese Belege zurückgäbe.
Jede unwiderrufliche Freigabe nimmt denselben Weg. UTXO Suite macht jeden Schritt lesbar — und hält an dem einen Schritt an, der ihm nie gehören darf: der Signatur.
Eine Wallet, eine dApp oder ein Agent verlangt eine Signatur. Noch gilt nichts als vertrauenswürdig.
UTXO SuiteDie Anfrage wird in eine kanonische Form decodiert: Methode, Chain, Herkunft, Parameter.
UTXO SuiteWas die Anfrage tatsächlich tut, im Klartext: eine Überweisung, eine Freigabe, eine Delegation, ein Permit.
UTXO SuiteGegenpartei, Herkunft und erwartetes Ergebnis. Simulation ist Beleg, niemals Orakel.
UTXO SuiteGewichtete Signale: unbegrenzte Vollmacht, unbekannter Code, frisch erzeugte Verträge, unstimmige Ziele.
UTXO SuiteDeine Regeln, deterministisch auf diese Belege angewandt: eine Policy, kein Bauchgefühl.
UTXO SuiteALLOW, WARN, REVIEW oder BLOCK. Ein BLOCK wird von keiner anderen Schicht abgeschwächt.
UTXO SuiteDu gibst ausdrücklich frei. Auch ein ALLOW ist keine Signatur.
DuDie Bytes, die gleich signiert werden, werden mit genau den Bytes verglichen, die du geprüft hast.
UTXO SuiteDer isolierte Signer liegt in der Wallet. UTXO Suite hält nie einen Schlüssel oder eine Seed.
Vigi WalletOptional. Eine signierte Transaktion ist nicht automatisch eine gesendete Transaktion.
Vigi WalletWas on-chain wirklich passiert ist, wird gegen das gehalten, was dir zugesagt wurde.
UTXO SuiteKeine Entscheidung ist eine Signatur. Die Freigabe bleibt immer deine.
Unbekannt wird nie sicher. Fehlende Belege bleiben fehlend.
SafeSign ist kein magischer Risikoscore. Entscheidend ist eine nachvollziehbare Erklärung dessen, was angefragt wird, welche Rechte entstehen und welche Unsicherheit bleibt.
Erfasst die Anfrage vor Bestätigung, ohne Schlüssel zu verwahren.
Interpretiert Transaktionen, Typed Data, Approvals, Permit/Permit2 und unterstützte PSBTs.
Vergleicht Origin, Chain, Ziel, Spender, Codepfad, Simulation und verfügbare Policies.
Zeigt Folgen und Unsicherheit, damit ausdrücklich erlaubt, geprüft oder abgelehnt wird.
Welche Evidenz verfügbar ist, hängt von Chain, Anfrage und Kontext ab. Nicht Verifiziertes muss sichtbar unbekannt bleiben.
Zeigt Spender, Token, Betrag, Deadline und persistente Spending Authority.
Prüft Chain, Empfänger, Native Value und Übereinstimmung mit dem Payload.
Dekodiert Methoden, löst Proxy/delegatecall soweit möglich auf und behandelt Simulation als Evidenz, nicht Garantie.
Prüft Inputs, Outputs, Change und Fees unterstützter PSBTs gegen die Signing-Absicht.
Sicherheit wird gefährlich, wenn Gewissheit übertrieben wird. SafeSign muss klar zwischen Wissen und nicht beweisbaren Annahmen unterscheiden.
Browser-Text und Wallet-UI liefern Kontext, aber keinen Beweis. SafeSign soll Autorität aus dem Payload rekonstruieren und mit Intent vergleichen.
Vor dem Scoring klassifizieren. Transfers, Approvals, EIP-712, Permit2, Multicalls und PSBT haben unterschiedliche Risiken.
Chain, Ziel, nativen Wert, Fees und Intermediär-Contracts prüfen.
Allowance als dauerhafte zukünftige Ausgabenhoheit behandeln; Spender, Scope und Widerruf prüfen.
Domain Separator, Verifying Contract, Chain, Spender, Amount, Nonce und Deadline prüfen.
Token Permission, Spender Permission und Signature Deadline gemeinsam modellieren.
Materielle Subcalls, Wertbewegungen und Authority-Änderungen dekodieren; Top-Level-Target ist nicht die ganze Ausführung.
Inputs, Outputs, Change, Fee, Sighash und Derivation-Metadaten mit Zahlungsabsicht vergleichen.
Unbekannte Evidenz muss sichtbar unbekannt bleiben. Fehlende Analyse darf nie stillschweigend zu ALLOW werden.
Exakten Request und Origin vor Bestätigung erfassen.
Request-Familie vor generischer Risikologik bestimmen.
Methoden, Parameter, Autorität und Ziele normalisieren.
Contract-, Policy-, Freshness- und Simulationskontext ergänzen, wenn verfügbar.
Rekonstruierte Autorität mit der angegebenen Nutzerabsicht vergleichen.
ALLOW, WARN, REVIEW oder BLOCK mit expliziten Gründen und Unknowns zurückgeben.
Kontrolle an Wallet oder Signer zurückgeben. Analyse signiert oder broadcastet niemals still.
Browser-Text und Wallet-UI liefern Kontext, aber keinen Beweis. SafeSign soll Autorität aus dem Payload rekonstruieren und mit Intent vergleichen.
{
"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"
}Unbekannte Evidenz muss sichtbar unbekannt bleiben. Fehlende Analyse darf nie stillschweigend zu ALLOW werden.
Unbekannte Evidenz muss sichtbar unbekannt bleiben. Fehlende Analyse darf nie stillschweigend zu ALLOW werden.
Nicht raten. Request erhalten, nicht unterstützte Fläche offenlegen und Review verlangen.
unsupported → REVIEWMit statischer und kontextueller Evidenz fortfahren, fehlende Simulation explizit markieren.
simulation: unavailable → confidence: partialMismatch zwischen Intent und dekodierter Autorität als zentrale Evidenz behandeln.
intent != authority → REVIEW/BLOCK policyZeitabhängige Intelligence braucht Freshness-Metadaten, damit alte Beobachtungen nicht als aktuelle Fakten erscheinen.
observedAt + ttl → freshnessUnbekannte Evidenz muss sichtbar unbekannt bleiben. Fehlende Analyse darf nie stillschweigend zu ALLOW werden.