Libbitcoin Introduction
  • Libbitcoin Overview

  • Libbitcoin Explorer / System
    • HD Wallet Demo (Explorer/C++)
    • Transaction Endorsement Demo (Explorer/C++)
    • Script Machine Demo (C++)

  • Libbitcoin Server
    • Public Server Design
    • ZMQ Server Interface
    • Websockets (V4)
    • Spender Index

  • Libbitcoin Node
    • Libbitcoin-Network (P2P)
    • Libbitcoin-Database
    • Parallel Initial Block Download (V4)

Libbitcoin Introduction
  • C++ Bitcoin Library
    • Lead Maintainer: Eric Voskuil
    • Initiator: Amir Taaki
    • First alternative implementation to
      Satoshi prototype

  • Readability
    • Clearly exposes Bitcoin protocol

  • Performance
    • Performant server design

  • Scalability
    • Reliable scale out of server interface

Libbitcoin Introduction
  • Libbitcoin Overview

  • Libbitcoin Explorer / System
    • HD Wallet Demo (Explorer/C++)
    • Transaction Endorsements (Explorer/C++)
    • Script Machine Demo (C++)

  • Libbitcoin Server
    • Public Server Design
    • ZMQ Server Interface
    • Websockets (V4)
    • Spender Index

  • Libbitcoin Node
    • Libbitcoin-Network (P2P)
    • Libbitcoin-Database
    • Parallel Initial Block Download (V4)

Explorer Demo: HD Wallets
Explorer Demo: TX Endorsements
C++ Demo: Script Machine
Libbitcoin Introduction
  • Libbitcoin Overview

  • Libbitcoin Explorer / System
    • HD Wallet Demo (Explorer/C++)
    • Coinjoin Demo (Explorer/C++)
    • Script Machine Demo (C++)

  • Libbitcoin Server
    • Public Server Design
    • ZMQ Server Interface
    • Websockets (V4)
    • Spender Index

  • Libbitcoin Node
    • Libbitcoin-Network (P2P)
    • Libbitcoin-Database
    • Parallel Initial Block Download (V4)

Libbitcoin Public Interface Design
Client ZMQ Dealer Socket
Libbitcoin ZMQ Router Socket
Libbitcoin V4: Websockets Interface
  • V4: HTTP Server
    • On top of ZMQ internal interface

  • Websockets Endpoint
    • Native browser support
    • JSON queries/response
    • Asynchronous subscription queries

  • JSON-RPC Endpoint
    • Bitcoind compatibility

  • Further Information
    • Developed by @Neillm,
      Libbitcoin Maintainer

Spender Index: Wallet Client
  • HD Wallet Restoration
    • No dedicated address index

  • Address History
    • Standard payment types
      • P2PK
      • P2PKH
      • Multisig
      • P2SH & P2SH(P2W)
    • Full payment history

  • No blockchain scan required
    • scantxoutset provides no history

Spender Index: Payment Server
  • Address Subscription
    • Asynchronous query
    • Renewable Subscription
    • Notifications:
      • Unconfirmed TX pool
      • TX Confirmation

Spender Index: SPV Client
  • Address Subscription/Fetch History
    • For SPV wallet addresses
    • Confirmation heights

  • Fetch & Validate Header Chain
    • Libbitcoin-system: chain_state
      • Retargeting/Forks without lookups

  • Validate TX Inclusion
    • Merkle block for TX associated with addresses

Libbitcoin Introduction
  • Libbitcoin Overview

  • Libbitcoin Explorer / System
    • HD Wallet Demo (Explorer/C++)
    • Coinjoin Demo (Explorer/C++)
    • Script Machine Demo (C++)

  • Libbitcoin Server
    • Public Server Design
    • ZMQ Server Interface
    • Websockets (V4)
    • Spender Index

  • Libbitcoin Node
    • Libbitcoin-Network (P2P)
    • Libbitcoin-Database
    • Parallel Initial Block Download (V4)

Libbitcoin Network (P2P)
  • Asynchronous: C++ Boost-Asio
    • Concurrency without threads

  • P2P object maintains channels
    • Configurable
    • Ping/Pong/Address channel protocols
    • P2P object interface:
      • Subscribe to new channel
      • Subscribe to channel messages
      • Connect to endpoint, etc.

  • Additional protocols
    • See libbitcoin-node

Libbitcoin Database
V4: Continuous Parallel Block Download
  • Scalability: IBD/Catchup
    • Parallelism & multiple threads
    • Significant parallel portion

  • Parallel block download
    • Strong header chain first
    • Block download work across channels
    • Slow peers dropped (S.D.)

  • Parallel block store
    • Parallel write of raw data

  • (Parallel block validation)
    • (Standard input implies previous output)
    • (Not possible with native witness tx's)

  • Further information
    • @evoskuil, lead Libbitcoin maintainer

Libbitcoin Introduction
  • Libbitcoin Overview

  • Libbitcoin Explorer / System
    • HD Wallet Demo (Explorer/C++)
    • Coinjoin Demo (Explorer/C++)
    • Script Machine Demo (C++)

  • Libbitcoin Server
    • Public Server Design
    • ZMQ Server Interface
    • Websockets (V4)
    • Spender Index

  • Libbitcoin Node
    • Libbitcoin-Network (P2P)
    • Libbitcoin-Database
    • Parallel Initial Block Download (V4)