since we now make an rpc call to get the active chain before bothering with exchange rates, exchange rates were prone to fail to initialize, either due to slow response to getblockchaininfo call or connecting to a node that's not ready to serve traffic (e.g. verifying blocks). with this change, wait to decide about exchange rate status until we have a verified rpc connection.
* 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
Calling getrawmempool with true is slow because the node needs to pull all tx mempool details before returning anything. This change instead calls getrawmempool with false, followed by individual requests for tx mempool entries which we submit in parallel up to the configured concurrency limit. This provides some safety against running into the RPC timeout that was previously common (when calling getrawmempool(true)) with large mempools. In addition to greater reliability in large-mempool scenarios, this change significantly improves the performance of the /unconfirmed-tx page in particular - because that page only cares about 20 tx mempool entries at a time; previously we were waiting for the node to query all mempool tx entries and throwing away the vast majority of the returned data.
Fixes#127