Bitcoin Full Node: Key Concepts

Let's explore the main components and connections of a bitcoin full node

1. Full Node Basics

A Full Node downloads and verifies all blocks and transactions on the Bitcoin network

2. Inbound/Outbound Connections

  • Inbound Connections:
    -- Initiated by external nodes connecting to your node.
    -- Accepts up to 117 connections from other nodes requesting data.
  • Outbound Connections:
    -- Initiated by your node connecting to external nodes.
    -- Establishes 8 outbound connections for data synchronization.

3. Core Components

  • Chain State: Tracks UTXOs (Unspent Transaction Outputs).
  • Blocks DB: Stores all block data.
  • Mempool: Temporary storage for unconfirmed transactions.

4. Communication Protocols

  • RPC: Allows local applications to interact with the node.
  • HTTP & GUI: Provides user interfaces for interaction.
  • ZMQ: Asynchronous messaging for transaction/block notifications.

5. Banlist & Whitelist

  • Banlist: Blocks nodes with suspicious behavior.
  • Whitelist: Grants special permissions to trusted nodes.

Upcoming Posts

  • MuSig
  • MuSig2
Awesome illustrations! Thanks.
Questions:
  • What determines the amount of inbound connections?
  • How is the banlist populated?
    • What determines suspicious behavior?
reply
What determines the amount of inbound connections?
The bitcoind client has a -maxconnections configuration option. Setting -maxconnections=N specifies the total number of connections, including both incoming and ourbound connections (the default is 125, 8 outbound and 117 inbound)
How is the banlist populated?
Nodes are identified by their IP addresses. If a node misbehaves => it gets added to its "ban list" => so it won’t listen to that node anymore (The more people that "ban" that node, the less effect it has on the network)
Misbehaving includes things like spamming mempool messages, relaying invalid transactions, and broadcasting invalid blocks (Reference: https://bitcoin.stackexchange.com/questions/48834#48835)
reply
0 sats \ 0 replies \ @j7hB75 7h
Thank you for following up and explaining that in detail!
reply
Awesome work! I'd like to ask if you can expand some more on the contents, as I think that this is an amazing start! Also, shouldn't policy rules have a place in the above as well?
reply
I think I might need to make a separate illustration for policy rules if that’s something you’re interested in
Nice illustrations!
reply
reply
Great explanation, thanks a lot.
reply
Glad to hear that! thanks
reply