Skip to main content
AVOID.NET
← avoid.net

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

  1. 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.
  2. 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.
  3. 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.

Sequence
#3
Score
0 → 0 (-10)
Cluster
mainnet-beta
Slot
461974381
Off-chain at
2026-10-27T06:47:01.471Z
Anchored at
2026-10-27T06:47:37.000Z
Block time
2026-10-27T06:47:37.000Z

Independent verification

1. Database (off-chain)
4Bw2v7ivNwgGMJhNrhgaZYRMsSJNX7RKwEJKjbsRHoaB
2. Recomputed (your browser)
computing…
3. On-chain (Solana memo)
fetching…
Canonical bytes hashed (2085 chars)
{"actor":"judge","artifact_identity":"a7be6b894ff344d06e7796b5956a7c4c","band_override":null,"blocked_count":1,"decided_at":"2026-10-27T06:47:01.089Z","decision":"review_revise","delist_requested":false,"disputed_pct":0.0909,"investigation_id":"e017af8a-4584-4968-886a-17da7a811d8c","judge_def_hash":"8800307026131ea9d5da939d32b9a1f1884b2b84a5de33c8e87931d36f38d0f8","new_score":0,"page_slug":"lazarus-group-tradertraitor-dprk-september-2026-blitz-campaign","prev_score":0,"reason":"Most checked claims match the sources: the Bitget detection time, the CEO's preliminary North Korea attribution, the Liquid Network figures and the Elliptic assessment (claim_findings[2], [3], [7], [8], [9]). About 9% of countable findings were unverifiable, and one blocked source (claim_findings[10]) was left out of the count. The page still states Bitget's loss as $351.6M although Bitget later raised it to $387.5M (claim_findings[0], [1]; omission_findings[0]), which is a material omission on the page's central figure. A cited CryptoNews AFX link is dead and used in several places (claim_findings[6]), and 'formally attributed' overstates AFX's 'consistent with external attribution' wording (claim_findings[5]). The reviewer's confidence was moderate and several sections were not independently checked, so the penalty is kept small.","reviewer_def_hash":"bc11388ce4bc4deea1b064fea362663ae06e3f4f687f99604769044d6ffba770","score_delta":-10,"scored_claims":11,"sequence_num":3,"severity_override":{"applied":true,"band":"minor","from_band":"approve","reason":"The percentage alone (1 of 11 countable findings, about 9%) implies approve. But omission_findings[0] is rated material: Bitget later revised the loss from $351.6M to $387.5M, and the page uses the old figure in the headline, summary, section heading and timeline (claim_findings[0] and [1] are stale). The dead AFX citation and the high-priority primary-source coverage gap point the same way. Escalated one band to minor."},"submission_content_hash":null,"submission_id":null,"submission_kind":null,"submission_valence":null,"v":1}