P2P

  • Ad-hoc protocol (runs on TCP port 8333)
  • Ad-hoc network with random topology (no geographic topology)
  • All nodes are equal
  • New nodes can join anytime
  • Forgets non-responding nodes after 3 hours

Transaction Propogation (Flooding)

  • Randomly arranged nodes transfer the transaction metadata within their group
  • Every node verifies if :
    • Transaction is valid with current block chain

    • Script matches a whitelist

    • Haven’t seen before (Avoid infinite loops)

    • Doesn’t conflict with others it has relayed (Avoid double spends)

Nodes may differ on transaction pool.

If Block Propogration is nearly identical:

  • Relay a new block when you hear it if:
    • Block meets the hash target

    • Block has all valid transactions

    • Block builds on current longest chain

Tracking the UTXO Set

  • Unspent Transaction Output
    • Everything else can be stored on disk
  • Currently ~ 12 M UTXOs
  • Can easily fit into RAM