bitcoind
Run Bitcoin Core daemon
TLDR
Start the Bitcoin Core daemon (in the foreground)
Start the Bitcoin Core daemon in the background (use bitcoin-cli stop to stop)
Start the Bitcoin Core daemon on a specific network
Start the Bitcoin Core daemon using specific configuration file and data directory
SYNOPSIS
bitcoind [options]
PARAMETERS
-daemon
Run in the background as a daemon.
-datadir=<path>
Specify data directory (default: ~/.bitcoin/).
-conf=<file>
Specify configuration file (default: bitcoin.conf).
-testnet
Use the test network.
-regtest
Use the regression test network.
-printtoconsole
Print all output to the console, even if running as a daemon.
-disablewallet
Disable all wallet functionality.
-rpcport=<port>
Listen for RPC connections on the specified port.
-rpcuser=<user>
Username for JSON-RPC connections.
-rpcpassword=<password>
Password for JSON-RPC connections.
-rpcbind=<addr>
Bind to specified address or wildcard address 0.0.0.0 for JSON-RPC connections.
-help
Show a list of command-line options.
-version
Print version and exit.
-reindex
Rebuild blockchain index from scratch.
-prune=<MiB>
Enable pruning to reduce disk usage. Minimum size is 550 MiB.
-txindex
Maintain a full transaction index, allowing for getrawtransaction queries (requires more disk space).
DESCRIPTION
bitcoind is the official reference implementation of the Bitcoin protocol, operating as a background daemon process. It is the fundamental component for running a Bitcoin full node, participating directly in the Bitcoin peer-to-peer network.
The primary function of bitcoind is to download and synchronize the entire Bitcoin blockchain, validating every block and transaction against the network's consensus rules. This process ensures the integrity and security of the chain. Once synchronized, it continuously monitors for new blocks and transactions, relaying them across the network.
bitcoind also provides a powerful JSON-RPC interface, allowing for programmatic interaction with the Bitcoin network. This interface is utilized by tools like bitcoin-cli and various applications to query blockchain data, manage wallets (if enabled), and send transactions. Running a bitcoind full node contributes significantly to the decentralization, security, and resilience of the Bitcoin network.
CAVEATS
Running a bitcoind full node requires significant resources. On mainnet, it demands hundreds of gigabytes of disk space (and growing) for the blockchain data, along with considerable CPU and RAM during initial synchronization and validation. Exposing the RPC port publicly without proper security measures (e.g., firewall, strong credentials, TLS) is a severe security risk. It's crucial to ensure sufficient network bandwidth and a stable internet connection for efficient synchronization and operation.
RPC INTERFACE
bitcoind exposes a robust JSON-RPC interface, which is the primary way to interact with the full node programmatically. This interface enables users and applications to query blockchain data, send transactions, and manage various aspects of the node's operation. Access to the RPC interface is typically secured with a username and password defined in the bitcoin.conf file.
CONFIGURATION FILE (BITCOIN.CONF)
While many settings can be specified via command-line options, persistent configuration for bitcoind is typically managed through the bitcoin.conf file, usually located in the data directory. This file allows users to define network settings, RPC credentials, pruning options, and various other operational parameters, ensuring consistent behavior across restarts.
DATA DIRECTORY
The data directory (default: ~/.bitcoin on Linux) is where bitcoind stores all essential blockchain data, including blocks, chainstate database, wallet files (if enabled), and debug logs. Its size grows as new blocks are added to the blockchain, which is why disk space management (e.g., using the -prune option) is important for some users.
HISTORY
bitcoind is the daemon component of Bitcoin Core, the software project that originated with Satoshi Nakamoto's release of the Bitcoin client in 2009. It represents the reference implementation of the Bitcoin protocol, continuously developed and maintained by a large, decentralized community of developers. Over the years, its codebase has evolved significantly, incorporating numerous improvements for performance, security, and stability, solidifying its role as the backbone of the Bitcoin network.
SEE ALSO
bitcoin-cli(1), bitcoin-qt(1), bitcoin.conf(5)