Skip to content

qiwan19/bitcoin-curriculum

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 

Repository files navigation

What is this?

While planning the Chaincode Residency, we put considerable effort into finding the best resources and creating a curriculum around Bitcoin protocol development. If you have interest in this, we have also published a similar resource for Lightning protocol development.

Bitcoin is constantly evolving, and so we expect maintenance of this document to be an ongoing task. We could use your help. Please consider opening a pull-request or opening an issue to keep this document relevant.

There are three portions to this curriculum:

  1. Study Groups designed to provide grouped subjects that you can either complete bookclub style or alone.
  2. Seminar Videos recorded during the Summer 2019 Chaincode Residency.
  3. Bitcoin Syllabus a collection of resources grouped by subjects.

Seminar Videos

Topic Link
Network partitioning & network level privacy attacks https://youtu.be/StnOVBbIpD8
Undocumented P2P Design of Bitcoin Core https://residency.chaincode.com/presentations/bitcoin/P2P_Design_Bitcoin_Core.pdf
Researching P2P privacy attacks https://youtu.be/qKNEUfnYue0
Security Models https://youtu.be/6gGcS4N5Rg4
Alternative UTXO Set Proposals https://youtu.be/F3BCP0wiYOw
Fee estimation https://youtu.be/PYA1f2xlIOM
Malleation Exercise https://github.com/dongcarl/malleability-exercise
Advanced SegWit https://youtu.be/JgNgnwF9hfY
Wallet Development in Bitcoin Core https://youtu.be/j0V8elTzYAA
Partially Signed Bitcoin Transactions https://github.com/achow101/residency-trezor-t/
Breaking Bitcoin Core https://residency.chaincode.com/presentations/bitcoin/Breaking_Bitcoin.pdf

Bitcoin Syllabus

Subject Topic Sources
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 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 Upgrading the protocol
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 Overview of Security Concerns,Danger! Bitcoin Threat Models Bitcoin’s Security Model: A Deep Dive, Weaknesses, Speed-Security Tradeoffs in Blockchain Protocols
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), Bitcoin Wizards Fraud Proof thread, Improving SPV security with PoW fraud proofs
Security Models Committed UTXO hashes UTXO set commitment hash
Security Models Assume UTXO Assume UTXO FAQs
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
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 libsecp State of Cryptography
Cryptography State of cryptography for blockchains beyond ECDSA and sha256 State of cryptography for blockchains beyond ECDSA and sha256
Cryptography On Bitcoin Security in the Presence of Broken Crypto Primitives On Bitcoin Security in the Presence of Broken Crypto Primitive
Cryptography zero knowledge proofs Introduction to SNARKs
Cryptography Bulletproofs How Bulletproofs Could Make Bitcoin Privacy Less Costly, Bulletproofs: Faster Rangeproofs and Much More, Bulletpoints on bulletproofs, From Zero Knowledge Proofs to Bulletproofs Paper, 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 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 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 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 SegWit and blocksize Understanding Segwit Block Size
SegWit Bech32 New address type for segwit addresses
SegWit Wallet Development Segregated Witness Wallet Development Guide
Wallet HD wallet Hierarchical Deterministic Wallets, Multi-Account Hierarchy for Deterministic Wallets, HD Wallets Explained: From High Level to Nuts and Bolts
Wallet Wallet BerkeleyDB key value store, data file, environment, logs, flushing Migration from Berkeley DB to LevelDB
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
Wallet Wallet rescan How to rescan / reindex wallet?
Wallet SegWit wallet development Segregated Witness Wallet Development Guide
Wallet Fees, fee estimation The Fee Market Explained, How wallets can handle transaction fees
Wallet Replace by Fee Opt-in Full Replace-by-Fee Signaling, Support for zero-confirmation transactions at Bitcoin ATM
Wallet 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
Scripts & Contracts Scripting & Transactions - P2PKH, P2SH, P2WPKH, P2WSH, Bech32 P2PKH, P2WPKH, P2SH, P2WSH, 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, The Bitcoin Big Bang
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 Confidential Transactions,Bitcoins with Homomorphic Value,Confidential Transactions,A Primer to Confidential Transactions, Finessing Commitments
Fungibility & Scalability Tumblebit TumbleBit: An Untrusted Bitcoin-Compatible Anonymous Payment Hub, Tumblebit, Tumblebit for the Tumble Curious
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 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 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
Bitcoin Core Contribution Debugging Bitcoin Core Debugging Bitcoin Core (video)

About

Bitcoin Protocol Development Curriculum

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published