A Bitcoin node is a computer running Bitcoin software that communicates in the Bitcoin peer-to-peer network. It can readily validate a new transaction from its peers. It can also sign (to prove ownership of coins) and broadcast a new transaction (which spends its own coins) across the network for validation among the peers. The primary function of transaction validation is to prevent double-spending, i.e. to ensure that the outputs (coins) in the transaction have not been spent by any of the previous transactions.
Map shows concentration of reachable Bitcoin nodes found in countries around the world.
Every 10 minutes or so, a Bitcoin miner, that may also operate as a Bitcoin node, will be able to successfully mine a block containing the new and valid transactions (including a coinbase transaction that incentivizes the miner with new coins) and in turn broadcast the block back into the network. Upon receipt of a new block from one of its peering nodes, a Bitcoin node will validate before accepting the new block for local storage, effectively extending its local copy of the blockchain (blocks of transactions).
Bitcoin node accepts/relays transactions and blocks from/to its peers using a set of consensus rules that have been coded into the Bitcoin software that it runs. Honest Bitcoin nodes in the network run the same set of consensus rules and keep the same up-to-date copy of the blockchain. These consensus rules are essential for the network to maintain the integrity of the blockchain that acts as the single source of truth for the state of all outputs. Any attempt from a malicious node to propagate, e.g. double-spending transaction, will result in the node itself getting banned and its transaction dropped by its peering honest nodes.
Operating a Bitcoin node does not result in direct incentive like mining blocks does. However, node operators help increase the resiliency of the network by enforcing the consensus rules and can benefit by having their Bitcoin wallet communicate privately with the Bitcoin node to validate and accept incoming or broadcast new wallet transactions. This removes the need for a third party service by the wallet that would otherwise result in the user’s identity of the wallet and its historical transactions made known to the third party service and any other parties involved.
Bitcoin software, e.g. Bitcoin Core, allows users to operate a Bitcoin node as a full or pruned node. A full Bitcoin node maintains a full copy of the blockchain (requires close to 500GB disk space as of March 2022). A full node can relay any blocks or transactions from the genesis (first) block up to the latest block to its peering nodes. A pruned Bitcoin node stores and relays only a copy of recent blocks as far back as the disk space limit set in the configuration would allow. A pruned copy of the blockchain can take as little as 500MB of disk space, i.e. storing approximately 288 recent blocks or past 2 days worth of blocks. Typically, a full node will advertise both NODE_NETWORK and NODE_NETWORK_LIMITED service bits, whereas a pruned node will advertise only the NODE_NETWORK_LIMITED service bit.
Bitcoin node joins the Bitcoin peer-to-peer network by initially making outgoing connections to a list of peers announced by a set of Bitcoin DNS seeders coded into the Bitcoin software. Further exchange of P2P messages among its peers will allow the node to expand its list of known nodes that it can connect to whenever a new connection is needed.
A Bitcoin node is considered as a reachable node if it accepts incoming connections from its peers. Reachable nodes are essential for maintaining the health of the network by allowing a new Bitcoin node to bootstrap itself and in turn increases the resiliency of the network by helping to enforce the consensus rules. A Bitcoin node is considered as an unreachable node if it only establishes outgoing connections and does not accept incoming connections. Many nodes are unreachable by default as they are located behind corporate/ISP firewalls or NAT. A node could also become temporarily unreachable if it has hit its maximum allowed connections or if it is in the process of syncing up to the latest blocks.
While the Bitcoin peer-to-peer network requires reachable nodes to allow new nodes to bootstrap themselves, unreachable nodes do not negate their importance as they still form part of the Bitcoin peer-to-peer network and enforce the same consensus rules through their outgoing connections.
The Bitnodes project maintains both a relatively accurate estimation of the reachable nodes with a low churn rate and a rough estimation of the global nodes that includes reachable and unreachable nodes. The methodology to estimate the reachable nodes involves sending getaddr messages recursively to find all the reachable nodes in the network, starting from a set of seed nodes. The current estimation of the reachable nodes can be found here. The methodology and current rough estimation of the global nodes can be found here.
Updated: April 25, 2022