Less than two months since releasing version 0.15.0, the developers of Bitcoin Core have released a minor update to the client, 0.15.0.1
Bitcoin core 0.15.0 included features such as better fee estimate, a graphical interface to request replace-by-fee, support for multiple wallets per installation, faster block validation and various other bug fixes and optimizations.
The latest minor update, 0.15.0.1, changes the way the client deals with peer connections and invalid blocks to safeguard against future blockchain forks and misbehaving peers. A minor bug which caused the GUI client to crash for some users after upgrading to 0.15.0 has also been fixed in the latest patch. Notable changes include,
- Unrequested blocks with less work than the minimum-chain-work are now no longer processed even if they have more work than the tip (a potential issue during IBD where the tip may have low-work). This prevents peers wasting the resources of a node.
- Peers which provide a chain with less work than the minimum-chain-work during IBD will now be disconnected.
- For a given outbound peer, we now check whether their best known block has at least as much work as our tip. If it doesn’t, and if we still haven’t heard about a block with sufficient work after a 20 minute timeout, then we send a single getheaders message, and wait 2 more minutes. If after two minutes their best known block has insufficient work, we disconnect that peer. We protect 4 of our outbound peers from being disconnected by this logic to prevent excessive network topology changes as a result of this algorithm, while still ensuring that we have a reasonable number of nodes not known to be on bogus chains.
- Outbound (non-manual) peers that serve us block headers that are already known to be invalid (other than compact block announcements, because BIP 152 explicitly permits nodes to relay compact blocks before fully validating them) will now be disconnected.
- If the chain tip has not been advanced for over 30 minutes, we now assume the tip may be stale and will try to connect to an additional outbound peer. A periodic check ensures that if this extra peer connection is in use, we will disconnect the peer that least recently announced a new block.
- The set of all known invalid-themselves blocks (i.e. blocks which we attempted to connect but which were found to be invalid) are now tracked and used to check if new headers build on an invalid chain. This ensures that everything that descends from an invalid block is marked as such.
Between the last 2 client updates, Bitcoin has seen some extreme movements in the market. After a seemingly inexorable march beyond $7000, the currency has stabilized in the past few days hovering just above $6000 following the cancellation of the proposed hard fork to double the block size.