Correctness by construction
The cases that silently break a normal crypto ledger reconcile correctly here for one reason: the ledger is generated from the raw events, not hand-posted. Each demo below makes a single point.
Internal transfers net to zero
Moving your own coins between your own wallets and chains is not a taxable disposal. A naive per-wallet ledger books every transfer as a sale + repurchase — phantom gains and a reset cost basis. The generator matches self-transfers and carries basis through.
| Event | Classified as | Taxable gain |
|---|---|---|
Buy 1 BTC @ $30,000acquired — no gain | trade | — |
Buy 10 ETH @ $2,000acquired — no gain | trade | — |
Move 1 BTC · Coinbase → Ledger (own wallet)internal transfer — basis carried, no disposal | internal | — |
Bridge 10 ETH · Ethereum → Avalanche (own wallet)internal transfer — basis carried, no disposal | internal | — |
| Realized taxable P&L (reconciled) | $0.00 | |
Same position either way — you still hold 1 BTC + 10 ETH. Naive accounting just reports $15,000.00 of taxable gains for moving your own assets.
Chain reorg self-heals
A confirmed transaction gets orphaned by a reorg. A hand-posted ledger keeps the phantom row forever. A ledger derived from the event log just re-runs — the orphaned tx disappears and every balance corrects itself.
| Hand-posted (stale) | Generated (derived) | |
|---|---|---|
| Cash (USD) | $41,500.00 | $41,500.00 |
| ETH held (cost basis) | $10,000.00 | $10,000.00 |
| Realized gain | $1,500.00 | $1,500.00 |
| Determinism checksum | 2183030f | 2183030f |
Both ledgers agree while the tx is confirmed. Trigger the reorg to see them diverge.