Ethereal Chain Documentation
  • Introduction
  • Industry use cases
    • Decentralized applications
    • NFT Marketplaces
    • Decentralized finance
  • Wallets
    • Ethereal Wallet Guide
    • App Wallets
      • Ethereal Wallets
  • Web Wallets
    • Web Wallets
  • Command-Line Wallets
    • Command-Line Wallets
    • Paper Wallet
    • File System Wallet
  • Support/ Troubleshooting
  • Staking
    • Staking on Ethereal
    • Stake Account Structure
  • Grants
    • Ethereal's $100 Thousand Grants Program
    • Ethereal's Grants Process
  • Command Line
    • Command-line Guide
    • Install the Ethereal Tool Suite
    • Using Ethereal CLI
    • Connecting to a Cluster
    • Send and Receive Tokens
    • Offline Transaction Signing
    • Durable Transaction Nonces
  • Developing on native Ethereal
    • Programming Model
      • Overview
      • Transactions
      • Accounts
      • Runtime
      • Calling Between Programs
  • Clients
    • JSON RPC API
    • JavaScript API
  • Runtime Facilities
    • Native Programs
    • Sysvar Cluster Data
  • On-chain Programs
    • Overview
    • Developing with Rust
    • Developing with C
    • Deploying
    • Debugging
  • Ethereal Test Validator
  • EVM Integration
    • EVM in Ethereal
    • Legacy Address convention
    • EVM Bridge
  • Integrating
    • Add Ethereal to Your Exchange
  • Validating
    • Running a Validator
    • Validator Requirements
    • Starting a Validator
    • Vote Account Management
    • Staking
    • Monitoring a Validator
    • Publishing Validator Info
  • Clusters
    • Ethereal Clusters
    • Benchmark a Cluster
    • Performance Metrics
  • Architecture
    • Cluster
      • Ethereal Cluster
      • Synchronization
      • Leader Rotation
      • Fork Generation
    • Validator
      • Anatomy of a Validator
      • Blockstore
      • Gossip Service
  • Software
    • Vision Documentation
    • Quick Start
    • Specifications
    • Technical Perspective
  • Tutorials
    • Solidity Tutorials
      • Deploy a NFT (ERC-721) Tutorial
      • Deploy a Smart Contract
      • Deploy a ERC-20 Token
      • How To Build an NFT Marketplace
  • Set up MetaMask (Mainnet)
  • Set up MetaMask (Testnet)
Powered by GitBook
On this page
  • Anatomy of a Validator
  • Pipelining
  • Pipelining in the Validator
  1. Architecture
  2. Validator

Anatomy of a Validator

Anatomy of a Validator

Pipelining

The validators make extensive use of an optimization common in CPU design, called pipelining. Pipelining is the right tool for the job when there's a stream of input data that needs to be processed by a sequence of steps, and there's different hardware responsible for each. The quintessential example is using a washer and dryer to wash/dry/fold several loads of laundry. Washing must occur before drying and drying before folding, but each of the three operations is performed by a separate unit. To maximize efficiency, one creates a pipeline of stages. We'll call the washer one stage, the dryer another, and the folding process a third. To run the pipeline, one adds a second load of laundry to the washer just after the first load is added to the dryer. Likewise, the third load is added to the washer after the second is in the dryer and the first is being folded. In this way, one can make progress on three loads of laundry simultaneously. Given infinite loads, the pipeline will consistently complete a load at the rate of the slowest stage in the pipeline.

Pipelining in the Validator

The validator contains two pipelined processes, one used in leader mode called the TPU and one used in validator mode called the TVU. In both cases, the hardware being pipelined is the same, the network input, the GPU cards, the CPU cores, writes to disk, and the network output. What it does with that hardware is different. The TPU exists to create ledger entries whereas the TVU exists to validate them.

PreviousValidatorNextBlockstore

Last updated 1 year ago