The Chaincode Podcast
Chaincode Labs
A podcast about Bitcoin protocol development
Rusty Russell and privacy and robustness in Lightning - episode 34
Rusty drops by to tell us about why privacy and robustness should be prioritized in Lightning.
We discuss:
LN symmetry (04:39)
Do we want LN Symmetry to be symmetrical? (05:12)
Listen to the conversation with instagibbs
Peer to peer protocol (13:30)
CTV (16:54)
Pushing privacy and robustness to the front of the line (20:33)
The dynamics of developing a spec with commercially associated implementations (22:19)
Expecting new implementations (26:22)
Privacy revisited (27:02
Elle Mouton, Oliver Gugger and Simple Taproot Channels - Episode 33
Elle Mouton and Oliver Gugger join us to talk with us about the Simple Taproot Channel proposal.
We cover:
Simple Taproot Channels Overview (1:29)
What’s the state of the spec? (3:06)
Changes to the scripts in Taproot Channels (4:31)
Refresher on CPFP carve-out and Anchor Outputs (8:19)
Why Anchor Outputs need to use script path spends (10:24)
Other goals of Simple Taproot Channels (15:52)
Why do PTLCs need Taproot funding outputs? (16:44)
Potential updates for the gossip protocol
Alekos Filini, Daniela Brozzoni and the Bitcoin Development Kit (BDK) - Episode 32
Alekos Filini and Daniela Brozzoni visit the podcast to discuss the Bitcoin Development Kit (BDK). Hang out with them on the BDK Discord.
We cover:
How BDK started (00:48)
Why is it named BDK and not the Magical Bitcoin Library? (2:10)
The first users of BDK (3:30)
Rust HWI (4:20)
Built around descriptors (7:15)
The ideal use case of BDK (7:30)
Pain points (9:05)
Why do devs keep building wallets from scratch? (10:05)
Greenwallet (13:03)
If you have a worki
Tadge Dryja and Lightning History and everything else - Episode 31
Tadge Dryja chats with us about writing the Lightning Network paper and working in the Bitcoin space.
We discussed:
Could blocks be bigger? (0:59)
Paper: On the instability of Bitcoin without the block reward (9:49)
Serving billions with Lightning (10:40)
The state of the debate when writing the Lightning Network White Paper (13:35)
Would Lightning be possible without Segwit? (17:20)
Looking in from outside on a project you started (18:54)
Trimmed HTLCs: Sending 1 sat vs 100,000
Andrew Chow and the Bitcoin Core Wallet - Episode 30
Andrew Chow joins us to discuss Bitcoin Core wallet development, PSBT, Output Descriptors, and HWI.
We cover:
- Why do we need a wallet in Bitcoin Core? (0:58)
- Refactoring the Wallet codebase to build Output Descriptors (5:59)Should we rewrite the wallet? (10:30)
- Changes to Coin Selection (11:35)
- Wallet interoperability (17:10)
- Hardware Wallet Integration (HWI) (18:20)
- Partially Signed Bitcoin Transactions (PSBT) (19:01)
- Becoming Maintainer (22:06)
- Tracking the UTXO pool (23:43)
-
Greg Sanders, SIGHASH_ANYPREVOUT, ephemeral anchors and LN symmetry (ELTOO) - Episode 29
Greg Sanders joins us to discuss ANYPREVOUT, ephemeral anchors and LN symmetry (a.k.a. ELTOO).
We chat about:
- Package relay (2:07)
- Pinning attacks (3:14)
- BIP125
- T-Bast’s pinning attack summary
- Mempool policy (4:56)
- Stuffing the mempool - 2017 (5:20)
- Rewrite mempool or make the problem simpler (07:57)
- Package relay RBF A.K.A. V3 (8:38)
- Reducing the standard transaction size to 65 bytes PR (14:25)
- March to LN symmetry (19:07)
- Daric: A Storage Effici
Sergi Delgado and Watchtowers, Lightning Privacy - Episode 28
Sergi Delgado joins us to discuss Watchtowers, his prior work in Bitcoin and Lightning privacy, Python vs. Rust and the impact of Eltoo.
We cover:
- Sergi’s prior research
- Mapping Network Topology Research (02:46)
- TxProbe paper
- Andrew Miller
- Coinscope
- Episode on Address Relay with Martin (04:28)
- Block-only connections PR by Suhas (07:32)
- An Empirical Analysis of Privacy in the Lightning Network (09:18)
- Lightning white paper, 2
Pieter Wuille and Tim Ruffing - Nesting, ROAST, Half-Aggregation, Adaptor Signatures (part 2)
We continue the conversation with Pieter Wuille and Tim Ruffing and Nesting, ROAST, Half-Aggregation, Adaptor Signatures, atomic swaps and more.
If you have not tuned into the first part of this conversation, we recommend listening to that one first.
We cover:
- Nesting (00:49)
- ROAST (12:09)
- Cross-input Signature Aggregation (18:49)
- Half-aggregation (34:32)
- Half-Aggregation of BIP 340 Signatures and BIP340
- Adaptor signatures and atomic swaps (39:32)
Further resources:
S
Pieter Wuille and Tim Ruffing, Schnorr, MuSig, FROST and more - Episode 26
Pieter Wuille and Tim Ruffing treat us to a conversation about Schnorr, multi-signatures, MuSig, and more. We covered a lot so this is part one of a two part conversation.
We discussed:
- When to roll your own cryptography (01:31)
- Schnorr Signatures (09:01)
- Why is Schnorr preferable to ECDSA? (10:55)
- Schnorr efficiency improvements (15:52)
- Multisigs (23:16)
- MuSig (25:07)
- Yannick Seurin
- Rogue key attack or key cancellation attack (31:00)
&n
Clara Shikhelman and Sergei Tikhomirov and Channel Jamming on the Lightning Network - Episode 25
Clara and Sergei stop by to chat about their recent proposal on mitigating jamming attacks in the Lightning Network. We talk unconditional fees, local reputation, the impact on decentralization and UX, and the state of Lightning in general.
We discuss:
- What is jamming and why is it free? (03:43)
- How our jamming project started (06:44)
- Prior work on jamming (08:00)
- The desired properties of a solution (09:57)
- Reputation (12:47)
- Centralization concerns (14:17)
- Unconditional fees (19
Josibake, the Bitcoin Core wallet and wrangling bitcoin data - episode 24
Josibake joins us to talk about his work on the Bitcoin Core wallet, bitcoin data and onboarding to bitcoin development.
We discussed:
- Analyzing historical transaction data (1:25)
- Creating a publicly available dataset (4:12)
- What could it be used for? (7:30)
- Bitcoin Core wallet (9:00)
- Why have a wallet in Bitcoin Core? (10:00)
- Separation of GUI from wallet (12:35)
- Only use one input type when building transaction (13:40)
Steve Lee and Lightning updates / Stratum V2 - Episode 23
Our topics:
- Lightning Dev Kit (1:04)
- Zeroconf Channels (2:22)
- Rapid Gossip Sync (3:46)
- How does LDK pick priorities? (8:55)
- LDK Lite (10:12)
- Will LSPs be needed forever? (12:25)
- Validated Lightning Signer (15:20)
- A Lightning Node's Problem with Hats
- VLS code base
- FROST and ROAST (23:00)
- Recovering a FROST wallet (24:00)
- Taproot adoption (26:18)
- Future of the Lightning Network (30
0xB10C – Tracepoints and monitoring the Bitcoin network
We catch up with 0xB10C about monitoring pools and tracing code execution in nodes.
Our topics:
- What he's been up to since the residency (1:05)
- Monitoring the mempool (2:52)
- Mempool Observer
- Monitoring Mining pools (4:27)
- MiningPool Observer
- Mining pools not mining P2TR at Taproot activation (5:24)
- Why monitor the network? (8:20)
- Template discrepancies between pools and monitor (9:25)
- User-space Statically Defined T
Gloria Zhao and Package Relay - Episode 21
Gloria Zhao sits down with us to discuss her package relay proposal and what it is like as a relative newcomer to propose a big change.
- What's package relay? (1:04)
- Mailing List: Package Relay Proposal
- Why do people care about package relay? (3:12)
- What are these "contracting protocols" package relay matters for? (5:03)
- Pinning attacks (6:28)
- Why do you work on package relay? (6:55)
- What's special about the mempool? (10:18)
- How do you approach the securit
Martin Zumsande and Address Relay - Episode 20
Martin Zumsande joins us to tell us about the address spam in the summer of 2021 and his interests in AddrRelay and Bitcoin Core development.
We discuss with Martin:
- His background (1:38)
- Getting interested in Bitcoin (2:45)
- How to approach P2P (3:55)
- The network is changing (7:30)
- What's the purpose of the Address Manager (AddrMan)? (9:33)Peering differences to LN nodes (11:00)
- Ethan Heilman's talk on Network Partitioning Attacks (12:10)
- Addrman and eclipse
Sergei Tikhomirov and Lightning privacy - Episode 19
Postdoc Researcher Sergei joins Murch and Jonas to talk about channel balance probing in Lightning, privacy concerns in general, and the importance of researcher-developer collaboration.
We discuss:
- Sergei's background (1:50)
- Sergei's homepage with links to all prior research
- Lightning basics (2:50)
- Why LN payments fail (3:40)
- Why privacy is important (5:30)
- Privacy potential of Lightning vs L1 Bitcoin (6:40)
- How probing works (8:40)
- Why is balance discovery bad
Block Building with Clara and Murch - Episode 18
Postdoc Researcher Clara joins Murch to discuss their block building research. They cover their proposal, which outlines suggested improvements to the current Bitcoin Core block building algorithm using candidate sets.
Murch and Clara discuss:
- Building a valid block 101 (5:45)
- The current getblocktemplate algorithm (11:35)
- Child pays for parent (13:40)
- Is there something better? (15:45)
- How easy would it be to guess the next block? (27:25)
- Do we have a better idea than initially mini
Sanket Kanjalkar and Miniscript - Episode 17
Sanket describes to Murch his work on Miniscript. We explore uses for Miniscript, learn about intersections with PSBTs, Output Descriptors, and Taproot, and suss out the difference between Miniscript and Miniscript Policy.
Note: This episode was recorded in the context of travel for Bitcoin 2021. We apologize for the less polished than usual audio quality due to the different equipment and recording environment.
We discuss:
- What's Miniscript? (1:54)
- Partially Signed Bitcoin Transactions (PS
Pieter Wuille & Amiti Uttarwar and the P2P network - Episode 16
P2P experts Pieter and Amiti chat about the P2P network.
In this episode they cover:
- AddrRelay high-level goals and constraints (1:15)
- Very different than the goals of blocks and transactions
- Marginal fee rate (4:35)
- Should we consider different transport layers? (5:40)
- FIBRE Episode with Matt Corallo (7:40)
- The introduction of Addrman in 2012, PR #787 (8:55)
- What existed before AddrMan and the evolution of DoS resistance.
- Eclipse Attack paper (14:55)
&n
Amiti Uttarwar and the P2P network - Episode 15
Amiti returns to the Chaincode office to discuss all things p2p.
We discuss:
Why Amiti works on P2P (1:50)
A framework for p2p design (4:25)
How do we systemize Bitcoin Core knowledge? (6:20)
Searchable #bitcoin-core IRC logs (8:35)
Forward compatibility and upgradability (15:00)
Partition resisitence (16:10)
Eclipse Attacks (17:00)
Altnet (20:40)
Messages sent across the wire (20:55)
AddrRelay and AddrMan (24:35)
Bootstrapping, DNS seeds and address announcements (25:25)
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:
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 usin
Chaincode Decoded: Mempool - Episode 12
The Chaincode Decoded segment returns and we jump into the deep end of the mempool.
Child Pays for Parent (CPFP) (2:15)
How miner evaluate fee rates (4:34)
Why is it hard to estimate fee rates? (6:03)
How do exchanges estimate fees? (8:00)
Will the mempool empty again? (9:23)
Miner/pools and the need for a high fee environment (11:04)
Replace by Fee (RBF) (14:05)
- BIP 125
Mempool eviction and the problems it can cause (19:04)
Anchor Outputs (20:50)
Package Relay (21:06)
Way
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 Ad
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)
&nb
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
Murch and Enterprise Wallets/UTXO Management - Episode 8
After a long hiatus, we return to talk with new Chaincode member Murch and get his take on enterprise wallets and UTXO management.
In this conversation, we cover:
- Enterprise UTXO management (3:35)
- The impact of the 2017 hype cycle (4:30)
- The importance of UTXO set minimization (5:30)
- The fee market today (6:44)
- Batching Transactions (9:15)
- Payment Batching
- Consolidations (11:05)
- Consolidation of 4 Million UTXOs at Xapo
- Change splitting (14:10)
- Replace By Fee (16:
Nadav Kohen and Payment Points - Episode 7
In Episode 7, we chat with Nadav Kohen of Suredbits and discuss payment points as an alternative to HTLCs on the Lightning Network.
In this conversation we cover:
Payment points (1:55)
- Blog post part 1
- HTLCs (2:00)
Timelocks (4:16)
HTLC drawbacks (5:38)
- Payment decorrelation
- Wormhole attack presented in Anonymous Multi-Hop Locks for Blockchain Scalability and Interoperability (6:35)
Point time lock contracts (PTLCs) (9:50)
- Adaptor signatures on Schnorr
Proof of payment (13:25)
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 shari
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 compari
James O'Beirne and Assume UTXO - Episode 4
Next in the studio, we caught James O'Beirne, who until recently was a co-worker of ours at Chaincode. We talked to James about his experience at the Chaincode residency, his most recent project Assume UTXO (GitHub issue, proposal, talk) and how he champions and effects change in Bitcoin Core.
Discussed in this episode:
- 2018 residency (2:42)
- Choosing what to work on (5:40)
- Fork detection framework (6:55)
- Initial block download (IBD) (8:10)
- What a node does during IBD 1110
Jeremy Rubin and CHECKTEMPLATEVERIFY - Episode 3
For our third episode, we talked to Jeremy Rubin about his recent CHECKTEMPLATEVERIFY proposal. During our discussion, we touch on the history of covenant proposals, vaults, payment pools, CTV's synergies with Taproot and more.
Notes:
What is CHECKTEMPLATEVERIFY (CTV)? (4:30)
What is a covenant? (5:25)
- CoinCovenants using SCIP signatures, an amusingly bad idea (2013) (7:15)
- Bitcoin Covenants AKA MES16 paper (2016) (8:15)
- Talk at Stanford Blockchain Conference (2017) (9:20)
Why covenan
Pieter Wuille (part 2 of 2) - Episode 2
For our second episode, we pick up where we left off with Pieter Wuille in episode 1. If you missed that one, you should go back and listen to it first.
Pieter has been a Bitcoin protocol developer and contributor to Bitcoin Core since 2011. In that time, he’s authored or contributed to some of the most important developments, including segwit, bech32, libsecp, HD wallets, schnorr and taproot, and many others.
We talked to Pieter about his thoughts on the lessons learned from the March 2013 Cons
Pieter Wuille (part 1 of 2) - Episode 1
For our first episode, we talked to Bitcoin Core contributor Pieter Wuille.
Pieter has been a Bitcoin protocol developer and contributor to Bitcoin Core since 2011. In that time, he’s authored or contributed to some of the most important developments, including segwit, bech32, libsecp, HD wallets, schnorr and taproot, and many others.
We talked to Pieter about his thoughts on some of those influential PRs, including headers-first syncing and ultraprune, and hear about the motivation for those ch