☁️
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
  • Problem Statement
  • Repair Process
  • Security & Data Integrity Measures
  1. System
  2. Storage
  3. Protocol

Blobber Repair Protocol

The Blobber Repair Protocol ensures that all blobbers within a decentralized storage allocation maintain a consistent and up-to-date version of stored data.

This process becomes necessary when:

  • A blobber misses a commit, leading to data inconsistencies.

  • A new blobber is added or an existing one is replaced in the storage allocation.

Decentralized storage uses Reed-Solomon erasure coding, which allows data recovery as long as at least data_shards number of blobbers possess the correct data. The repair process ensures that all blobbers sync to the same allocation root, maintaining data consistency and integrity across the network.

Problem Statement

Decentralized storage relies on independent blobbers to store erasure-encoded data. However, inconsistencies can arise due to:

  1. Missed Commits: A blobber might fail to receive or store a data update, leading to incomplete or outdated data.

  2. Blobber Addition or Replacement: New blobbers start with an empty or outdated state and need to catch up with the latest allocation root.

  3. Data Integrity Concerns: Ensuring that all blobbers store the correct and latest version of data is crucial to preventing corruption or loss.

To resolve these challenges, a structured repair process is necessary to synchronize all blobbers to the same allocation root.

Repair Process

The repair process follows a structured approach to efficiently identify and synchronize missing or outdated data across blobbers.

1. Allocation Root Consensus

  • The client fetches the allocation roots from all participating blobbers.

  • Blobbers are grouped into sets based on their allocation roots.

  • The largest consistent set (with at least data_shards blobbers sharing the same allocation root) is considered the master set.

  • Blobbers not in the master set are identified as secondary blobbers requiring repair.

2. File Synchronization Using a Lead Blobber

  • A lead blobber is selected from each set to act as a representative.

  • The lead blobber generates a list of files using a paginated approach.

  • The client then runs a diff function to classify discrepancies:

    • Missing Files: Files present in the master set but absent in secondary blobbers.

    • Extra Files: Files stored by secondary blobbers but missing in the master set.

    • Modified Files: Files with mismatched file hashes, indicating outdated versions that need updating.

  • Based on the differences, file operations are queued for synchronization.

3. Repair Execution

  • Batch processing is used for high-throughput repair operations.

  • Files requiring repair are downloaded from the master set and uploaded to secondary blobbers.

  • Pipelining is employed:

    • Data is streamed directly from the master set to secondary blobbers, reducing disk writes and improving performance.

  • The repair process iterates through all files until the dataset is fully synchronized.

4. Ensuring Synchronization

  • Once the repair operations are completed, the allocation root is updated for all blobbers.

  • The client re-verifies that all blobbers now share the same allocation root.

  • This guarantees that all blobbers in the allocation are fully synchronized, eliminating inconsistencies and ensuring data integrity.

Security & Data Integrity Measures

Merkle Proofs are used to verify file integrity post-repair. The final allocation root hash is validated against the expected consensus hash. If a repaired blobber fails to match the expected state, further verification or re-repair is triggered.

The Blobber Repair Protocol is a critical component of decentralized storage, ensuring data consistency, integrity, and availability.

By using allocation root consensus, parallel processing, and direct streaming, the repair process ensures that all blobbers remain synchronized, even in the face of failures, updates, or missing commits.

PreviousTwo CommitNextZS3 Server

Last updated 1 month ago