LinuxCommandLibrary

bitcoind

Run Bitcoin Core daemon

TLDR

Start the Bitcoin Core daemon (in the foreground)

$ bitcoind
copy

Start the Bitcoin Core daemon in the background (use bitcoin-cli stop to stop)
$ bitcoind -daemon
copy

Start the Bitcoin Core daemon on a specific network
$ bitcoind -chain=[main|test|signet|regtest]
copy

Start the Bitcoin Core daemon using specific configuration file and data directory
$ bitcoind -conf=[path/to/bitcoin.conf] -datadir=[path/to/directory]
copy

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)

Copied to clipboard