Verify a decision
Every moderation decision on AVOID.NET is anchored to the Solana blockchain. You don't have to trust us — you can verify cryptographically that we committed to a verdict at a specific moment and have not rewritten it.
How verification works
- We commit. When a moderator accepts/rejects a submission, we serialize the decision into deterministic UTF-8 bytes (
payload_canonical_string), hash it with SHA-256, encode the digest as base58, and write it to Solana inside an SPL Memo v2 transaction. - We store the bytes. The exact bytes we hashed are stored alongside the decision in our database. Anyone can read them and recompute the hash in any language.
- You compare three values. Database hash, your independently-recomputed hash, and the hash inside the on-chain memo. If all three match, the decision is authentic and timestamped.
The on-chain memo format is
AVOID.NET|v1|h:<b58-sha256>|d:<id>|t:<iso>Find a signature on any investigation page's decision log, or run python -m src.verify_decision --signature <sig> for a CLI check.
Decision
review_revise · Origin Protocol
- Sequence
- #3
- Score
- 38 → 28 (-10)
- Cluster
- mainnet-beta
- Slot
- 443511623
- Off-chain at
- 2026-08-25T03:47:20.183Z
- Anchored at
- —
- Block time
- —
Independent verification
- 1. Database (off-chain)
- 9rvuozK8aucn2VfcCxTo2isnKGARvYA5fFUAt6LCC75N
- 2. Recomputed (your browser)
- computing…
- 3. On-chain (Solana memo)
- fetching…
Canonical bytes hashed (1816 chars)
{"actor":"judge","decided_at":"2026-08-25T03:47:19.825Z","decision":"review_revise","investigation_id":"1056b75f-82b1-488c-ad72-1d1b7e5ad675","new_score":28,"page_slug":"origin-protocol","prev_score":38,"reason":"Every claim the reviewer was able to check — 19 statements drawn from the page's summary and timeline — held up well: 15 were fully confirmed and the remaining 4 were only partially supported due to minor date discrepancies (e.g. claim_findings[8] and claim_findings[16], where OUSD and OETH launch dates were off by two to three weeks from primary reporting) or reliance on the company's own self-published statistics for recent metrics (claim_findings[17]). No claim was found to be disputed, stale, or citing a dead link, giving a disputed_pct of 0.0%. However, this page's seven content sections currently have no text at all — only source lists and severity labels are populated, with headings and body content stored as empty strings. The reviewer flagged this as a high-priority coverage gap (coverage_gaps[5]) because it meant the review could only check the summary and timeline, not the substantive prose a reader would actually see under each section's severity rating. A page carrying a trust score of 38, with sections like a 'critical'-severity exploit writeup, showing no explanatory text to back that rating is a completeness problem independent of whether the underlying facts are accurate. Given that gap and the reviewer's moderate (0.72) confidence, a full approval is not appropriate; a modest downward adjustment and revision request better reflects that the checked material was solid but the page as published is materially incomplete.","score_delta":-10,"sequence_num":3,"submission_content_hash":null,"submission_id":null,"submission_kind":null,"submission_valence":null,"v":1}