Home

Awesome

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. You can find all of our published materials on our resources page.

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 an issue to keep this document relevant.

There are two portions to this curriculum:

  1. Study Groups designed to provide grouped subjects that you can either complete bookclub style or alone.
  2. Bitcoin Syllabus a collection of resources grouped by subjects.

Bitcoin Syllabus

SubjectTopicSources
IntroductionWhite PaperBitcoin: A Peer-to-Peer Electronic Cash System
IntroductionIf I'd Known What We Were Starting (2017)If I'd Known What We Were Starting
IntroductionBitcoin's Academic Pedigree (2017)Bitcoin's Academic Pedigree
IntroductionIntro to BlockchainWhat is blockchain anyway?
IntroductionIntro to BlockchainElectronic cash explained for developers video
IntroductionThe Economic Limits of Bitcoin and the BlockchainThe Economic Limits of Bitcoin and the Blockchain
IntroductionProof of workThe Anatomy of Proof-of-Work, Bitcoin Developer Reference
IntroductionDifficulty adjustmentWhat keeps the average block time at 10 minutes?
IntroductionByzantine generals problemThe Byzantine Generals Problem
IntroductionRunning a full nodeFull Node Question
History & Philosophy of BitcoinHistory of Bitcoin DevelopmentThe Incomplete History of Bitcoin Development
History & Philosophy of BitcoinWhat is consensus?Consensus Algorithms, Blockchain Technology and Bitcoin
Soft Forks & protocol overviewOn Unstoppability of SoftforksOn Unstoppability of Softforks
Soft Forks & protocol overviewExample soft forksSoftfork wiki page
Soft Forks & protocol overviewForking signaling and ActivationForks, Signaling, and Activation
Soft Forks & protocol overviewFork categorization (soft, hard, evil, etc.)Better Fork Terminology, Forced Soft Forks
Soft Forks & protocol overviewFlag day upgradesUASF: User Driven Protocol Development
Soft Forks & protocol overviewIsSuperMajority signalingBIP 65
Soft Forks & protocol overviewBIP9 signalingBIP9: versionbits In a Nutshell, BIP 9
Soft Forks & protocol overviewBIP148 and BIP149BIP 148, BIP 149, UASF BIP148 Scenarios and Game Theory, User Activated Soft Forks: the BIP 148 alternative
Soft Forks & protocol overviewBIP91BIP 91
Security ModelsOverviewSecurity 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 ModelsCheckpoints, assumevalid, minimumchainworkBitcoin's Diversity of Use-Cases and Security Models, Dave Harding Tweet on assumed valid blocks and minimum chainwork
Security ModelsDefining SPV and lightclientsLight Clients
Security ModelsBIP 37 (bloom filters)BIP 37, On the Privacy Provisions of Bloom Filters in Lightweight Bitcoin Clients
Security ModelsNeutrinoBIP 157, Neutrino: The Lighter Side of Lightning, Index for BIP 157 block filters, Exploring Neutrino
Security ModelsCommitted bloom filtersCommitted bloom filters for improved wallet performance and SPV security
Security ModelsFraud proofsFraud Proofs (2018), Fraud Proofs: Improving the ability of SPV clients to detect invalid chains (gist), Improving SPV security with PoW fraud proofs
Security ModelsCommitted UTXO hashesUTXO set commitment hash
Security ModelsAssume UTXOAssume UTXO FAQs, Assume UTXO (video)
Security ModelsUtreexoELI5: Utreexo, A description of research by Thaddeus Dryja
Security ModelsAlternative UTXO Set ProposalsAlternative UTXO Set Proposals seminar video
MiningPoisson distribution/Progress-free-nessThe Poisson Distribution and Poisson Process Explained
MiningBlock arrivals in the Bitcoin blockchainBlock arrivals in the Bitcoin blockchain
MiningFee SnipingnSequence and opt-in ReplaceByFee
MiningSelfish MiningOn 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
Mining51% attacksBitcoin’s Attack Vectors: 51% Attacks
MiningBetterHashBetterHash Mining Protocol(s)
MiningNo Reward Mining OverviewOn the Instability of Bitcoin Without the Block Reward
MiningPool overviewAnalysis of Bitcoin Pooled Mining Reward Systems
MiningPool HoppingPay Per Last (luck) N Shares - PPLNS
MiningPPS As a Real-World Business SolutionPooled mining
MiningTrustless PoolsP2Pool
MiningPayment Channel PayoutsPayment Channel Payouts: An Idea for Improving P2Pool Scalability
MiningASICBoostAsicBoost: A Speedup for Bitcoin Mining, The Problem with ASICBOOST, Inhibiting a covert attack on the Bitcoin POW function
MiningBCH Mining/Difficulty AdjustmentBringing Stability to Bitcoin Cash Difficulty Adjustments, Bitcoin Cash Difficulty Adjustments, Difficulty Adjustment Algorithm Update
MiningTumblebitTumbleBit: An Untrusted Bitcoin-Compatible Anonymous Payment Hub
AttacksDust attacksDust Attacks
Consensus approachesOverviewOn Consensus
Consensus approachesGHOSTThe GHOSTDAG protocol, Secure High-Rate Transaction Processing in Bitcoin, Modified GHOST Implementation
Consensus approachesBraidingBraiding the blockchain
Consensus approachesByzantine Fault ToleranceByzantine Fault Tolerance
Consensus approachesBitcoin-NG/PoW+BFTBitcoin-NG: A Scalable Blockchain Protocol
Consensus approachesProof of StakeProof of Work & Proof of Stake, Proof-of-Stake & the Wrong Engineering Mindset
Consensus approachesSidechainsEnabling Blockchain Innovations with Pegged Sidechains, Sidechains, Proof-of-Work Sidechains
Consensus Changes & Hard ForksHistoryA complete history of Bitcoin’s consensus forks, March 2013 Chain Fork Post-Mortem
Consensus Changes & Hard ForksExtension blocksAuxiliary block: Increasing max block size with softfork, How Bitcoin Extension Blocks Are Backward Compatible — and How They’re Not
Consensus Changes & Hard ForksHard forks: Potential dangersNetwork Partitioning
Consensus Changes & Hard ForksReplay protectionReplay Attacks Explained, How to Protect Against Replay Attacks, 2017_optin_replay code on btc1
Consensus Changes & Hard ForksWipeout protection
Consensus Changes & Hard ForksLight nodesLightweight node wiki page
Consensus Changes & Hard ForksCurrent research (spoonnet, etc)Spoonnet: another experimental hardfork
CryptographyThe 3 Seminal Events In CryptographyThe 3 Seminal Events In Cryptography
CryptographyAn Overview of Public Key CryptographyAn Overview of Public Key Cryptography
CryptographyFinite fields, Elliptic Curves, ECDSA, SchnorrFinite fields, Elliptic Curves, ECDSA, Schnorr Cryptography, Elliptic Curve Cryptography Explained
CryptographyBitcoin, Chance and RandomnessBitcoin, Chance and Randomness
CryptographyOn Bitcoin Security in the Presence of Broken Crypto PrimitivesOn Bitcoin Security in the Presence of Broken Crypto Primitive
CryptographySignatures and zero-knowledge proofsState of Cryptography - beyond ECDSA and sha256
Cryptographyzero knowledge proofsIntroduction to SNARKs
CryptographyBulletproofsHow Bulletproofs Could Make Bitcoin Privacy Less Costly, Bulletproofs: Faster Rangeproofs and Much More, Building on Bulletproofs
CryptographyCommitment schemes; pedersen commitmentsCommitment schemes, Non-Interactive and Information- Theoretic Secure Verifiable Secret Sharing
CryptographySchnorrIntroduction to Schnorr Signatures (video), Simple Schnorr Multi-Signatures with Applications to Bitcoin, Liars, cheats, scammers and the Schnorr signature
CryptographyDiffie-HellmanDiffie-Hellman Key Exchange: A Non-mathematician’s explanation
CryptographyRing SignaturesRing signatures
CryptographyRSAHow RSA Works With Examples
TransactionsUnderstanding a Raw Bitcoin TransactionUnderstanding a Raw Bitcoin Transaction
TransactionsUnderstanding a Raw Bitcoin Transaction the hard wayBitcoins the hard way: Using the raw Bitcoin protocol
TransactionsWorking with TransactionsWorking with transactions (bitcoinj)
TransactionsTransaction formatIsMine function in Bitcoin Core
TransactionsScriptBitcoin Developer Reference, Advanced Bitcoin Scripting: Transactions & Multisig
TransactionsSigning transactionsWhy the signature is always 65 (1+32+32) bytes long?
TransactionsStandardnessBitcoin Developer Reference, The Bitcoin Non-standard, Definition of Standardness
Transactions0-conf transactionsSupport for zero-confirmation transactions at Bitcoin ATM, Solving the 0-conf problem using forfeits
TransactionsPartially Signed Bitcoin TransactionsPartially Signed Bitcoin Transactions (video), BIP 174, Partially Signed Bitcoin Transactions, PSBT Howto for Bitcoin Core, Partially Signed Bitcoin Transaction (PSBT) format
TransactionsSIGHASH_NOINPUTBIP sighash_noinput
TransactionsCompacted Transactions
TransactionsMempoolHow the Mempool Works, Transaction Pools, Bitcoin Peer-to-Peer Network
BlocksMerkle TreesBitcoin Developer Reference, Weaknesses in Bitcoin’s Merkle Root Construction
BlocksData structures in validationValidation costs and incentives
BlocksRe-orgsHandling Re-orgs & Forks
BlocksPruningBlock file pruning, Add autoprune functionality PR #5863
SegWitSegWit background and historyUnderstanding 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
SegWitAdvanced SegWitAdvanced SegWit seminar video
SegWitSegWit and scalabiltySegregated Witness and deploying it for Bitcoin (2015)
SegWitTx malleabilityTransaction 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
SegWitTx malleabilityMalleation code exercise repo
SegWitSegWit and blocksizeUnderstanding Segwit Block Size
SegWitBech32New address type for segwit addresses
SegWitWallet DevelopmentSegregated Witness Wallet Development Guide
WalletWallet Development in Bitcoin CoreWallet Development in Bitcoin Core seminar video
WalletHD walletHierarchical Deterministic Wallets, Multi-Account Hierarchy for Deterministic Wallets, HD Wallets Explained: From High Level to Nuts and Bolts
WalletNative Descriptor WalletsNative Descriptor Wallets
WalletWallet BerkeleyDB key value store, data file, environment, logs, flushingMigration from Berkeley DB to LevelDB, (also see BIP 50)
WalletWallet key types: Regular, watch-only, hdWallets and Accounts and Keys, Oh My!
WalletWallet key management: Keypools, key metadata, address metadataUnderstanding keypool in Bitcoin Core, Understanding the Gap Limit
WalletWallet rescanHow to rescan / reindex wallet?
WalletFeesThe Fee Market Explained, How wallets can handle transaction fees
WalletFee estimationFee estimation code exercise
WalletReplace by FeeOpt-in Full Replace-by-Fee Signaling, Support for zero-confirmation transactions at Bitcoin ATM
WalletCoin selectionUnspent Management and Coin Selection, Coin Selection, Coin Selection (Scaling 2016), An Evaluation of Coin Selection Strategies
WalletHardware wallets with Bitcoin coreUsing your hardware wallet with Bitcoin Core
Scripts & ContractsScripting & TransactionsScripts - general & simple video
Scripts & ContractsScripting & TransactionsBitcoin Script: Past and Future video
Scripts & ContractsScripting & Transactions - P2PKH, P2SH, P2WPKH, P2WSH, Bech32P2PKH, P2WPKH, P2SH, P2WSH, Dissecting a P2PKH Bitcoin Transaction down to the last Byte, Bitcoin Multisig and P2SH Transactions
Scripts & ContractsScript DescriptorsScript descriptors, Support for Output Descriptors in Bitcoin Core
Scripts & ContractsP2EPImproving Privacy Using Pay-to-EndPoint
Scripts & ContractsSmart Contracts on a Dumb Chain; MimbleWimbleBehind MimbleWimble
Scripts & ContractsSmart Contracts on a Dumb Chain; scriptless scriptsElementsProject/scriptless-scripts, Scriptless Scripts, Scriptless scripts, adaptor signatures and their applications
Scripts & ContractsPayment ChannelsUnderstanding Payment Channels, Bitcoin Protocol Design: Payment Channels Revisited, Bitcoin script v2.0
Scripts & ContractsMASTWhat is a Bitcoin Merklized Abstract Syntax Tree (MAST)?, Merkleized abstract syntax trees (MAST), MAST Discussion
Scripts & ContractsZK SNARKSSNARKS, Introduction to SNARKs, STARKs: Proofs with Polynomials
Scripts & ContractsZK STARKSScalable, 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 & ContractsDiscreet Log ContractsDiscreet Log Contracts, Discreet Log Contracts: invisible smart contracts on the Bitcoin blockchain
Scripts & ContractsMiniscriptMiniscript, Policy to Miniscript compiler
Scripts & ContractsState of scriptThe State of Script (2018)
Fungibility & ScalabilityOverviewThe current state of Bitcoin fungibility (2019)
Fungibility & ScalabilityOn Scaling Decentralized BlockchainsThe fundamental tradeoff, On Scaling Decentralized Blockchains
Fungibility & ScalabilityWhy fungibility is importantFungibility And Scalability, Fungibility overview, Fungibility as an Attack Vectors:
Fungibility & ScalabilityPrivacyDifferent 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 & ScalabilityChain analysisChainalysis Live Demo, Let's talk about ChainAnalysis
Fungibility & ScalabilityWallet fingerprintingWallet Fingerprinting (wiki)
Fungibility & ScalabilityTransaction origin analysisA Fistful of Bitcoins: Characterizing Payments Among Men with No Names
Fungibility & ScalabilityCoinjoinCoinjoin wiki page
Fungibility & ScalabilityConfidential TransactionsBitcoins with Homomorphic Value, Confidential Transactions, A Primer to Confidential Transactions
Fungibility & ScalabilityTumblebitTumbleBit: An Untrusted Bitcoin-Compatible Anonymous Payment Hub, Tumblebit
Fungibility & ScalabilityCoin JumbleCoin Jumble
Fungibility & ScalabilitySchnorrSchnorr Signatures for Bitcoin - BPASE '18, Flipping the scriptless script on Schnorr, Schnorr Signatures
Fungibility & ScalabilityBellare-NevenMulti-Signatures in the Plain Public-Key Model and a General Forking Lemma
Fungibility & ScalabilityThreshold SchemesThreshold cryptosystem, Threshold signatures and accountability
Fungibility & ScalabilitySignature aggregationSignature aggregation for improved scalablity, Schnorr signatures and signature aggregation, BLS Multi-Signatures With Public-Key Aggregation
Fungibility & ScalabilityMuSigKey Aggregation for Schnorr Signatures, MuSig: A New Multisignature Standard, Simple Schnorr Multi-Signatures with Applications to Bitcoin
Fungibility & ScalabilityTaprootTaproot and Policy (video), Taproot and graftroot, Taproot: SegWit version 1 output spending rules
Fungibility & ScalabilityGraftrootGraftroot: Private and efficient surrogate scripts under the taproot assumption
The P2P NetworkOverview of the p2p networkBitcoin Peer-to-Peer Network
The P2P NetworkOverview of the p2p networkAdversarial Thinking in the Peer-to-Peer Network - first 41:29
The P2P NetworkP2P DesignUndocumented P2P Design of Bitcoin Core
The P2P NetworkTransaction propagationOn Bitcoin and Red Balloons (incentives)
The P2P NetworkHeaders-first sync'ingHeaders-First Sync (wiki)
The P2P NetworkAdvances in Block propagationAdvances in block propagation
The P2P NetworkCompact blocksCompact Blocks FAQ, Compact Block Relay
The P2P NetworkRelay networks, FIBRERelay networks, The Future of The Bitcoin Relay Network, What is FIBRE?
The P2P NetworkDeanonymization in the Bitcoin P2P NetworkDeanonymization in the Bitcoin P2P Network
The P2P NetworkDandelionDandelion: 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 NetworkPeer discoveryNetwork Discovery
The P2P NetworkTopology DiscoveryDiscovering Bitcoin’s Public Topology and Influential Nodes, TxProbe: Discovering Bitcoin's Network Topology Using Orphan Transactions
The P2P NetworkPeer connectivity
The P2P NetworkBGP HijackHijacking Bitcoin: Routing Attacks on Cryptocurrencies
The P2P NetworkNetwork partitioning & network level privacy attacksNetwork partitioning & network level privacy attacks seminar video
The P2P NetworkResearching P2P privacy attacksResearching P2P privacy attacks seminar video
The P2P NetworkEclipse 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 NetworkDenial-of-Service conceptsDenial of Service (DoS) attacks wiki, Network Splits, "High horsepower" attacks
The P2P NetworkDenial-of-Service PreventionDenial of Service (DoS) Prevention, DoS countermeasures may facilitate network fragmentation attacks
The P2P NetworkSPV nodesFuture of SPV tech
The P2P NetworkMiniSketchMinisketch: Reducing Bitcoin Node Bandwidth Requirements, Minisketch: an optimized library for BCH-based set reconciliation
Chain Forks and FailuresBIP 66 Fork and spy miningStrict DER signatures, What is SPV mining, and how did it (inadvertently) cause the fork after BIP66 was activated?
Bitcoin Core ArchitectureArchitecture overviewAn overview of Bitcoin Core architecture (video)
BitcoinLearning-Bitcoin-from-the-Command-LineProgramming with Bitcoin Core and Lightning
Bitcoin Core ContributionContributing to CoreContributing to Bitcoin Core, Introduction to Bitcoin Development, Contributing to Bitcoin Core, a personal account, Onboarding to Bitcoin Core
Bitcoin Core ContributionDebugging Bitcoin CoreDebugging Bitcoin Core (video)