This week’s newsletter includes a notice of Bitcoin Core 0.17’s
impending release, links to the backport releases of Bitcoin Core 0.15
and 0.14 to fix the CVE-2018-17144 duplicate inputs bug for those users
unable to run more recent releases, a brief description of a chainsplit
on testnet, and links to notable merges in Bitcoin infrastructure
Upgrade to Bitcoin Core 0.17: the new release has been tagged and
several people have begun reproducing builds of the software, so the
binaries and formal release announcement are likely to become
available Tuesday or Wednesday on BitcoinCore.org. The
announcement will include a copy of the release notes detailing major
changes to the software since the 0.16.0 release.
Bitcoin Core 0.15.2 and 0.14.3 released: although source code has
been available for these older branches since the public announcement
of the CVE-2018-17144 duplicate inputs bug, getting enough people
to certify a reproducible build took extra time before the
binaries could be made available.
CVE-2018-17144 duplicate inputs bug exploited on testnet:
last Thursday a block was created on testnet containing a transaction
that spent the same input twice. As expected, nodes believed to be
vulnerable to the bug accepted the block and all other nodes rejected
it, leading to a consensus failure (chainsplit) where the chain with
the most proof of work contained the duplicate inputs and a weaker
chain did not.
Eventually, the chain without the duplicate inputs gained more proof
of work and the vulnerable nodes attempted to switch to it. This
caused the vulnerable nodes to attempt to re-add the duplicate input
to the UTXO database twice, triggering an assert and causing them to
shutdown. When restarted, operators of the vulnerable nodes needed
to manually trigger a lengthy reindex procedure to fix their nodes’
database inconsistencies. (This side-effect of recovering from a
duplicate inputs chainsplit was previously known to developers.)
Nodes upgraded to Bitcoin Core 0.16.3, 0.17.0RC4, or running other
software that wasn’t vulnerable had no reported problems. However,
many block explorers with a testnet mode did accept the vulnerable
block, providing a reminder that users should be careful about using
third-parties to determine whether or not transactions are valid.
Bitcoin Core #14305: after the discovery of a few cases where
Python-based tests were passing incorrectly as a result of using
misnamed variables, a variable name whitelist was implemented using
Python 3’s __slots__ feature for classes.
LND #1987: the NewWitnessAddress RPC has been removed and the
NewAddress RPC now only supports generating addresses for
P2SH-wrapped P2WKH and native P2WPKH.
C-Lightning #1982: The invoice RPC now implements RouteBoost
by including a BOLT11r parameter in the invoice that provides
routing information to the payer for an already-open channel that has
the capacity to support paying the invoice. This parameter was originally
intended to help support private routes, but it can also be used this
way to support nodes that no longer want to accept new incoming
channels. Alternatively, if no available channel can support
payment of the invoice, C-Lightning will emit a warning.