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
publish · Sturdy V1
- Sequence
- #1
- Score
- →
- Cluster
- mainnet-beta
- Slot
- 422980007
- Off-chain at
- 2026-05-29T17:03:34.168Z
- Anchored at
- —
- Block time
- —
Independent verification
- 1. Database (off-chain)
- Fs5zX9XgYpnssc61ZtjEwpi1Dep3d8Mu2ARZJ7ijQMrS
- 2. Recomputed (your browser)
- computing…
- 3. On-chain (Solana memo)
- fetching…
Canonical bytes hashed (6381 chars)
{"actor":"system:backfill","investigation_id":"299815f1-eacc-4b93-ab24-10d1c6de9f95","kind":"publish","page_slug":"sturdy-v1","published_at":"2026-05-29T17:03:34.065Z","sequence_num":1,"snapshot":{"content_type":"investigation","entity_name":"Sturdy V1","sections":[{"content":"","heading":"","severity":"medium","sources":[{"credibility":3,"name":"https://sturdyfinance.medium.com/introducing-sturdy-f8b9c21a9b96","type":"other","url":""},{"credibility":3,"name":"https://medium.com/sentora/a-deep-dive-into-sturdy-finance-eaa7598e36ae","type":"other","url":""},{"credibility":3,"name":"https://www.ycombinator.com/companies/sturdy-finance","type":"other","url":""},{"credibility":3,"name":"https://defillama.com/protocol/sturdy","type":"other","url":""},{"credibility":3,"name":"https://sturdyfinance.medium.com/sturdy-ethereum-launch-f545140b7c4e","type":"other","url":""}]},{"content":"","heading":"","severity":"medium","sources":[{"credibility":3,"name":"https://cointelegraph.com/news/attacker-drains-800k-from-defi-protocol-sturdy-finance","type":"other","url":""},{"credibility":3,"name":"https://decrypt.co/144188/defi-lending-protocol-sturdy-finance-hit-by-exploit-over-750k-drained","type":"other","url":""},{"credibility":3,"name":"https://immunebytes.com/blog/sturdy-finance-hack-june-12-2023-detailed-analysis/","type":"other","url":""},{"credibility":3,"name":"https://www.certik.com/resources/blog/oracle-dependency-decrypting-the-sturdy-finance-attack","type":"other","url":""},{"credibility":3,"name":"https://rekt.news/sturdy-rekt","type":"other","url":""},{"credibility":3,"name":"https://eigenphi.substack.com/p/sturdy-finance-exploit-forensic-analysis","type":"other","url":""},{"credibility":3,"name":"https://beincrypto.com/defi-sturdy-finance-exploited/","type":"other","url":""}]},{"content":"","heading":"","severity":"medium","sources":[{"credibility":3,"name":"https://www.certik.com/resources/blog/oracle-dependency-decrypting-the-sturdy-finance-attack","type":"other","url":""},{"credibility":3,"name":"https://immunebytes.com/blog/sturdy-finance-hack-june-12-2023-detailed-analysis/","type":"other","url":""},{"credibility":3,"name":"https://eigenphi.substack.com/p/sturdy-finance-exploit-forensic-analysis","type":"other","url":""},{"credibility":3,"name":"https://olympix.security/blog/sturdy-finance-hit-by-reentrancy-exploit","type":"other","url":""},{"credibility":3,"name":"https://rekt.news/sturdy-rekt","type":"other","url":""}]},{"content":"","heading":"","severity":"medium","sources":[{"credibility":3,"name":"https://cointelegraph.com/news/defi-protocol-sturdy-finance-offers-100k-bounty-to-hacker-if-funds-are-returned","type":"other","url":""},{"credibility":3,"name":"https://www.theblock.co/post/234376/sturdy-finance-bounty","type":"other","url":""},{"credibility":3,"name":"https://beincrypto.com/defi-sturdy-finance-exploited/","type":"other","url":""},{"credibility":3,"name":"https://news.bitcoin.com/sturdy-finance-falls-victim-to-exploit-losing-442-eth-in-latest-defi-hack/","type":"other","url":""},{"credibility":3,"name":"https://decrypt.co/144188/defi-lending-protocol-sturdy-finance-hit-by-exploit-over-750k-drained","type":"other","url":""}]},{"content":"","heading":"","severity":"medium","sources":[{"credibility":3,"name":"https://cointelegraph.com/news/sturdy-finance-defi-stablecoin-market-launches-after-exploit","type":"other","url":""},{"credibility":3,"name":"https://crypto.news/defi-protocol-sturdy-finance-reopens-stablecoin-market-despite-falling-tvl/","type":"other","url":""},{"credibility":3,"name":"https://sturdyfinance.medium.com/introducing-sturdy-v2-4a0135aca675","type":"other","url":""},{"credibility":3,"name":"https://sturdyfinance.medium.com/sturdy-v2-1-month-recap-caf43e1a8ddc","type":"other","url":""},{"credibility":3,"name":"https://defillama.com/protocol/sturdy","type":"other","url":""}]},{"content":"","heading":"","severity":"medium","sources":[{"credibility":3,"name":"https://cointelegraph.com/news/attacker-drains-800k-from-defi-protocol-sturdy-finance","type":"other","url":""},{"credibility":3,"name":"https://decrypt.co/144188/defi-lending-protocol-sturdy-finance-hit-by-exploit-over-750k-drained","type":"other","url":""},{"credibility":3,"name":"https://eigenphi.substack.com/p/sturdy-finance-exploit-forensic-analysis","type":"other","url":""},{"credibility":3,"name":"https://rekt.news/sturdy-rekt","type":"other","url":""}]}],"sources_used":[],"summary":"Sturdy V1 was a DeFi lending protocol on Ethereum and Fantom that offered interest-free borrowing by routing collateral into yield-bearing positions via third-party protocols such as Lido, Curve, and Yearn Finance. On June 12, 2023, the protocol suffered a read-only reentrancy exploit that drained approximately 442 ETH (roughly $800,000) from its lending pools by manipulating the Balancer B-stETH-STABLE price oracle. Stolen funds were laundered through Tornado Cash within 20 minutes and were never recovered, despite a $100,000 bounty offer to the attacker. ZachXBT flagged the protocol in connection with the exploit. Sturdy subsequently launched a redesigned V2 architecture.","timeline":[{"date":"2022-03-01","event":"Sturdy Finance launches on Fantom mainnet","source":""},{"date":"2022-01-25","event":"CertiK audit of Sturdy Finance completed; Balancer dependency explicitly excluded from scope","source":""},{"date":"2022-06-03","event":"Sturdy Finance launches on Ethereum mainnet","source":""},{"date":"2023-02-01","event":"Balancer issues vulnerability notice warning dependent protocols about read-only reentrancy risk; Sturdy Finance allegedly does not implement recommended protections","source":""},{"date":"2023-06-12","event":"Read-only reentrancy exploit drains 442.6 ETH (~$800K) from Sturdy V1; attacker uses $191M Aave flash loan; stolen funds moved to Tornado Cash within 20 minutes; PeckShield and BlockSec report the attack","source":""},{"date":"2023-06-13","event":"Founder Sam Forman publicly addresses exploit; Sturdy sends on-chain message to attacker offering $100,000 bounty and no-prosecution pledge","source":""},{"date":"2023-06-16","event":"Sturdy Finance reopens stablecoin market; TVL has declined from ~$12.8M to ~$10.78M","source":""},{"date":"2023-07-01","event":"Sturdy V2 architecture announced with isolated lending pairs and two-tier modular design","source":""}]},"v":1}