Getting Started — Bitcoin
Welcome
Learn Bitcoin and start building Bitcoin-based applications.
Developer Guides
Reference
Examples
Glossary
Bitcoin
Getting Started
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.
Developer Guides
Block Chain
Introduction
Proof Of Work
Block Height And Forking
Transaction Data
Consensus Rule Changes
Detecting Forks
Transactions
Introduction
P2PKH Script Validation
P2SH Scripts
Standard Transactions
Pay To Public Key Hash (P2PKH)
Pay To Script Hash (P2SH)
Multisig
Pubkey
Null Data
Non-Standard Transactions
Signature Hash Types
Locktime And Sequence Number
Transaction Fees And Change
Avoiding Key Reuse
Transaction Malleability
Contracts
Introduction
Escrow And Arbitration
Micropayment Channel
CoinJoin
Wallets
Introductions
Wallet Programs
Full-Service Wallets
Signing-Only Wallets
Offline Wallets
Hardware Wallets
Distributing-Only Wallets
Wallet Files
Private Key Formats
Wallet Import Format (WIF)
Mini Private Key Format
Public Key Formats
Hierarchical Deterministic Key Creation
Hardened Keys
Storing Root Seeds
Loose-Key Wallets
Payment Processing
Introduction
Pricing Orders
Requesting Payments
Plain Text
bitcoin: URI
QR Codes
Payment Protocol
Verifying Payment
Issuing Refunds
Disbursing Income (Limiting Forex Risk)
Merge Avoidance
Last In, First Out (LIFO)
First In, First Out (FIFO)
Rebilling Recurring Payments
Operating Modes
Introduction
Full Node
Simplified Payment Verification (SPV)
Potential SPV Weaknesses
Bloom Filters
Application Of Bloom Filters
Future Proposals
P2P Network
Introduction
Peer Discovery
Connecting To Peers
Initial Block Download
Blocks-First
Blocks-First Advantages & Disadvantages
Headers-First
Block Broadcasting
Orphan Blocks
Transaction Broadcasting
Memory Pool
Misbehaving Nodes
Alerts
Mining
Introduction
Solo Mining
Pool Mining
Block Prototypes
getwork RPC
getblocktemplate RPC
Stratum
Reference
Introduction
Not A Specification
Block Chain
Block Headers
Block Versions
Merkle Trees
Target nBits
Serialized Blocks
Transactions
OpCodes
Address Conversion
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
Wallets
Deterministic Wallet Formats
Type 1: Single Chain Wallets
Type 2: Hierarchical Deterministic (HD) Wallets
P2P Network
Constants And Defaults
Protocol Versions
Message Headers
Data Messages
Block
GetBlocks
GetData
GetHeaders
Headers
Inv
MemPool
MerkleBlock
Parsing A MerkleBlock Message
Creating A MerkleBlock Message
CmpctBlock
SendCmpct
GetBlockTxn
BlockTxn
NotFound
Tx
Control Messages
Addr
Addrv2
Alert
FeeFilter
FilterAdd
FilterClear
FilterLoad
GetAddr
Ping
Pong
Reject
SendHeaders
SendAddrv2
VerAck
Version
RPC API Reference
Blockchain RPCs
getbestblockhash
Result
Examples
getblock
Argument #1 - blockhash
Argument #2 - verbosity
Result (for verbosity = 0)
Result (for verbosity = 1)
Result (for verbosity = 2)
Examples
getblockchaininfo
Result
Examples
getblockcount
Result
Examples
getblockfilter
Argument #1 - blockhash
Argument #2 - filtertype
Result
Examples
getblockhash
Argument #1 - height
Result
Examples
getblockheader
Argument #1 - blockhash
Argument #2 - verbose
Result (for verbose = true)
Result (for verbose=false)
Examples
getblockstats
Argument #1 - hash_or_height
Argument #2 - stats
Result
Examples
getchaintips
Result
Examples
getchaintxstats
Argument #1 - nblocks
Argument #2 - blockhash
Result
Examples
getdifficulty
Result
Examples
getmempoolancestors
Argument #1 - txid
Argument #2 - verbose
Result (for verbose = false)
Result (for verbose = true)
Examples
getmempooldescendants
Argument #1 - txid
Argument #2 - verbose
Result (for verbose = false)
Result (for verbose = true)
Examples
getmempoolentry
Argument #1 - txid
Result
Examples
getmempoolinfo
Result
Examples
getrawmempool
Argument #1 - verbose
Argument #2 - mempool_sequence
Result (for verbose = false)
Result (for verbose = true)
Result (for verbose = false and mempool_sequence = true)
Examples
gettxout
Argument #1 - txid
Argument #2 - n
Argument #3 - include_mempool
Result
Examples
gettxoutproof
Argument #1 - txids
Argument #2 - blockhash
Result
gettxoutsetinfo
Argument #1 - hash_type
Result
Examples
preciousblock
Argument #1 - blockhash
Result
Examples
pruneblockchain
Argument #1 - height
Result
Examples
savemempool
Result
Examples
scantxoutset
Argument #1 - action
Argument #2 - scanobjects
Result
verifychain
Argument #1 - checklevel
Argument #2 - nblocks
Result
Examples
verifytxoutproof
Argument #1 - proof
Result
Control RPCs
getmemoryinfo
Argument #1 - mode
Result (mode “stats”)
Result (mode “mallocinfo”)
Examples
getrpcinfo
Result
Examples
help
Argument #1 - command
Result
logging
Argument #1 - include
Argument #2 - exclude
Result
Examples
stop
Result
uptime
Result
Examples
Generating RPCs
generateblock
Argument #1 - output
Argument #2 - transactions
Result
Examples
generatetoaddress
Argument #1 - nblocks
Argument #2 - address
Argument #3 - maxtries
Result
Examples
generatetodescriptor
Argument #1 - num_blocks
Argument #2 - descriptor
Argument #3 - maxtries
Result
Examples
Mining RPCs
getblocktemplate
Argument #1 - template_request
Result
Examples
getmininginfo
Result
Examples
getnetworkhashps
Argument #1 - nblocks
Argument #2 - height
Result
Examples
prioritisetransaction
Argument #1 - txid
Argument #2 - dummy
Argument #3 - fee_delta
Result
Examples
submitblock
Argument #1 - hexdata
Argument #2 - dummy
Result
Examples
submitheader
Argument #1 - hexdata
Result
Examples
Network RPCs
addnode
Argument #1 - node
Argument #2 - command
Result
Examples
clearbanned
Result
Examples
disconnectnode
Argument #1 - address
Argument #2 - nodeid
Result
Examples
getaddednodeinfo
Argument #1 - node
Result
Examples
getconnectioncount
Result
Examples
getnettotals
Result
Examples
getnetworkinfo
Result
Examples
getnodeaddresses
Argument #1 - count
Result
Examples
getpeerinfo
Result
Examples
listbanned
Result
Examples
ping
Result
Examples
setban
Argument #1 - subnet
Argument #2 - command
Argument #3 - bantime
Argument #4 - absolute
Result
Examples
setnetworkactive
Argument #1 - state
Result
Rawtransactions RPCs
analyzepsbt
Argument #1 - psbt
Result
Examples
combinepsbt
Argument #1 - txs
Result
Examples
combinerawtransaction
Argument #1 - txs
Result
Examples
converttopsbt
Argument #1 - hexstring
Argument #2 - permitsigdata
Argument #3 - iswitness
Result
Examples
createpsbt
Argument #1 - inputs
Argument #2 - outputs
Argument #3 - locktime
Argument #4 - replaceable
Result
Examples
createrawtransaction
Argument #1 - inputs
Argument #2 - outputs
Argument #3 - locktime
Argument #4 - replaceable
Result
Examples
decodepsbt
Argument #1 - psbt
Result
Examples
decoderawtransaction
Argument #1 - hexstring
Argument #2 - iswitness
Result
Examples
decodescript
Argument #1 - hexstring
Result
Examples
finalizepsbt
Argument #1 - psbt
Argument #2 - extract
Result
Examples
fundrawtransaction
Argument #1 - hexstring
Argument #2 - options
Argument #3 - iswitness
Result
Examples
getrawtransaction
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)
Examples
joinpsbts
Argument #1 - txs
Result
Examples
sendrawtransaction
Argument #1 - hexstring
Argument #2 - maxfeerate
Result
Examples
signrawtransactionwithkey
Argument #1 - hexstring
Argument #2 - privkeys
Argument #3 - prevtxs
Argument #4 - sighashtype
Result
Examples
testmempoolaccept
Argument #1 - rawtxs
Argument #2 - maxfeerate
Result
Examples
utxoupdatepsbt
Argument #1 - psbt
Argument #2 - descriptors
Result
Examples
Util RPCs
createmultisig
Argument #1 - nrequired
Argument #2 - keys
Argument #3 - address_type
Result
Examples
deriveaddresses
Argument #1 - descriptor
Argument #2 - range
Result
Examples
estimatesmartfee
Argument #1 - conf_target
Argument #2 - estimate_mode
Result
Examples
getdescriptorinfo
Argument #1 - descriptor
Result
Examples
getindexinfo
Argument #1 - index_name
Result
Examples
signmessagewithprivkey
Argument #1 - privkey
Argument #2 - message
Result
Examples
validateaddress
Argument #1 - address
Result
Examples
verifymessage
Argument #1 - address
Argument #2 - signature
Argument #3 - message
Result
Examples
Wallet RPCs
abandontransaction
Argument #1 - txid
Result
Examples
abortrescan
Result
Examples
addmultisigaddress
Argument #1 - nrequired
Argument #2 - keys
Argument #3 - label
Argument #4 - address_type
Result
Examples
backupwallet
Argument #1 - destination
Result
Examples
bumpfee
Argument #1 - txid
Argument #2 - options
Result
Examples
createwallet
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
Result
Examples
dumpprivkey
Argument #1 - address
Result
Examples
dumpwallet
Argument #1 - filename
Result
Examples
encryptwallet
Argument #1 - passphrase
Result
Examples
getaddressesbylabel
Argument #1 - label
Result
Examples
getaddressinfo
Argument #1 - address
Result
Examples
getbalance
Argument #1 - dummy
Argument #2 - minconf
Argument #3 - include_watchonly
Argument #4 - avoid_reuse
Result
Examples
getbalances
Result
Examples
getnewaddress
Argument #1 - label
Argument #2 - address_type
Result
Examples
getrawchangeaddress
Argument #1 - address_type
Result
Examples
getreceivedbyaddress
Argument #1 - address
Argument #2 - minconf
Result
Examples
getreceivedbylabel
Argument #1 - label
Argument #2 - minconf
Result
Examples
gettransaction
Argument #1 - txid
Argument #2 - include_watchonly
Argument #3 - verbose
Result
Examples
getunconfirmedbalance
Result
getwalletinfo
Result
Examples
importaddress
Argument #1 - address
Argument #2 - label
Argument #3 - rescan
Argument #4 - p2sh
Result
Examples
importdescriptors
Argument #1 - requests
Result
Examples
importmulti
Argument #1 - requests
Argument #2 - options
Result
Examples
importprivkey
Argument #1 - privkey
Argument #2 - label
Argument #3 - rescan
Result
Examples
importprunedfunds
Argument #1 - rawtransaction
Argument #2 - txoutproof
Result
importpubkey
Argument #1 - pubkey
Argument #2 - label
Argument #3 - rescan
Result
Examples
importwallet
Argument #1 - filename
Result
Examples
keypoolrefill
Argument #1 - newsize
Result
Examples
listaddressgroupings
Result
Examples
listlabels
Argument #1 - purpose
Result
Examples
listlockunspent
Result
Examples
listreceivedbyaddress
Argument #1 - minconf
Argument #2 - include_empty
Argument #3 - include_watchonly
Argument #4 - address_filter
Result
Examples
listreceivedbylabel
Argument #1 - minconf
Argument #2 - include_empty
Argument #3 - include_watchonly
Result
Examples
listsinceblock
Argument #1 - blockhash
Argument #2 - target_confirmations
Argument #3 - include_watchonly
Argument #4 - include_removed
Result
Examples
listtransactions
Argument #1 - label
Argument #2 - count
Argument #3 - skip
Argument #4 - include_watchonly
Result
Examples
listunspent
Argument #1 - minconf
Argument #2 - maxconf
Argument #3 - addresses
Argument #4 - include_unsafe
Argument #5 - query_options
Result
Examples
listwalletdir
Result
Examples
listwallets
Result
Examples
loadwallet
Argument #1 - filename
Argument #2 - load_on_startup
Result
Examples
lockunspent
Argument #1 - unlock
Argument #2 - transactions
Result
Examples
psbtbumpfee
Argument #1 - txid
Argument #2 - options
Result
Examples
removeprunedfunds
Argument #1 - txid
Result
Examples
rescanblockchain
Argument #1 - start_height
Argument #2 - stop_height
Result
Examples
send
Argument #1 - outputs
Argument #2 - conf_target
Argument #3 - estimate_mode
Argument #4 - fee_rate
Argument #5 - options
Result
Examples
sendmany
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)
Examples
sendtoaddress
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)
Examples
sethdseed
Argument #1 - newkeypool
Argument #2 - seed
Result
Examples
setlabel
Argument #1 - address
Argument #2 - label
Result
Examples
settxfee
Argument #1 - amount
Result
Examples
setwalletflag
Argument #1 - flag
Argument #2 - value
Result
Examples
signmessage
Argument #1 - address
Argument #2 - message
Result
Examples
signrawtransactionwithwallet
Argument #1 - hexstring
Argument #2 - prevtxs
Argument #3 - sighashtype
Result
Examples
unloadwallet
Argument #1 - wallet_name
Argument #2 - load_on_startup
Result
Examples
upgradewallet
Argument #1 - version
Result
Examples
walletcreatefundedpsbt
Argument #1 - inputs
Argument #2 - outputs
Argument #3 - locktime
Argument #4 - options
Argument #5 - bip32derivs
Result
Examples
walletlock
Result
Examples
walletpassphrase
Argument #1 - passphrase
Argument #2 - timeout
Result
Examples
walletpassphrasechange
Argument #1 - oldpassphrase
Argument #2 - newpassphrase
Result
Examples
walletprocesspsbt
Argument #1 - psbt
Argument #2 - sign
Argument #3 - sighashtype
Argument #4 - bip32derivs
Result
Examples
Examples
Introduction
Testing Applications
Testnet
Regtest Mode
Transactions
Transaction Tutorial
Simple Spending
Simple Raw Transaction
Complex Raw Transaction
Offline Signing
P2SH Multisig
Payment Processing
Payment Protocol
PaymentRequest & PaymentDetails
Initialization Code
Configuration Code
Code Variables
Derivable Data
Output Code
P2P Network
Creating A Bloom Filter
Evaluating A Bloom Filter
Retrieving A MerkleBlock
Parsing A MerkleBlock
Glossary
Donate to Bitcoin.org
Use this QR code or address below
3E8ociqZa9mZUSwGdSmAEMAoAxBK3FNDcd