pull down to refresh

Bitcoin Full Node: Key ConceptsBitcoin Full Node: Key Concepts

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


1. Full Node Basics1. Full Node Basics

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


2. Inbound/Outbound Connections2. 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 Components3. Core Components

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


4. Communication Protocols4. 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 & Whitelist5. Banlist & Whitelist

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


Upcoming PostsUpcoming Posts

  • MuSig
  • MuSig2

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

reply

Make it as wild and technical as possible!Make it as wild and technical as possible!

reply
reply

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

Thank you for following up and explaining that in detail!

reply

Nice illustrations!

reply

Great explanation, thanks a lot.

reply

Glad to hear that! thanks

reply