{"alg":"ed25519","public_key_spki_hex":"302a300506032b6570032100aefc66628eb0a6a83bd30fda0ba212a9da43174c665b2eed63f8ce4cca8a5b78","created_at":"2026-07-14T21:36:20.662Z","message_format":"scan_id|direction|verdict|risk_score|scanned_at|payment_commitment|expires_at","payment_commitment":"sha256(network|pay_to(lowercased)|asset(lowercased)|amount|nonce)","evidence_format":"evidence-v1|scan_id|payment_commitment|pin_domain|pin_age_seconds|pin_corroboration — a second signed record on scan attestations (same key). pin_age_seconds is how long the domain↔pay_to pin had held at scan time (0 = first sighting); pin_corroboration NAMES the out-of-band sources that corroborated the pin ('none', or a comma-joined list — today: cdp_bazaar), never a boolean or a score. Empty pin fields = no pin applies to this payee. Verify: signature over the evidence message with this key, then confirm its scan_id and payment_commitment equal the verdict message's; it shares the attestation's expiry. Whether a young or uncorroborated pin is acceptable is YOUR decision boundary — weigh it against the payment size.","usage":"Before signing a payment, a wallet policy should: (1) verify the Ed25519 signature over `message` with this key, (2) recompute payment_commitment from the payment and confirm it equals the attested value, (3) confirm verdict=allow and now < expires_at. Human-approved overrides carry the distinct verdict tag 'override:allow' (never plain 'allow') with a <=300s expiry — accept them only if your policy opts in."}