Blockchain Network Design Space

Five groups of network design decisions

Design decisions when designing a blockchain network can be organized into five groups1:

Full Node Decisions

Three decisions:

  • Mapping between full node and participants: Who has the right to have a full node?
    • One-to-many: one full node serving many participants. This is the case with many early day blockchain applications.
    • One-to-one: one full node for each participant.
    • Many-to-one: each participant has many full nodes, for instance when they want different internal groups of the participant to interact with the blockchain and maintain their own record.
    • Public: open space, any one can have their node
  • Deployment of full nodes: Where do those full node exist?
    • Same cloud: all full nodes exist in the same cloud
    • Multiple clouds: full nodes spread across different cloud service or infrastructure
    • Hybrid clouds: half public, half private cloud
    • Networked computers: full nodes running on bare machines. Commonly found in fog and edge situation in blockchain.
  • Mining distribution: Who has the right for those full nodes?
    • All
    • One
    • M-out-of-N
    • Public

Lightweight Node Decisions

Two decisions:

  • Number of lightweight nodes
    • Context dependent
  • Lightweight node deployment
    • Context dependent

Remote Node Decisions

Remember that remote nodes are wallets and other kind of client-side libraries such as Web3js to interact with the full nodes.

Two decisions:

  • Mapping between remote node and participants
    • One-to-many: one remote node serving multiple participants
    • One-to-one: each participant has one remote node
    • Many-to-one
    • Public
  • Deployment of remote nodes
    • Standalone
    • Embedded in application

Network Interface Decisions

Two decisions, governing how remote nodes would interface with the blockchain network.

  • Interface Type:
    • RPC API
    • IPC
    • API
    • Serverless Functions
  • Interface Deployment
    • Standalone
    • Embedded in full node
    • Embedded in lightweight node

Node Communication Decisions

These decisions govern how blockchain clients interact with each other

Two decisions:

  • Peer communication protocol type
    • Gossip-based
    • Unicast
  • Node discovery
    • Static peer list
    • Dynamic via gossip protocols
    • Dynamic via registries

Three groups of protocol design decisions

State-Machine

Decisions in this group concern with how the state-machine for executing transactions are designed.

Four decisions:

  • State Model
    • UTXO
    • Account
    • Key-value
  • Smart Contract Model
    • Non
    • On-chain
    • Installed
  • Virtual Machine
    • EVM
    • JVM
    • Docker
  • Validator
    • None
    • Uniqueness
    • Syntax-only
    • Semantic

Consensus

This decision concerns with how the state-machines deployed on different blockchain nodes are synchronized.

One decision:

  • Consensus Protocol
    • Byzantine Fault and Sybil Tolerant
    • Byzantine Fault Tolerant
    • Crash-tolerant

Enterprise Extensions

This decision concerns with enterprise extensions beyond the basics of blockchain networks.

Three decisions:

  • Identity Model
    • None
    • X.509 Certificate
  • Authentication and Authorization
    • None
    • Digital Certificate
  • Privacy Preserving
    • None
    • State Segmentation
    • Private Channel