For a while this project used a fork of ruimarinho/bitcoin-core (the Bitcoin RPC project recommended on an old wiki: https://en.bitcoin.it/wiki/API_reference_(JSON-RPC)). Our fork had some minor lint cleanup and updates to some very old dependencies. The upstream project is barely maintained and continues to depend on other libraries with known vulnerabilities. Rather than try to update the fork, this change switches to the jayson RPC library, which is general-purpose rather than bitcoin-specific, is more widely deployed, is better maintained, and lacks vulnerable, old dependencies.
-move /api/xyzpub/:xyzpub to /api/xyzpub/txids/:xyzpub
-move /api/util/xyzpub/:xyzpub -> /api/xyzpub/:xyzpub
-rename xyzpubAddressApi -> xyzpubApi and move more functionality from apiRouter there
-searchXpubTxids: return more details about the search, then in the apiRouter just use what's needed
-fix in searchXpubTxids: reset gapCount value when tx is found
-update api docs
-update changelogs
-load difficulty history at startup, and store ath for use on hp
-hp: display ath data next to difficulty; add some clickthrough icons next to items in network summary
-move difficulty history logic to coreApi (was in internalApiRouter)
-clean up deprecated "new Buffer()" (use Buffer.from() instead)
-versioning support for utils.fileCache (old versions will be deleted automatically)
-include line breaks in utils.fileCache json output
-change icon for diff history
-new /admin/perf-log: show performance details for various actions
-reorg "next block" code into coreApi
-fix /api/quotes/all (was defined below "/api/quotes/:index" which was catching it)
-homepage: make next-block content load async
- support for miner identification falling back to payout address when unknown
- support for deep linking to non-default nav tabs on many pages
- updated miners
- minor cleanup and ux tweaks
- Updated dependencies, including removing "bitcoin-core" in favor of a self-maintained fork "btc-rpc-client" (forked from bitcoin-core v3.0) which fixes a dependency-based security vulnerability there; the bitcoin-core-v3.0 bump changes the callback structure of the library so changes have been made adding "await" for rpc-client calls
- Fix some parameter-parsing problems with /rpc-browser and /rpc-terminal tools
-new global flag rpcConnected that's set when the connection is verified
-if rpcConnected=false, fail all RPC calls immediately with less fuss (and less log output)
-if rpcConnected=false, don't run any router/action code (which often submits a bunch of destined-to-fail rpcs), rather just show a more friendly error and point users in the right direction to address
-Update docs to specify that txindex is necessary for pre-v0.21 nodes
-Gracefully handle getindexinfo failures for old nodes
-Use graceful failure to fallback to assuming that txindex=1 (as docs indicate is necessary)
I'm open to other approaches for identifying absence of txindex, but this should keep older clients functioning at 100% for now.
To more clearly acknowledge that any Electrum-protocol implementation can be configured for address queries, the names of variables explicitly named "ElectrumX" have been changed to "Electrum". Backward compatibility with any clients using the old names is meant to be preserved.