☁️
Zus Docs
  • About Züs
  • System
    • Providers and Services
      • Miner
      • Sharder
      • Blobber
      • Validator
      • Authorizer
      • Node Locator (0DNS)
    • Storage
      • Architecture and Data Management
      • Protocol
        • Allocations
        • Reference Objects
        • Challenges
        • Write Markers
          • Chain Hashing
          • Two Commit
        • Blobber Repair Protocol
      • ZS3 Server
        • Backup, Recovery and Replication
        • Encryption and Compression
        • S3FS Setup and Usage
        • Backup & Recovery with Restic on Blimp + ZS3 Server
        • Backup & Recovery with Veeam on Blimp + ZS3 Server
      • File Operations
        • Upload
        • Download
        • File Sharing
        • Partial Error Recovery
        • Streaming
        • Rent a Blobber
    • Smart Contracts
      • Storage S.C.
      • Miner S.C.
      • ZCN S.C.
      • ERC-20 S.C.s
      • Bridge Protocol
    • Blockchain & Consensus
      • Entities
    • User Authentication and Wallet Management System
      • OKTA Integration
      • Key Management System (KMS)
  • APIs
    • 0DNS API
    • JS API
    • Mobile API
  • CLIs
    • Storage CLI
      • Quickstart
      • Configuring the tool
    • Wallet CLI
      • Wallet Configuration
      • Quickstart
      • Configuring the tool
  • SDKs
    • Go SDK
      • GO SDK Microservices
    • JS SDK
  • Tokenomics
    • Staking
    • Reward & Penalty
  • ✨Züs Apps
    • 🗝️Vult
      • Getting Started
        • Web
        • Mobile
      • Vult AI
        • Batch Processing
        • Memory Retention
        • Technical Implementation
        • Architecture Overview
      • Login / Register
      • File Management Pages
      • File Sharing
      • Storage Management Dashboard
      • Storage Maintenance and Troubleshooting
      • Züs Subscription
      • Wallet Management
      • Refer a friend
      • Settings
    • 🏗️Blimp
      • Getting Started
      • Login / Register
      • Configure Storage
        • Create Standard Storage Allocation
        • Create Enterprise Allocation
        • Create S3 Server Allocation
        • Create Cloud Migration Allocation
        • Allocation Maintenance and Troubleshooting
      • File Management Pages
      • File Sharing
      • Manage Allocations
      • Upgrade Storage
      • Blimp Vault
      • Refer a friend
      • Settings
      • Launching ZS3 Server
      • Using CLI to backup files into Blimp + ZS3 Server
    • 🏠Chimney
      • Getting Started
      • Login / Register
      • Create New Deployment
      • Manage Your Deployments
      • Homepage
      • Staking Dashboard
      • Rank Dashboard
      • Monitor Dashboard
      • Stats Dashboard
      • Logs Dashboard
      • Wallet Dashboard
      • Operations on your Deployments
      • Restricted Blobbers
      • Settings
        • Manage Profile
        • Wallet Settings
        • Update Blobber Settings
        • Update Blobber Version
        • Refer a friend
        • Help
    • 🌐Atlus
      • Getting Started
      • Home page
      • Service Providers Page
      • Charts Page
        • Market Charts
        • Network Charts
        • Storage Charts
      • Blockchain Page
      • Server Map Page
      • Storage Explainer Page
      • Details Pages
        • Block Details Page
        • Transaction Details Page
        • Wallet Details Page
        • Miner Details Page
        • Sharder Details Page
        • Blobber Details Page
        • Validator Details Page
        • Authorizer Details Page
        • Allocation Details Page
      • Appendix: Common Components
    • ⚡Bolt
      • Getting Started
        • Web
        • Mobile
      • Login / Register
      • Sign In with external wallet
      • Staking Dashboard
      • Staking/Unstaking a provider
      • Claiming Rewards
      • Send/Receive ZCN tokens
      • Buy ZCN
      • Deposit/Withdraw ZCN tokens
      • Activity Dashboard
      • Refer a friend
      • Settings
  • Releases
    • Hardfork
Powered by GitBook
On this page
  • Core responsibilities of the Miner
  • Logical components of the Miner Process
  • The Miner HTTP API
  • Data stored by the Miner
  • Requirements libraries for the Miner process environment
  1. System
  2. Providers and Services

Miner

Details on the Miner, the block generator and consensus participant

PreviousProviders and ServicesNextSharder

Last updated 11 months ago

Miners are the main providers that maintain the blockchain and implement the consensus protocol.

Core responsibilities of the Miner

  • Generation of blocks to extend the blockchain so that the network rounds keep progressing.

  • Participation in the consensus algorithm, verifying the generated blocks by other participants.

  • Mutation of the in-memory version of the network data model. Since this in-memory version is stored in a Merkle-Patricia Tree data structure, we usually just call it "The MPT".

Logical components of the Miner Process

Block Generation/Verification Workers

Workers responsible for generating blocks, handling block messages, verifying blocks, voting in the consensus, ...

Block Finalization Workers

Workers responsible for finalizing blocks and updating the MPT state by executing the transactions.

Communication Workers (handlers)

Those are handlers of Node-to-Node (N2N) communication endpoint among miners and sharders. Those are responsible for sending/receiving different kinds of messages to and from the miner.

Health check worker

A worker responsible for the heartbeats of the miner which are signs of the miner liveness. It works by generating a health check transaction periodically and communicate it with the other Active Set providers.

The Miner HTTP API

Data stored by the Miner

The Miner is not supposed to store the whole blockchain, as this is the job of the Sharder. However, the Miner still needs to store some data for fast-access. For this data, the Miner uses 2 main storage solutions: Redis and Rocksdb. The miner stores the following data:

  1. Latest unfinalized transaction (Transaction Pool): Transactions that are not still in a finalized block are stored in a separate Redis container for faster access.

  2. The MPT: Based on the tree structure of the MPT, the miner uses rocksdb to store it as rocksdb is built on top of LevelDB which is efficient for tree-like data structure.

  3. Some data about the blockchain: Stores some recent blocks, the Latest Finalized Magic Block along with some other entities representing the chain for fast access.

Requirements libraries for the Miner process environment

The Miner process requires the following libraries to exist in any environment it runs on:

The Miner Process consists of multiple workers (technically, lightweight execution threads or in the Go literature). Following are the most important workers running the miner operations

The miner exposes a minimal API with a couple of endpoints to view its diagnostics and health check, as well as an endpoint to submit transactions. These will be discussed in details in the page.

: It's the embedded in-memory key-value store used by the Miner to store the MPT.

: Two libraries used for cryptographic tasks.

goroutines
Rocksdb
BLS and MCL
Miner API
Miner docker-compose-based deployment breakdown