Episode notes
In this episode of Bitcoin, Explained, hosts Aaron van Wirdum and Sjors Provoost discuss a recent bug in the btcd Bitcoin implementation that affected a large part of the Lightning network, as it disconnected lnd Lightning nodes from the Bitcoin blockchain.
In the episode, Aaron and Sjors explain that a developer going by the name Burak on Twitter created a 998-of-999 multisig transaction by leveraging Taproot. Although this was a valid transaction, btcd and lnd nodes rejected it, and therefore rejected the block that included the transaction and all blocks that came after it.
Specifically, Sjors explains, btcd rejected the transaction because it has a maximum limit on how much witness data a Segwit transaction can include. Although other Bitcoin implementations do enforce this limit on Segwit version 0 transactions, Segwit version 1 (that is, Taproot) transactions have no such limit.
Still, it is a bit unclear why this bug in btcd seemingly also affected many lnd Lightning nodes which use Bitcoin Core rather than btcd to validate blocks. In the second half of the episode, Sjors speculates how the two may be connected.
Finally, Aaron and Sjors explain how the Lightning Network is affected when Lightning nodes reject the Bitcoin blockchain.
Chapters
00:00:00 Bitcoin Amsterdam and opening updates
00:01:27 The LND outage and Burak’s transaction
00:04:26 Taproot multisig and witness size limits
00:11:49 The btcd validation bug
00:15:14 How stalled blocks affect Lightning channels
00:17:11 Why LND nodes using Bitcoin Core were affected
00:22:42 Fork Monitor and a bug predating Taproot
00:24:43 User risks: channel timeouts and cheating
00:29:49 Routing failures and open questions
