Skip to main content
Link
Menu
Expand
(external link)
Document
Search
Copy
Copied
Bitcoin Core Onboarding
Overview and Development Process
Contributor journeys
Development workflow
Reviewing code
Contributing code
Testing your contributions
Debugging Bitcoin Core
Researching past changes
Building Bitcoin Core
Codebase documentation
Using a test network
Manual testing of a functional test
Getting started with development
Communication channels
PR Maturation
Backports
Reproducible builds
Project roles
BIPs
Project statistics
Exercises
Architecture
General design principles
Overview of bitcoind
Tests overview
Threads
Library structure
Source code organization
Userspace files
Deep technical dive
Subtrees and PIMPL
Consensus and Validation
Locating consensus code
Consensus model
Consensus vs Policy
Consensus bugs
Making forking changes
Fork wish lists
Consensus specification
Consensus libraries
Hardcoded consensus values
Transaction Validation
Single transactions
Multiple transactions
Input validation
Transactions from blocks
Multiple chains
Responsible disclosure
Consensus exercises
Wallet
Wallet Database
Wallet Encryption
Transaction tracking
Calculating a balance
Coin selection
Transaction creation and signing
Wallet interfaces
Wallet intialization
Wallet locks
Wallet locks
CWallet
ScriptPubKeyManagers
Keys in the wallet
Identifying wallet transactions
Constructing transactions
Multiwallet
Wallet exercises
GUI
Motivation for a GUI
Building the GUI
GUI initialization
Bitcoin design
QML GUI
Testing QT
P2P
Design philosophy
P2P attacks
Node components
NetGroupManager
Addrman
Bootstrapping
Message relay
Address relay
Transaction relay
Block relay
Relay preferences
P2P encryption
Networking contribution to entropy
Peer state
P2P violations
Testing P2P changes
P2P exercises
Mempool
Mempool terminology
Mempool purpose
Mempool lifecycle
Addition and removal of transactions
Mempool unbroadcast set
Transaction format in the mempool
Package relay
Pinning attacks
Script
Validating scripts
Transaction signing
Scripts on the CLI
Script Appendix
Build system
RPC / REST / ZMQ
Appendix
Glossary
P2P
Node components
Node P2P components
Figure 1. Node P2P components