# TODO - __CRATES__ - _BUNDLER_ - _CLI_ - UX: launch - if first, test read/write speed, add warning if too low (<2gb/s) - check available disk space - pull latest version and notify if out of date - FEAT: add custom path support for config.toml - _COMPUTER_ - BUG: **add rollback of states (in stateful)** - FEAT: add support for per index computation - BUG: fix min fee_rate which is always ZERO due to coinbase transaction - BUG: before computing multiple sources check their length, panic if not equal - DX: create usd versions of vecs structs instead of having options everywhere - FEAT: datasets - `sats` version of all price datasets (average and co) - pools - highest dominance - consecutive blocks - max consecutive blocks - add indexes back to the mempool.space version of pools as we need the correct one for the API - price - oracle (https://utxo.live/oracle/UTXOracle.py) - cohorts - costs basis by percentile - address counts relative to all datasets - revived/sent supply datasets - add `p2pk` group (sum of `p2pk33` and `p2pk65`) - add utxo count, address count, supply data for by reused addresses in groups by address type - add more date ranges (3-6 months, 5-7 years and more) - % of volume - indicators - pi cycle - https://mainnet.observer - https://glassnode.com - https://checkonchain.com - https://researchbitcoin.net/exciting-update-coming-to-the-bitcoin-lab/ - https://mempool.space/research - _ERROR_ - _FETCHER_ - _INDEXER_ - PERF: parse only the needed block number instead the last 100 blocks - maybe using https://developer.bitcoin.org/reference/rpc/getblockhash.html - _INTERFACE_ - DX: Maybe change `json` to: ```json { "price_close": { "data": [115976.6, 115943.4], "unit": "USD", "range": { "from": 19627, "to": 19628 } } } ``` - DX: create pagination enum - from to - from option - to option - page + option default 1000 max 1000 - BUG: from/to/count params don’t cap all combinations - example: from -10,000 count 10, won’t work if underlying vec isn’t 10k or more long - _LOGGER_ - BUG: remove colors from file - _MCP_ - _PARSER_ - _SERVER_ - api - FEAT: copy mempool's rest api - https://mempool.space/docs/api/rest - FEAT: add extensions support (.json .csv …) instead of only format - FEAT: if format instead of extension then don't download file - BUG: ddos protection - against API params varying in range - search - fuzzy on typo - https://github.com/rapidfuzz/strsim-rs or stick with current impl - create map of all single words - do some kind of score with that ? - FEAT: discoverability - catalog (tree/groups) - search - BUG: failover to `/api` - ???: no HTML / redirects ? - FEAT: support keyed version when fetching dataset: {date: value} / {date: [value]} - FEAT: add support for https (rustls) - _STORE_ - FEAT: save height and version in one file - _STRUCTS_ - _GLOBAL_ - PERF: https://davidlattimore.github.io/posts/2025/09/02/rustforge-wild-performance-tricks.html - __DOCS__ - _README_ - FEAT: add a comparison table with alternatives - FEAT: add faq - __WEBSITES__ - _PACKAGES_ - DX: move the fetching logic from `bitview` website to an independent `brk` package which could be published to npm - https://www.npmjs.com/package/@mempool/mempool.js - auto publish with github actions - _BITVIEW_ - EXPLORER - FEAT: blocks (interval as length between) - FEAT: transactions - FEAT: addresses - FEAT: miners - FEAT: xpubs ? - CHART - FEAT: Make candlesticks a bi-series with a candlestick series and a line when too zoomed out (like the auto mode) - FEAT: Add min/max markers back now that they can be ignored when scaling the chart (to avoids stuttering) - BUG: selected unit sometimes changes when going back end forth - FEAT: add support for custom charts - BUG: price scale format depends on unit, hide digits for sats for example (if/when possible) - FEAT: shows certain series as [scatter plots](https://github.com/tradingview/lightweight-charts/issues/1662) with a solid sma/ema - mainly datasets with a big variance like raw `hash_rate` - BUG: hide pane if no series on it - BUG: fix (and reset) pane size (50/50) when changing charts - UX: units: add short name / long name / title - BUG: verify that "compare" folders aren't missing charts/datasets - LEGEND - UX: add link to explanation for each name (to glassnode ?) - TABLE - FEAT: pagination - FEAT: exports (.json, .csv,…) - UX: improve dataset selection - UX: display 1k values (instead of 10k) but to avoid caching multiple times the same values apply everywhere - SEARCH - UX: improve - UX:datasets add legend, and keywords ? - FEAT: support height/address/txid - GLOSSARY - FEAT: Add ? - NAV - UX: move share button to footer ? - BUG: when clicking on already selected option, pushes to history, bad ! - GLOBAL - BUG: improve behavior when local storage is unavailable by having a global state, otherwise the website forgets/don't save user's settings - UI: font: - https://fonts.google.com/specimen/Space+Mono - PERF: keep as many files as possible [under 14kb](https://endtimes.dev/why-your-website-should-be-under-14kb-in-size/) - DX: [No classes](https://news.ycombinator.com/item?id=45287155) - UX: [Organic animations](https://courses.joshwcomeau.com/playground/magic-wand-final) - __GLOBAL__ - check `TODO`s in codebase - rename `output` to `txout` or `vout`, `input` to `txin` or `vin` - https://マリウス.com/thoughts-on-cloudflare/