The Tool Error Ledger
How do crypto tax tools’ figures compare against the chain itself? We measure it — with a method anyone can rerun on their own export — and publish what we find, including when the tools agree with the chain.
Vendor export vs chain (0)
No entries yet. An entry here requires a real gain/loss export from a named tool, supplied with permission to publish — which comes from the free verification we run for accountants, one client file at a time. Until one clears the bar, this table stays empty rather than being filled with estimates. You do not have to wait for us: upload your own tool’s gain/loss CSV on the free scan and get the same row-by-row comparison privately, in your browser, right now.
Basis handling and tie-out vs chain (4)
These entries name no vendor. They measure how a way of handling cost basis diverges from the chain, or whether a scan’s own ledger reconciles to it. Each links the article that lists the wallets, the cutoff and every figure.
| Published | Subject | Comparison | Period | Difference | Balance tie-out | Reproduce |
|---|---|---|---|---|---|---|
| 2026-07-29 | vitalik.eth cluster — five public Ethereum addresses (vitalik.eth, VB legacy, Vb 2, Vb 3 Safe, cold wallet) | Naive per-wallet basis handling (self-transfers lose basis) vs transfer-aware — same engine, same data, same classifications | genesis → 2023-03-31 | $44,975,739 | 5 of 5 wallets PASS at cutoff block 16,950,600 | article |
| 2026-08-15 (measured 2026-08-06) | 0xd04daa65144b97f147fbc9a9b45e741df0a28fd7 — one public Ethereum address, 5 events, cutoff 2021-12-31 | Production /api/check scan vs the chain's own balance (tie-out) | genesis → 2021-12-31 | No difference measured — zero $0-basis disposals in this window. The article states no dollar figure because the scan did not produce one. | PASS — ledger 0.097 ETH matched 0.097 ETH on-chain (status: partial, one review-queue event) | article |
| 2026-08-23 (measured 2026-08-23) | 0xd04daa65144b97f147fbc9a9b45e741df0a28fd7 — one public Ethereum address, 741 events, cutoff 2024-12-31 | A Rev. Proc. 2024-28 per-wallet allocation statement built from a single submitted wallet vs the basis the chain shows arriving from an address outside the submitted set | genesis → 2024-12-31 | No difference between the linked and non-linked runs ($75,502,810 each) — a one-wallet set has no self-transfers to link. The measured result is the allocation itself: $0.00 basis across all 17 lots holding 27,000.998704 ETH, because the 70,000 ETH that funded the wallet arrived from an address not submitted. Dollar figures are single-source; the second price source was unreachable on this run. | PASS — ledger 27000.998704 ETH matched 27000.998704 ETH on-chain at cutoff block 21,525,890 | article |
| 2026-08-24 (measured 2026-08-24) | 0xab5801a7d398351b8be11c439e05c5b3259aec9b — one public Arbitrum One address, 671 events, cutoff 2025-12-31 | The wallet's own transaction list (16 rows, all inbound) vs the chain's internal-transaction index, which holds the single disposal | genesis → 2025-12-31 | No difference between the linked and non-linked runs ($366.05 each) — a one-wallet set has no self-transfers to link. The measured result is where the taxable event lives: 0.122920998109231953 ETH left the wallet inside an ERC-4337 bundle submitted by a bundler, so it appears in no transaction the wallet sent. Booked at $366.05 realized gain against $0.00 basis. Dollar figures are single-source; the second price source was unreachable on this run. | PASS — ledger 0 ETH matched 0 ETH on-chain at cutoff block 416,593,973 (confirmed independently by eth_getBalance at that block) | article |
Bring your tool’s own numbers
The free scan reads the gain/loss export from the tools most filers already use and compares it, sale by sale, against the chain — labelling the report with the tool it recognised. Export recognition is best-effort; an unrecognised file still audits, just under its own name.
| Tool | Export to upload |
|---|---|
| TaxBit | Form 8949 / gain-loss CSV |
| TokenTax | Form 8949 CSV |
| CoinTracker | Capital Gains / Form 8949 CSV |
| CoinLedger | IRS 8949 CSV |
| Koinly | Capital Gains / Form 8949 CSV |
Start with your CSV — or paste a public address. The row-by-row comparison runs privately in your browser.
Methodology (v2)
- Inputs. A public wallet cluster’s full on-chain history and a tax tool’s gain/loss export over the same period.
- Matching. Tool rows match on-chain disposals only when the match is UNIQUE within tolerance (same asset, ±1.5 days, ≤1% proceeds). Ambiguity is reported, never guessed.
- Publication bar. An entry is published only when the underlying scan’s balance tie-out PASSED on every wallet, and only alongside a reproducible article listing the wallets and every figure.
- Two kinds of entry. A vendor export entry names the tool and compares its gain/loss rows against the chain. A method entry names no vendor: it compares a way of handling cost basis (self-transfers keeping basis or losing it) against the chain, or reports whether a scan’s ledger tied out. A method entry is never labelled with a vendor’s name, because it did not measure one.
- Neutral by construction. A difference has two possible explanations — basis lost by the tool, or off-chain history the chain cannot show — and every entry states both. Agreement is published with the same prominence as difference.