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 · PaintSwap
- Sequence
- #3
- Score
- 62 → 57 (-5)
- Cluster
- mainnet-beta
- Slot
- 425157784
- Off-chain at
- 2026-06-08T17:40:13.933Z
- Anchored at
- —
- Block time
- —
Independent verification
- 1. Database (off-chain)
- F3B9We7aAC8gCLTUmzCpBhrbmMN5v68S7PWLhcWPET8S
- 2. Recomputed (your browser)
- computing…
- 3. On-chain (Solana memo)
- fetching…
Canonical bytes hashed (1271 chars)
{"actor":"judge","decided_at":"2026-06-08T17:40:13.750Z","decision":"review_revise","investigation_id":"db6e62bd-77b0-4b73-9a74-3a98505925f4","new_score":57,"page_slug":"paintswap","prev_score":62,"reason":"15 of 27 claims were fully confirmed and no core allegations were fabricated or disputed by a primary source. The reviewer's sole 'disputed' finding (claim_findings[13] and timeline[12] — the February 2026 all-time low) is a staleness issue: the figure was accurate at the time of writing but has since been superseded by a new low recorded June 6, 2026. Three additional claims are stale (price, market cap, and ATL figures in sections[1] and sections[7]), reflecting the inherently time-sensitive nature of price data on a low-cap token. Six partially supported findings involve minor framing differences and a one-domain omission (tpstest.click excluded from the incident domain list, claim_findings[20]). A high-priority coverage gap — no post-Sonic migration smart contract audit identified — does not contradict existing claims but represents a meaningful unaddressed risk that the page should flag more explicitly.","score_delta":-5,"sequence_num":3,"submission_content_hash":null,"submission_id":null,"submission_kind":null,"submission_valence":null,"v":1}