Project type: L1

Getting Started — Bitcoin
# Learn Bitcoin and start building Bitcoin-based applications.
Developer Guides »
# Getting Started¶
The site aims to provide the information you need to understand
Bitcoin and start building Bitcoin-based applications. To make the best use of
this documentation, make sure you’re running a node 
For technical support, we recommend Bitcoin Stack Exchange For errors or
suggestions related to this documentation, please open an issue on GitHub 
## Acknowledgments¶
This documentation would not be possible without the many contributions to the
Bitcoin project over the years from core developers and other people. A very
special thanks, however, goes to David Harding who in 2014 helped lead the
effort to compose and bring together a significant amount of the material found
here. Also, to Cornelius Schumacher for envisioning new ways to extend the
developer documentation that led to this site.
- Proof Of Work
- Block Height And Forking
- Consensus Rule Changes
- P2PKH Script Validation
* Pay To Public Key Hash (P2PKH)
* Pay To Script Hash (P2SH)
- Signature Hash Types
- Locktime And Sequence Number
- Transaction Fees And Change
- Avoiding Key Reuse
- Escrow And Arbitration
* Private Key Formats
+ Wallet Import Format (WIF)
+ Mini Private Key Format
* Public Key Formats
* Hierarchical Deterministic Key Creation
+ Storing Root Seeds
- Disbursing Income (Limiting Forex Risk)
* Last In, First Out (LIFO)
* First In, First Out (FIFO)
- Rebilling Recurring Payments
- Simplified Payment Verification (SPV)
* Potential SPV Weaknesses
* Application Of Bloom Filters
- Connecting To Peers
- Initial Block Download
+ Blocks-First Advantages & Disadvantages
- Not A Specification
- Raw Transaction Format
* TxIn: A Transaction Input (Non-Coinbase)
* Outpoint: The Specific Part Of A Specific Output
* TxOut: A Transaction Output
* Coinbase Input: The Input Of The First Transaction In A Block
+ CompactSize Unsigned Integers
- Deterministic Wallet Formats
* Type 1: Single Chain Wallets
* Type 2: Hierarchical Deterministic (HD) Wallets
- Constants And Defaults
+ Parsing A MerkleBlock Message
+ Creating A MerkleBlock Message
+ RPC API Reference
+ Argument #1 - blockhash
+ Argument #2 - verbosity
+ Result (for verbosity = 0)
+ Result (for verbosity = 1)
+ Result (for verbosity = 2)
+ Argument #1 - blockhash
+ Argument #2 - filtertype
+ Argument #1 - height
+ Argument #1 - blockhash
+ Argument #2 - verbose
+ Result (for verbose = true)
+ Result (for verbose=false)
+ Argument #1 - hash_or_height
+ Argument #2 - stats
+ Argument #1 - nblocks
+ Argument #2 - blockhash
+ Argument #1 - txid
+ Argument #2 - verbose
+ Result (for verbose = false)
+ Result (for verbose = true)
+ Argument #1 - txid
+ Argument #2 - verbose
+ Result (for verbose = false)
+ Result (for verbose = true)
+ Argument #1 - txid
+ Argument #1 - verbose
+ Argument #2 - mempool_sequence
+ Result (for verbose = false)
+ Result (for verbose = true)
+ Result (for verbose = false and mempool_sequence = true)
+ Argument #1 - txid
+ Argument #2 - n
+ Argument #3 - include_mempool
+ Argument #1 - txids
+ Argument #2 - blockhash
+ Argument #1 - hash_type
+ Argument #1 - blockhash
+ Argument #1 - height
+ Argument #1 - action
+ Argument #2 - scanobjects
+ Argument #1 - checklevel
+ Argument #2 - nblocks
+ Argument #1 - proof
+ Argument #1 - mode
+ Result (mode “stats”)
+ Result (mode “mallocinfo”)
+ Argument #1 - command
+ Argument #1 - include
+ Argument #2 - exclude
+ Argument #1 - output
+ Argument #2 - transactions
+ Argument #1 - nblocks
+ Argument #2 - address
+ Argument #3 - maxtries
+ Argument #1 - num_blocks
+ Argument #2 - descriptor
+ Argument #3 - maxtries
+ Argument #1 - template_request
+ Argument #1 - nblocks
+ Argument #2 - height
+ Argument #1 - txid
+ Argument #2 - dummy
+ Argument #3 - fee_delta
+ Argument #1 - hexdata
+ Argument #2 - dummy
+ Argument #1 - hexdata
+ Argument #1 - node
+ Argument #2 - command
+ Argument #1 - address
+ Argument #2 - nodeid
+ Argument #1 - node
+ Argument #1 - count
+ Argument #1 - subnet
+ Argument #2 - command
+ Argument #3 - bantime
+ Argument #4 - absolute
+ Argument #1 - state
+ Argument #1 - psbt
+ Argument #1 - txs
+ Argument #1 - txs
+ Argument #1 - hexstring
+ Argument #2 - permitsigdata
+ Argument #3 - iswitness
+ Argument #1 - inputs
+ Argument #2 - outputs
+ Argument #3 - locktime
+ Argument #4 - replaceable
+ Argument #1 - inputs
+ Argument #2 - outputs
+ Argument #3 - locktime
+ Argument #4 - replaceable
+ Argument #1 - psbt
+ Argument #1 - hexstring
+ Argument #2 - iswitness
+ Argument #1 - hexstring
+ Argument #1 - psbt
+ Argument #2 - extract
+ Argument #1 - hexstring
+ Argument #2 - options
+ Argument #3 - iswitness
+ Argument #1 - txid
+ Argument #2 - verbose
+ Argument #3 - blockhash
+ Result (if verbose is not set or set to false)
+ Result (if verbose is set to true)
+ Argument #1 - txs
+ Argument #1 - hexstring
+ Argument #2 - maxfeerate
+ Argument #1 - hexstring
+ Argument #2 - privkeys
+ Argument #3 - prevtxs
+ Argument #4 - sighashtype
+ Argument #1 - rawtxs
+ Argument #2 - maxfeerate
+ Argument #1 - psbt
+ Argument #2 - descriptors
+ Argument #1 - nrequired
+ Argument #2 - keys
+ Argument #3 - address_type
+ Argument #1 - descriptor
+ Argument #2 - range
+ Argument #1 - conf_target
+ Argument #2 - estimate_mode
+ Argument #1 - descriptor
+ Argument #1 - index_name
+ Argument #1 - privkey
+ Argument #2 - message
+ Argument #1 - address
+ Argument #1 - address
+ Argument #2 - signature
+ Argument #3 - message
+ Argument #1 - txid
+ Argument #1 - nrequired
+ Argument #2 - keys
+ Argument #3 - label
+ Argument #4 - address_type
+ Argument #1 - destination
+ Argument #1 - txid
+ Argument #2 - options
+ Argument #1 - wallet_name
+ Argument #2 - disable_private_keys
+ Argument #3 - blank
+ Argument #4 - passphrase
+ Argument #5 - avoid_reuse
+ Argument #6 - descriptors
+ Argument #7 - load_on_startup
+ Argument #1 - address
+ Argument #1 - filename
+ Argument #1 - passphrase
+ Argument #1 - label
+ Argument #1 - address
+ Argument #1 - dummy
+ Argument #2 - minconf
+ Argument #3 - include_watchonly
+ Argument #4 - avoid_reuse
+ Argument #1 - label
+ Argument #2 - address_type
+ Argument #1 - address_type
+ Argument #1 - address
+ Argument #2 - minconf
+ Argument #1 - label
+ Argument #2 - minconf
+ Argument #1 - txid
+ Argument #2 - include_watchonly
+ Argument #3 - verbose
+ Argument #1 - address
+ Argument #2 - label
+ Argument #3 - rescan
+ Argument #4 - p2sh
+ Argument #1 - requests
+ Argument #1 - requests
+ Argument #2 - options
+ Argument #1 - privkey
+ Argument #2 - label
+ Argument #3 - rescan
+ Argument #1 - rawtransaction
+ Argument #2 - txoutproof
+ Argument #1 - pubkey
+ Argument #2 - label
+ Argument #3 - rescan
+ Argument #1 - filename
+ Argument #1 - newsize
+ Argument #1 - purpose
+ Argument #1 - minconf
+ Argument #2 - include_empty
+ Argument #3 - include_watchonly
+ Argument #4 - address_filter
+ Argument #1 - minconf
+ Argument #2 - include_empty
+ Argument #3 - include_watchonly
+ Argument #1 - blockhash
+ Argument #2 - target_confirmations
+ Argument #3 - include_watchonly
+ Argument #4 - include_removed
+ Argument #1 - label
+ Argument #2 - count
+ Argument #3 - skip
+ Argument #4 - include_watchonly
+ Argument #1 - minconf
+ Argument #2 - maxconf
+ Argument #3 - addresses
+ Argument #4 - include_unsafe
+ Argument #5 - query_options
+ Argument #1 - filename
+ Argument #2 - load_on_startup
+ Argument #1 - unlock
+ Argument #2 - transactions
+ Argument #1 - txid
+ Argument #2 - options
+ Argument #1 - txid
+ Argument #1 - start_height
+ Argument #2 - stop_height
+ Argument #1 - outputs
+ Argument #2 - conf_target
+ Argument #3 - estimate_mode
+ Argument #4 - fee_rate
+ Argument #5 - options
+ Argument #1 - dummy
+ Argument #2 - amounts
+ Argument #3 - minconf
+ Argument #4 - comment
+ Argument #5 - subtractfeefrom
+ Argument #6 - replaceable
+ Argument #7 - conf_target
+ Argument #8 - estimate_mode
+ Argument #9 - fee_rate
+ Result (if verbose is not set or set to false)
+ Result (if verbose is set to true)
+ Argument #1 - address
+ Argument #2 - amount
+ Argument #3 - comment
+ Argument #4 - comment_to
+ Argument #5 - subtractfeefromamount
+ Argument #6 - replaceable
+ Argument #7 - conf_target
+ Argument #8 - estimate_mode
+ Argument #9 - avoid_reuse
+ Result (if verbose is not set or set to false)
+ Result (if verbose is set to true)
+ Argument #1 - newkeypool
+ Argument #2 - seed
+ Argument #1 - address
+ Argument #2 - label
+ Argument #1 - amount
+ Argument #1 - flag
+ Argument #2 - value
+ Argument #1 - address
+ Argument #2 - message
+ Argument #1 - hexstring
+ Argument #2 - prevtxs
+ Argument #3 - sighashtype
+ Argument #1 - wallet_name
+ Argument #2 - load_on_startup
+ Argument #1 - version
+ Argument #1 - inputs
+ Argument #2 - outputs
+ Argument #3 - locktime
+ Argument #4 - options
+ Argument #5 - bip32derivs
+ Argument #1 - passphrase
+ Argument #2 - timeout
+ Argument #1 - oldpassphrase
+ Argument #2 - newpassphrase
+ Argument #1 - psbt
+ Argument #2 - sign
+ Argument #3 - sighashtype
+ Argument #4 - bip32derivs
* Simple Raw Transaction
* Complex Raw Transaction
* PaymentRequest & PaymentDetails
- Creating A Bloom Filter
- Evaluating A Bloom Filter
- Retrieving A MerkleBlock
- Parsing A MerkleBlock
* How it works 
* You need to know 
* Running a full node 
© Copyright Bitcoin Project 2009-2020.
Use this QR code or address below