NO CUSTODY
Geen seed- of private-key custody.
De documentatie draait om transaction security: SafeSign-invoer, Security Core-analyse, autorisatie en werkelijke integratiestatus.

Deze grenzen zijn belangrijker dan het framework.
Geen seed- of private-key custody.
Payload van wallet/dApp niet muteren.
Geen auto-sign of auto-broadcast; expliciete autorisatie.
Ontbrekende evidence = onzekerheid, nooit silent allow.
Behoud de originele request en voeg leesbare evidence toe.
Ontvang request en context.
Normaliseer method, params, typed data, approvals of PSBT.
Voeg policy, destination en simulation toe.
Toon risico/onzekerheid; gebruiker autoriseert finaal.
Chrome/Brave-scaffold bestaat, wrapt ethereum.request en wacht op doorgaan/weigeren. Productie-buildpipeline blijft nodig.
// browser/page context — conceptual integration boundary
const original = ethereum.request.bind(ethereum)
ethereum.request = async (request) => {
const decision = await reviewWithSafeSign(request)
if (decision !== "continue") throw new Error("User rejected")
return original(request) // forward unchanged
}Alleen niet-gevoelige lokale voorkeuren; nooit keys, seeds, raw signatures of volledige historie.
Elke surface benoemt de echte grens.
Guard — Manifest V3-basis bestaat; productie build/distributie apart.
Wallet — UI bestaat; echte flows moeten SafeSign gebruiken.
Relay — route/fee/PSBT-analyse bestaat; signing/execution toekomstig.
Bewaar de request, leid structured evidence af, registreer unknowns en geef een uitlegbaar besluit terug zonder signing authority over te nemen.
Leg origin, chain, method, payload hash en intent vast vóór analyse.
Bewaar facts, provenance, freshness, contradictions en unknowns apart.
Return ALLOW, WARN, REVIEW of BLOCK met reason codes en reviewed payload hash.
Bewaar de request, leid structured evidence af, registreer unknowns en geef een uitlegbaar besluit terug zonder signing authority over te nemen.
{
"origin":"https://app.example",
"chainId":1,
"method":"eth_signTypedData_v4",
"payloadHash":"sha256:...",
"intent":"swap 1 ETH"
}{
"decision":"REVIEW",
"reasonCodes":["AUTHORITY_EXCEEDS_INTENT"],
"unknowns":["spender_reputation"],
"payloadHash":"sha256:..."
}Als payload na review verandert, is het besluit ongeldig en is nieuwe review nodig.