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 · ResupplyFi
- Sequence
- #2
- Score
- 32 → 32 (0)
- Cluster
- mainnet-beta
- Slot
- 443521154
- Off-chain at
- 2026-08-26T14:08:45.321Z
- Anchored at
- —
- Block time
- —
Independent verification
- 1. Database (off-chain)
- H7tjbi7UkjbdZenhgjQ7NeT1VHVgV3PJGQPrcLwv1haz
- 2. Recomputed (your browser)
- computing…
- 3. On-chain (Solana memo)
- fetching…
Canonical bytes hashed (1172 chars)
{"actor":"reviewer","decided_at":"2026-08-26T14:08:44.977Z","decision":"review","investigation_id":"4bb58024-57a7-40e3-a513-fb70b841b377","new_score":32,"page_slug":"resupplyfi","prev_score":32,"reason":"The page's core narrative -- exploit mechanism, loss figures, audit-scope controversy, and recovery/bad-debt repayment -- is well-supported by its cited sources and reconciles internally (the $2.87M immediate repayment + $6M insurance burn + $1.13M Yearn-backed remainder sums to the stated $10M bad debt). The most notable defects are a timeline entry that misdates a Tornado Cash laundering event by roughly three months, a fabricated-precision audit date, an unresolved conflict between two sources over the attacker's initial capital ($4,000 flash loan vs. a $200,000 deposit), one dead citation (outposts.io, 404), and citation-list mismatches in both directions across the 17 listed sources. The page omits the protocol's current (2026) status and a subsequent Singapore court case connected to post-exploit accusations.","score_delta":0,"sequence_num":2,"submission_content_hash":null,"submission_id":null,"submission_kind":null,"submission_valence":null,"v":1}