- Cache key prefixing only for redis keys - this data is persistent across app executions, thus the need for versioning, and limiting prefixes to here avoids wasting app memory for in-memory cache-key prefixes
- Tiered caching when both memory and redis caching is active (memory cache tried first, fall back to redis cache, fall back to RPC)
- Cleaner setup/configuration of caches
- new tool /difficulty-history: show graph of diff changes over time for fun
- new "Network Summary" item: Block time for current difficulty epoch, with estimate of difficulty change for next epoch
- more resilient layouts for tools card on homepage and /tools page
- remove some unused code
- major memory usage improvements for loading txs with inputs: appropriate input-vouts are now extracted from their source txs and summarized (asm/hex are dropped since they're never used), rather than keeping the whole of input-txs in memory; this dramatically improves memory usage (and avoids crashing due to OOMEs), particularly when loading txs with "heavy" inputs (i.e. many, large input txs); this is relevant for /tx/TXID pages, and particularly important for the new /block-analysis pages which necessarily load many, many txs
- cache-key prefixes for coreApi's caching functionality: to avoid loading old-format data from a persistent cache and barfing on it
- several important code-reuse fixes: there were almost-duplicate chunks of code that were essentially calls to getRawTransactionWithInputs - now just use that function
- new minor /admin page for showing memory usage
- on homepage Network Summary: show full tx count (non abbreviated)
- use new domain everywhere
- new /block-analysis tool for summarizing data for all tx within a given block
- include subsidy and tx fees in volume displays (on homepage network summary and on block details pages)
- misc minor styling and frontend ux tweaks
- /mempool-summary - switch to be a dynamic page with loading progress bar like /mining-summary and /block-stats
- more options for block ranges on /mining-summary and /block-stats
- "unsupported" alert on /block-stats for node versions below 0.17.0
- frontend improvements for dynamic pages to better display currency values (matching non-dynamic pages)
- re-order tools lists
- miner config for block #9 (satoshi)...for fun
- clean up spacing on homepage
- fix bug where miner info wasn't showing on tx pages
- Include "Volume (24hr)" in homepage summary
- Include block output volume in blocks list (0.17.0+)
- Show "%Full" in blocks lists (with fullness icon) instead of weight with progress bar
- Hide "Date" column on homepage blocks list (Age+TTM) is plenty for the recent blocks)
- Fix to pull UTXO set after RPC connection is established
- Fix for abbreviating "month" to "mo" instead of "m" which can be confused with minutes
- Tweak width of data columns on 1200 screens to avoid some wrapping of title labels
- More consistently "smallify" display of units
- Armor on block-content template for missing blockstats values (identified issue by looking at genesis block, added manual data for that block since RPC returns error, but armor is still probably valuable)
- Tweaks to timestamps "time ago" displays in several places trying to make more consistent and user friendly
- Explicit acknowledgement of "nonstandard" output type
Changelog additions:
* Optional querying of UTXO set summary
* Note: this is disabled by default to protect slow nodes. Set 'BTCEXP_SLOW_DEVICE_MODE' to false in your `.env` file to enjoy this feature.
* More data in homepage "Network Summary":
* Fee estimates (estimatesmartfee) for 1, 6, 144, 1008 blocks
* Hashrate estimate for 1+7 days
* New item for 'Chain Rewrite Days', using 7day hashrate
* New data based on optional UTXO set summary (see note above):
* UTXO set size
* Total coins in circulation
* Market cap
* Tweaks to data in blocks lists:
* Simpler timestamp formatting for easy reading
* Include "Time-to-Mine" (TTM) for each block (with green/red highlighting for "fast"/"slow" (<5min/>15min) blocks)
* Display average fee in sat/vB
* Add total fees display
* Demote display of "block size" value to hover
* Show weight in kWu instead of Wu
* Zero-indexing for tx inputs/outputs (#173)
* Labels for transaction output types
* Configurable UI "sub-header" links
* Tweaked styling
- Also lots of frontend code cleanup (moving to more consistent pug-style class designations)
* display chain/network in header if not mainnet
* indicate active chain/network in startup log
* specify which chain/network "fun" items apply to and only show them for that chain
* don't display exchange rates for testnet/regtest
* use block interval of 150 for regtest halving
* regtest hacks: since getblockchaininfo.blocks=0 on a default regtest node despite the genesis block existing, hack in a couple of places in order to display the genesis block
* fix /peers page to not throw error with no connections
Move closer to the original vision of supporting any address-querying implementation desired. Current options include ElectrumX (as before) and now blockchain.com and blockcypher.com since they were easy to support and are publicly/easily available (though ridiculously neither is yet to support bc1 addresses).
- new env var option BTCEXP_ADDRESS_API, value can be electrumx, blockchain.com, blockcypher.com
- update ElectrumX client connect to request v1.4 of API as all clients are now supposed to do
- misc frontend improvements/cleanup for addresses
all for demo site only:
- remove github's javascript buttons from homepage in favor of github-api-request followed by self-rendered buttons
- donation modal with support for BTCPay-backed donations of set denominations and hidden-but-expandable old donation addresses
- tweak footer style and remove old donation addresses in favor of another donation button that shows the modal
- updated package-lock
- include sample .env file for easy reference
- continue to support key-by-key updating from credentials.js for now
- minor code formatting
- reflect status of BTCEXP_NO_RATES in UI when applicable (hide new exchanged-currency items from display dropdown and hide exchange rate on homepage)
- rename _LOGIN to _BASIC_AUTH_PASSWORD for clarity
- tweak README to call out .env-sample