Introduction |
White Paper |
Bitcoin: A Peer-to-Peer Electronic Cash System |
Introduction |
If I'd Known What We Were Starting (2017) |
If I'd Known What We Were Starting |
Introduction |
Bitcoin's Academic Pedigree (2017) |
Bitcoin's Academic Pedigree |
Introduction |
Intro to Blockchain |
What is blockchain anyway? |
Introduction |
Intro to Blockchain |
Electronic cash explained for developers video |
Introduction |
The Economic Limits of Bitcoin and the Blockchain |
The Economic Limits of Bitcoin and the Blockchain |
Introduction |
Proof of work |
The Anatomy of Proof-of-Work, Bitcoin Developer Reference |
Introduction |
Difficulty adjustment |
What keeps the average block time at 10 minutes? |
Introduction |
Byzantine generals problem |
The Byzantine Generals Problem |
Introduction |
Running a full node |
Full Node Question |
History & Philosophy of Bitcoin |
History of Bitcoin Development |
The Incomplete History of Bitcoin Development |
History & Philosophy of Bitcoin |
What is consensus? |
Consensus Algorithms, Blockchain Technology and Bitcoin |
Soft Forks & protocol overview |
On Unstoppability of Softforks |
On Unstoppability of Softforks |
Soft Forks & protocol overview |
Example soft forks |
Softfork wiki page |
Soft Forks & protocol overview |
Forking signaling and Activation |
Forks, Signaling, and Activation |
Soft Forks & protocol overview |
Fork categorization (soft, hard, evil, etc.) |
Better Fork Terminology, Forced Soft Forks |
Soft Forks & protocol overview |
Flag day upgrades |
UASF: User Driven Protocol Development |
Soft Forks & protocol overview |
IsSuperMajority signaling |
BIP 65 |
Soft Forks & protocol overview |
BIP9 signaling |
BIP9: versionbits In a Nutshell, BIP 9 |
Soft Forks & protocol overview |
BIP148 and BIP149 |
BIP 148, BIP 149, UASF BIP148 Scenarios and Game Theory, User Activated Soft Forks: the BIP 148 alternative |
Soft Forks & protocol overview |
BIP91 |
BIP 91 |
Security Models |
Overview |
Security models seminar video, Overview of Security Concerns, Danger! Bitcoin Threat Models, Bitcoin’s Security Model: A Deep Dive, Weaknesses, Speed-Security Tradeoffs in Blockchain Protocols, The Onion Model of Blockchain Security |
Security Models |
Checkpoints, assumevalid, minimumchainwork |
Bitcoin's Diversity of Use-Cases and Security Models, Dave Harding Tweet on assumed valid blocks and minimum chainwork |
Security Models |
Defining SPV and lightclients |
Light Clients |
Security Models |
BIP 37 (bloom filters) |
BIP 37, On the Privacy Provisions of Bloom Filters in Lightweight Bitcoin Clients |
Security Models |
Neutrino |
BIP 157, Neutrino: The Lighter Side of Lightning, Index for BIP 157 block filters, Exploring Neutrino |
Security Models |
Committed bloom filters |
Committed bloom filters for improved wallet performance and SPV security |
Security Models |
Fraud proofs |
Fraud Proofs (2018), Fraud Proofs: Improving the ability of SPV clients to detect invalid chains (gist), Improving SPV security with PoW fraud proofs |
Security Models |
Committed UTXO hashes |
UTXO set commitment hash |
Security Models |
Assume UTXO |
Assume UTXO FAQs, Assume UTXO (video) |
Security Models |
Utreexo |
ELI5: Utreexo, A description of research by Thaddeus Dryja |
Security Models |
Alternative UTXO Set Proposals |
Alternative UTXO Set Proposals seminar video |
Mining |
Poisson distribution/Progress-free-ness |
The Poisson Distribution and Poisson Process Explained |
Mining |
Block arrivals in the Bitcoin blockchain |
Block arrivals in the Bitcoin blockchain |
Mining |
Fee Sniping |
nSequence and opt-in ReplaceByFee |
Mining |
Selfish Mining |
On the Instability of Bitcoin Without the Block Reward, Majority is not Enough: Bitcoin Mining is Vulnerable, How to Mine Bitcoin Profitably - 2015, Why Bitcoin Mining Pools Aren’t Incentivized to Broadcast Blocks Quickly, Optimal Selfish Mining Strategies in Bitcoin, If There Is an Answer to Selfish Mining, Braiding Could Be It |
Mining |
51% attacks |
Bitcoin’s Attack Vectors: 51% Attacks |
Mining |
BetterHash |
BetterHash Mining Protocol(s) |
Mining |
No Reward Mining Overview |
On the Instability of Bitcoin Without the Block Reward |
Mining |
Pool overview |
Analysis of Bitcoin Pooled Mining Reward Systems |
Mining |
Pool Hopping |
Pay Per Last (luck) N Shares - PPLNS |
Mining |
PPS As a Real-World Business Solution |
Pooled mining |
Mining |
Trustless Pools |
P2Pool |
Mining |
Payment Channel Payouts |
Payment Channel Payouts: An Idea for Improving P2Pool Scalability |
Mining |
ASICBoost |
AsicBoost: A Speedup for Bitcoin Mining, The Problem with ASICBOOST, Inhibiting a covert attack on the Bitcoin POW function |
Mining |
BCH Mining/Difficulty Adjustment |
Bringing Stability to Bitcoin Cash Difficulty Adjustments, Bitcoin Cash Difficulty Adjustments, Difficulty Adjustment Algorithm Update |
Mining |
Tumblebit |
TumbleBit: An Untrusted Bitcoin-Compatible Anonymous Payment Hub |
Attacks |
Dust attacks |
Dust Attacks |
Consensus approaches |
Overview |
On Consensus |
Consensus approaches |
GHOST |
The GHOSTDAG protocol, Secure High-Rate Transaction Processing in Bitcoin, Modified GHOST Implementation |
Consensus approaches |
Braiding |
Braiding the blockchain |
Consensus approaches |
Byzantine Fault Tolerance |
Byzantine Fault Tolerance |
Consensus approaches |
Bitcoin-NG/PoW+BFT |
Bitcoin-NG: A Scalable Blockchain Protocol |
Consensus approaches |
Proof of Stake |
Proof of Work & Proof of Stake, Proof-of-Stake & the Wrong Engineering Mindset |
Consensus approaches |
Sidechains |
Enabling Blockchain Innovations with Pegged Sidechains, Sidechains, Proof-of-Work Sidechains |
Consensus Changes & Hard Forks |
History |
A complete history of Bitcoin’s consensus forks, March 2013 Chain Fork Post-Mortem |
Consensus Changes & Hard Forks |
Extension blocks |
Auxiliary block: Increasing max block size with softfork, How Bitcoin Extension Blocks Are Backward Compatible — and How They’re Not |
Consensus Changes & Hard Forks |
Hard forks: Potential dangers |
Network Partitioning |
Consensus Changes & Hard Forks |
Replay protection |
Replay Attacks Explained, How to Protect Against Replay Attacks, 2017_optin_replay code on btc1 |
Consensus Changes & Hard Forks |
Wipeout protection |
|
Consensus Changes & Hard Forks |
Light nodes |
Lightweight node wiki page |
Consensus Changes & Hard Forks |
Current research (spoonnet, etc) |
Spoonnet: another experimental hardfork |
Cryptography |
The 3 Seminal Events In Cryptography |
The 3 Seminal Events In Cryptography |
Cryptography |
An Overview of Public Key Cryptography |
An Overview of Public Key Cryptography |
Cryptography |
Finite fields, Elliptic Curves, ECDSA, Schnorr |
Finite fields, Elliptic Curves, ECDSA, Schnorr Cryptography, Elliptic Curve Cryptography Explained |
Cryptography |
Bitcoin, Chance and Randomness |
Bitcoin, Chance and Randomness |
Cryptography |
On Bitcoin Security in the Presence of Broken Crypto Primitives |
On Bitcoin Security in the Presence of Broken Crypto Primitive |
Cryptography |
Signatures and zero-knowledge proofs |
State of Cryptography - beyond ECDSA and sha256 |
Cryptography |
zero knowledge proofs |
Introduction to SNARKs |
Cryptography |
Bulletproofs |
How Bulletproofs Could Make Bitcoin Privacy Less Costly, Bulletproofs: Faster Rangeproofs and Much More, Building on Bulletproofs |
Cryptography |
Commitment schemes; pedersen commitments |
Commitment schemes, Non-Interactive and Information- Theoretic Secure Verifiable Secret Sharing |
Cryptography |
Schnorr |
Introduction to Schnorr Signatures (video), Simple Schnorr Multi-Signatures with Applications to Bitcoin, Liars, cheats, scammers and the Schnorr signature |
Cryptography |
Diffie-Hellman |
Diffie-Hellman Key Exchange: A Non-mathematician’s explanation |
Cryptography |
Ring Signatures |
Ring signatures |
Cryptography |
RSA |
How RSA Works With Examples |
Transactions |
Understanding a Raw Bitcoin Transaction |
Understanding a Raw Bitcoin Transaction |
Transactions |
Understanding a Raw Bitcoin Transaction the hard way |
Bitcoins the hard way: Using the raw Bitcoin protocol |
Transactions |
Working with Transactions |
Working with transactions (bitcoinj) |
Transactions |
Transaction format |
IsMine function in Bitcoin Core |
Transactions |
Script |
Bitcoin Developer Reference, Advanced Bitcoin Scripting: Transactions & Multisig |
Transactions |
Signing transactions |
Why the signature is always 65 (1+32+32) bytes long? |
Transactions |
Standardness |
Bitcoin Developer Reference, The Bitcoin Non-standard, Definition of Standardness |
Transactions |
0-conf transactions |
Support for zero-confirmation transactions at Bitcoin ATM, Solving the 0-conf problem using forfeits |
Transactions |
Partially Signed Bitcoin Transactions |
Partially Signed Bitcoin Transactions (video), BIP 174, Partially Signed Bitcoin Transactions, PSBT Howto for Bitcoin Core, Partially Signed Bitcoin Transaction (PSBT) format |
Transactions |
SIGHASH_NOINPUT |
BIP sighash_noinput |
Transactions |
Compacted Transactions |
|
Transactions |
Mempool |
How the Mempool Works, Transaction Pools, Bitcoin Peer-to-Peer Network |
Blocks |
Merkle Trees |
Bitcoin Developer Reference, Weaknesses in Bitcoin’s Merkle Root Construction |
Blocks |
Data structures in validation |
Validation costs and incentives |
Blocks |
Re-orgs |
Handling Re-orgs & Forks |
Blocks |
Pruning |
Block file pruning, Add autoprune functionality PR #5863 |
SegWit |
SegWit background and history |
Understanding Segregated Witness, Segregated Witness, Bitcoin Protocol Design: Segregated Witness Revisited, Segwit, Segregated Witness Benefits, Segregated Witness Costs and Risks, The Long Road to SegWit: How Bitcoin’s Biggest Protocol Upgrade Became Reality |
SegWit |
Advanced SegWit |
Advanced SegWit seminar video |
SegWit |
SegWit and scalabilty |
Segregated Witness and deploying it for Bitcoin (2015) |
SegWit |
Tx malleability |
Transaction Malleability Explained, Transaction Malleability Explained, 2014, The Who, What, Why and How of the Ongoing Transaction Malleability Attack, Dealing with malleability, Bitcoin Transaction Malleability and MtGox |
SegWit |
Tx malleability |
Malleation code exericse repo |
SegWit |
SegWit and blocksize |
Understanding Segwit Block Size |
SegWit |
Bech32 |
New address type for segwit addresses |
SegWit |
Wallet Development |
Segregated Witness Wallet Development Guide |
Wallet |
Wallet Development in Bitcoin Core |
Wallet Development in Bitcoin Core seminar video |
Wallet |
HD wallet |
Hierarchical Deterministic Wallets, Multi-Account Hierarchy for Deterministic Wallets, HD Wallets Explained: From High Level to Nuts and Bolts |
Wallet |
Native Descriptor Wallets |
Native Descriptor Wallets |
Wallet |
Wallet BerkeleyDB key value store, data file, environment, logs, flushing |
Migration from Berkeley DB to LevelDB, (also see BIP 50) |
Wallet |
Wallet key types: Regular, watch-only, hd |
Wallets and Accounts and Keys, Oh My! |
Wallet |
Wallet key management: Keypools, key metadata, address metadata |
Understanding keypool in Bitcoin Core, Understanding the Gap Limit |
Wallet |
Wallet rescan |
How to rescan / reindex wallet? |
Wallet |
Fees |
The Fee Market Explained, How wallets can handle transaction fees |
Wallet |
Fee estimation |
Fee estimation code exercise |
Wallet |
Replace by Fee |
Opt-in Full Replace-by-Fee Signaling, Support for zero-confirmation transactions at Bitcoin ATM |
Wallet |
Coin selection |
Unspent Management and Coin Selection, Coin Selection, Coin Selection (Scaling 2016), An Evaluation of Coin Selection Strategies |
Wallet |
Hardware wallets with Bitcoin core |
Using your hardware wallet with Bitcoin Core |
Scripts & Contracts |
Scripting & Transactions |
Scripts - general & simple video |
Scripts & Contracts |
Scripting & Transactions |
Bitcoin Script: Past and Future video |
Scripts & Contracts |
Scripting & Transactions - P2PKH, P2SH, P2WPKH, P2WSH, Bech32 |
P2PKH, P2WPKH, P2SH, P2WSH, Dissecting a P2PKH Bitcoin Transaction down to the last Byte, Bitcoin Multisig and P2SH Transactions |
Scripts & Contracts |
Script Descriptors |
Script descriptors, Support for Output Descriptors in Bitcoin Core |
Scripts & Contracts |
P2EP |
Improving Privacy Using Pay-to-EndPoint |
Scripts & Contracts |
Smart Contracts on a Dumb Chain; MimbleWimble |
Behind MimbleWimble |
Scripts & Contracts |
Smart Contracts on a Dumb Chain; scriptless scripts |
ElementsProject/scriptless-scripts, Scriptless Scripts, Scriptless scripts, adaptor signatures and their applications |
Scripts & Contracts |
Payment Channels |
Understanding Payment Channels, Bitcoin Protocol Design: Payment Channels Revisited, Bitcoin script v2.0 |
Scripts & Contracts |
MAST |
What is a Bitcoin Merklized Abstract Syntax Tree (MAST)?, Merkleized abstract syntax trees (MAST), MAST Discussion |
Scripts & Contracts |
ZK SNARKS |
SNARKS, Introduction to SNARKs, STARKs: Proofs with Polynomials |
Scripts & Contracts |
ZK STARKS |
Scalable, transparent, and post-quantum secure computational integrity, STARKs: Thank Goodness It's FRI-day, STARKs: Into the Weeds, ZK-STARKs — Create Verifiable Trust, even against Quantum Computers |
Scripts & Contracts |
Discreet Log Contracts |
Discreet Log Contracts, Discreet Log Contracts: invisible smart contracts on the Bitcoin blockchain |
Scripts & Contracts |
Miniscript |
Miniscript, Policy to Miniscript compiler |
Scripts & Contracts |
State of script |
The State of Script (2018) |
Fungibility & Scalability |
Overview |
The current state of Bitcoin fungibility (2019) |
Fungibility & Scalability |
On Scaling Decentralized Blockchains |
The fundamental tradeoff, On Scaling Decentralized Blockchains |
Fungibility & Scalability |
Why fungibility is important |
Fungibility And Scalability, Fungibility overview, Fungibility as an Attack Vectors: |
Fungibility & Scalability |
Privacy |
Different Approaches to Privacy on the Blockchain, Privacy, Privacy, How much privacy is enough? Threats, scaling, and trade-offs in blockchain privacy protocols, Privacy surrounding the Blockchain |
Fungibility & Scalability |
Chain analysis |
Chainalysis Live Demo, Let's talk about ChainAnalysis |
Fungibility & Scalability |
Wallet fingerprinting |
Wallet Fingerprinting (wiki) |
Fungibility & Scalability |
Transaction origin analysis |
A Fistful of Bitcoins: Characterizing Payments Among Men with No Names |
Fungibility & Scalability |
Coinjoin |
Coinjoin wiki page |
Fungibility & Scalability |
Confidential Transactions |
Bitcoins with Homomorphic Value, Confidential Transactions, A Primer to Confidential Transactions |
Fungibility & Scalability |
Tumblebit |
TumbleBit: An Untrusted Bitcoin-Compatible Anonymous Payment Hub, Tumblebit |
Fungibility & Scalability |
Coin Jumble |
Coin Jumble |
Fungibility & Scalability |
Schnorr |
Schnorr Signatures for Bitcoin - BPASE '18, Flipping the scriptless script on Schnorr, Schnorr Signatures |
Fungibility & Scalability |
Bellare-Neven |
Multi-Signatures in the Plain Public-Key Model and a General Forking Lemma |
Fungibility & Scalability |
Threshold Schemes |
Threshold cryptosystem, Threshold signatures and accountability |
Fungibility & Scalability |
Signature aggregation |
Signature aggregation for improved scalablity, Schnorr signatures and signature aggregation, BLS Multi-Signatures With Public-Key Aggregation |
Fungibility & Scalability |
MuSig |
Key Aggregation for Schnorr Signatures, MuSig: A New Multisignature Standard, Simple Schnorr Multi-Signatures with Applications to Bitcoin |
Fungibility & Scalability |
Taproot |
Taproot and Policy (video), Taproot and graftroot, Taproot: SegWit version 1 output spending rules |
Fungibility & Scalability |
Graftroot |
Graftroot: Private and efficient surrogate scripts under the taproot assumption |
The P2P Network |
Overview of the p2p network |
Bitcoin Peer-to-Peer Network |
The P2P Network |
Overview of the p2p network |
Adversarial Thinking in the Peer-to-Peer Network - first 41:29 |
The P2P Network |
P2P Design |
Undocumented P2P Design of Bitcoin Core |
The P2P Network |
Transaction propagation |
On Bitcoin and Red Balloons (incentives) |
The P2P Network |
Headers-first sync'ing |
Headers-First Sync (wiki) |
The P2P Network |
Advances in Block propagation |
Advances in block propagation |
The P2P Network |
Compact blocks |
Compact Blocks FAQ, Compact Block Relay |
The P2P Network |
Relay networks, FIBRE |
Relay networks, The Future of The Bitcoin Relay Network, What is FIBRE? |
The P2P Network |
Deanonymization in the Bitcoin P2P Network |
Deanonymization in the Bitcoin P2P Network |
The P2P Network |
Dandelion |
Dandelion: Redesigning the Bitcoin Network for Anonymity, Dandelion++: Lightweight Cryptocurrency Networking with Formal Anonymity Guarantees, What is the tradeoff between privacy and implementation complexity of Dandelion? |
The P2P Network |
Peer discovery |
Network Discovery |
The P2P Network |
Topology Discovery |
Discovering Bitcoin’s Public Topology and Influential Nodes, TxProbe: Discovering Bitcoin's Network Topology Using Orphan Transactions |
The P2P Network |
Peer connectivity |
|
The P2P Network |
BGP Hijack |
Hijacking Bitcoin: Routing Attacks on Cryptocurrencies |
The P2P Network |
Network partitioning & network level privacy attacks |
Network partitioning & network level privacy attacks seminar video |
The P2P Network |
Researching P2P privacy attacks |
Researching P2P privacy attacks seminar video |
The P2P Network |
Eclipse Attacks on Bitcoin’s Peer-to-Peer Network (2015) |
Eclipse Attacks on Bitcoin’s Peer-to-Peer Network, Eclipse Attacks on Bitcoin’s Peer-to-Peer Network (video) |
The P2P Network |
Denial-of-Service concepts |
Denial of Service (DoS) attacks wiki, Network Splits, "High horsepower" attacks |
The P2P Network |
Denial-of-Service Prevention |
Denial of Service (DoS) Prevention, DoS countermeasures may facilitate network fragmentation attacks |
The P2P Network |
SPV nodes |
Future of SPV tech |
The P2P Network |
MiniSketch |
Minisketch: Reducing Bitcoin Node Bandwidth Requirements, Minisketch: an optimized library for BCH-based set reconciliation |
Chain Forks and Failures |
BIP 66 Fork and spy mining |
Strict DER signatures, What is SPV mining, and how did it (inadvertently) cause the fork after BIP66 was activated? |
Bitcoin Core Architecture |
Architecture overview |
An overview of Bitcoin Core architecture (video) |
Bitcoin |
Learning-Bitcoin-from-the-Command-Line |
Programming with Bitcoin Core and Lightning |
Bitcoin Core Contribution |
Contributing to Core |
Contributing to Bitcoin Core, Introduction to Bitcoin Development, Contributing to Bitcoin Core, a personal account, Onboarding to Bitcoin Core |
Bitcoin Core Contribution |
Debugging Bitcoin Core |
Debugging Bitcoin Core (video) |