
The Chaincode Podcast
A podcast about Bitcoin protocol development
Latest episodes

May 27, 2021 • 23min
Chaincode Decoded: Blockchain - Episode 14
In this Chaincode Decoded segment we talk about the fundamental role of Bitcoin's blockchain and some of its peculiarities.
We discuss:
Purpose of the blockchain (0:40)
Mining is a lottery, not a race (1:57)
Why doesn't the same miner always win? (5:12)
What happens if two blocks are found at the same height? (6:12)
The longest reorgs (9:11)
How does the blockchain work? (12:18)
- Headers-first synchronization and Ultraprune: Episode 1 with Pieter Wuille
- Episode 5: The UTXO set
Why does Bitcoin converge on one chain? (15:20)
- Selfish mining paper: Majority is not Enough: Bitcoin Mining is Vulnerable
Will we always find a new block? (18:04)
- Entropy sources in the block header
Mining pools have disjoint hashing spaces (19:30)
- Correction: mining pools do not have a separate pay-out address for each participant, but give out a unique coinbase transaction stub for each.
- Eschaton block
Thanks to Caralie for the sound engineering.

May 13, 2021 • 32min
Matt Corallo and Lightning Development Kit - Episode 13
In Episode 13, we sit down again with Matt Corallo and discuss his work on the Lightning Development Kit (LDK).
In this conversation we cover:
- Starting Rust-Lightning (1:20)
- Language bindings challenges (4:09)
- FFI (5:32)
- Interoperability of Lightning (7:10)
- Zero-value invoices (7:35)
- Keysend/push payments/spontaneous payments (8:20)
- What is the LDK stack? (9:29)
- Anchor Outputs (10:41)
- Child pays for parent (CPFP) (11:02)
- Who tracks the onchain state when using LND? (12:30)
- LDK tracks the channel commitment transaction, how is that done? (13:45)
- Compact block filters
- Contrasting multiple implementations working from a spec in Lighting vs. no spec with one dominant reference implementation in Bitcoin (14:58)
- The Lightning Spec
- What's the state of the Lightning Network? Have we moved beyond #reckless? (18:49)
- Denial of Service (DoS) vulnerabilities
- Channel Jamming (22:00)
- Eltoo and the punishment dynamic (22:45)
- Will the network trend to trusted relationships and lend itself to KYC? (24:50)
- FATF updates its guidance on Virtual Asset Service Provider (VASP) (26:50)
- Where LDK goes from here? (29:55)
Thanks to Caralie for the sound engineering.

Apr 26, 2021 • 27min
Chaincode Decoded: Mempool - Episode 12
The podcast explores various topics related to the mempool, including Child Pays for Parent (CPFP), how miners evaluate fee rates, estimating fee rates, how exchanges estimate fees, mempool eviction, Replace by Fee (RBF), Anchor Outputs, Package Relay, using blockspace more efficiently, and the implementation of SegWit by blockchain.com.

Apr 16, 2021 • 15min
Chaincode Decoded: Bech32m - Episode 11
This revisits a segment we call Chaincode Decoded. In this episode, we'll learn how to say Bech32 and also what it and Bech32m are. Enjoy!
Correction: The characters removed from the set are 1 B I O (2:20)
Why do we need Bech32? (0:57)
What is the distinction between Bech32 and native SegWit? (3:20)
Why does Taproot need a new address format? (4:13)
Bech32 length extension mutation weakness (11:20)
- mailing list post
Bech32m (12:25)
- BIP350
Further resources:
Pieter Wuille: New Address Type for SegWit Addresses (presentation)
Sipa demo
Bech32 adoption
(Some of) the math behind Bech32 addresses
Thanks to Caralie for the sound engineering.

Dec 15, 2020 • 19min
Carl Dong and Modularizing the Bitcoin Consensus Engine - Episode 10
In part 2 of this sit down with Carl Dong, Murch and Jonas cover the delicate work of modularizing the Bitcoin consensus engine.
In this conversation, we cover:
- Carl's De-globalize ChainstateManager PR (2:25)
- Async Block Processing PR
- Deglobalize class of chainstate manager (g_chainman) (3:40)
- AssumeUTXO
- global variables and main (5:25)
- scripted diff (9:35)
- 0.8 upgrade consensus failure (11:25)
- Jorge Timon's libconsensus project (13:10)
- current libbitcoinconsensus only does script verification (13:25)
- the case for multiple implementations (14:40)
- ABI (15:10)
Thanks as always to Matthew Zipkin for the sound engineering.

