Coin Days Destroyed
For every input spent in a block we compute (block time minus prevout time) in days, multiplied by the input value in BTC. Sum across the block and you get its CDD. High CDD means long-dormant coins moved; low CDD is recent-output churn. The metric responds dramatically to whale activity, exchange distributions, and cycle tops.
Daily CDD, all-time
Per-day sum across all blocks. Y-axis is log scale because real CDD spans many orders of magnitude: sleepy days clock in around 105 BTC·days, the 2024 Mt. Gox trustee distributions cleared 1010+. The orange overlay is the trailing 7-day mean (linear in the underlying data, plotted on the same log axis for trend visibility).
What CDD actually tells you
The total Bitcoin supply doesn't change much day-to-day, so plain on-chain volume is noisy and dominated by exchange churn. CDD weights every moved satoshi by how long it sat still. A 1 BTC payment of fresh coins barely registers; a 1 BTC payment of 10-year-old coins is worth 3,650 BTC·days. Big CDD prints almost always come from someone whose decision matters: long-term holders unloading, governments forfeiting seized stashes, exchange cold-wallet migrations, or post-bankruptcy distributions like Mt. Gox.
CDD doesn't tell you direction (buy or sell) and it doesn't tell you who. It tells you that someone with skin in the game moved. That's a lot more signal than total transaction volume, which is mostly hot-wallet rebalancing and consolidation.
Methodology
- Source: our own bitcoind 28 node on cq-index, queried via
getblockverbosity 3 (returns each input'sprevout.heightandprevout.valueinline). - For every non-coinbase input in every block, contribute
(block_time − prevout_block_time) / 86400 × prevout_value_btc. - Coinbase inputs contribute zero (they create supply rather than spending it).
- Block times that drift earlier than a recent prevout (within consensus rules; miners have ~2h leeway) are clamped to age 0 to avoid negative CDD.
- Backfill walks genesis to tip. Going forward, a 3-confirmation trigger appends new blocks shortly after they finalize.