Nov 30, 2020 • 45min
Carl Dong and Build Systems - Episode 9
In part 1 of this sit down with Carl Dong, Murch and Jonas get into the weeds of all things build system. Stay tuned for the second half of this conversation when Carl describes his recent adventures isolating the libconsensus engine.
In this conversation, we cover:
- GUIX (2:25)
- talk at 2019 Breaking Bitcoin about reproducible builds
- Gitian builds (4:15)
- Fake time (4:50)
- Timestamps and reproducibility of packages (6:33)
- reproducible-builds.org (6:57)
- SOURCE_DATE_EPOCH
- Toolchains (14:40)
- Windows Builds and reproducibility (15:20)
- GCC libtool pointer confusion
- NSIS (20:25)
- Using Debian as an example (22:56)
- User choice in their security model (28:15)
- Making the process accessible (31:20)
- Mac OS X Toolchain & SDK and cross-compiling (33:30)
Thanks as always to Matthew Zipkin for the sound engineering.

Nov 9, 2020 • 36min
Murch and Enterprise Wallets/UTXO Management - Episode 8
New Chaincode member Murch discusses enterprise wallets and UTXO management. Topics include fee market today, batching transactions, RBF in the wild, SegWit, estimating fees, omnibus wallets, off-chain sending, and Taproot update.

Mar 30, 2020 • 50min
Nadav Kohen and Payment Points - Episode 7
In this episode, Nadav Kohen of Suredbits discusses payment points as an alternative to HTLCs on the Lightning Network. They cover topics such as timelocks, PTLCs, proof of payment, invoiceless transactions, and stuckless payments. They also explore the use of Schnorr signatures and contingent payments. Overall, an intriguing conversation on the potential of payment points.

Mar 12, 2020 • 32min
Matt Corallo and Compact Blocks/FIBRE - Episode 6
In Episode 6, we sit down with Matt Corallo and discuss his work on compact blocks and the FIBRE network.
In this conversation we cover:
Selfish mining (2:03)
- Majority is not Enough: Bitcoin Mining is Vulnerable
- Optimal Selfish Mining Strategies in Bitcoin
Ethereum's larger pools making superlinear profits (5:10)
Defining selfish mining (9:52)
Compact blocks (12:37)
- FAQ
- BIP152
- Reference implementation
FIBRE (20:28)
Forward error correction (24:14)
- Shamir secret sharing
Difference between TCP and UDP (29:21)
Thanks as always to Matthew Zipkin for the sound engineering.

Feb 26, 2020 • 18min
Chaincode Decoded: The UTXO Set - Episode 5
This is our first Chaincode Decoded Podcast. In this new podcast format, we'll dive into the details of a concept we've talked about on previous shows. No guests, no news, just Jonas and John talking about Bitcoin. A podcast by Bitcoin nerds for Bitcoin nerds.
In the first episode, we talk about the UTXO set. We'd love to know what you think!
Ultraprune - episode 1 (1:20)
Assume UTXO - episode 4 (1:28)
The cache layer (8:02)
Dbcache parameter (9:48)
- John talks about latency comparisons on a human scale. (Note: He incorrectly says that 1 second for RAM access equates to "months or years" for disk access. Actually 4 minutes for RAM access equates to 1-9 months for disk access.)
Different ideas on how to keep track of the UTXO set (11:29)
- utreexo (13:48)
What’s the future of the size of the UTXO set? (13:54)
UTXO consolidation (15:02)
UTXO selection (16:48)
Murch’s thesis on coin selection
Branch and bound
H/T to Amiti for the idea of the format. Thanks as always to Matthew Zipkin for the sound engineering.
Remember Everything You Learn from Podcasts
Save insights instantly, chat with episodes, and build lasting knowledge - all powered by AI.