greenfield-whitepaper icon indicating copy to clipboard operation
greenfield-whitepaper copied to clipboard

Whitepaper for Greenfield, the decentralized data economy

Greenfield Whitepaper

The goal of the BNB Greenfield is to unleash the power of decentralized blockchain and storage technology on data ownership and data economy.

BNB Greenfield is not only a new blockchain in BNB but also an infrastructure and ecosystem targeting to facilitate the decentralized data economy. It tries to achieve it by easing the process to store and manage data access and linking data ownership with the massive DeFi context of BSC.

It focuses on 3 parts that differ from existing centralized and decentralized storage systems:

  • It enables Ethereum-compatible addresses to create and manage both data and token assets.

  • It natively links data permissions and management logic onto BSC as exchangeable assets and smart contract programs with all other assets.

  • It provides developers with similar API primitives and performance as popular existing Web2 cloud storage.

It is expected that Greenfield will set up a playground and test field for new data economy and dApp models, which eventually becomes part of the foundation for Web3.

The white paper in this repository describes the main design and implementation of the platform. Many ideas are based on the great contributions of other leading protocols and teams. Please refer to the acknowledgment sections.

Any constructive opinions, ideas, and feedback are welcome.

Hope everyone enjoys the journey!

Table of Content

  • Overview
  • Part 1 Design of the BNB Greenfield and the Decentralized Storage Economy
    • 1 Design Principles
    • 2 Assumptions
    • 3 The Architecture in General
      • 3.1 Greenfield Core
      • 3.2 BNB Greenfield dApps
      • 3.3 The Cross-Chain with BSC
      • 3.4 The Trinity
    • 4 BNB Greenfield Core
      • 4.1 The BNB Greenfield Blockchain
      • 4.2 The Storage Providers, SPs
      • 4.3 The Pair Synergy
    • 5 The Greenfield Data Storage
      • 5.1 Data with Consensus
        • 5.1.1 Accounts and Balance
        • 5.1.2 Validator and SP Metadata
        • 5.1.3 Storage Metadata
        • 5.1.4 Permission Metadata
        • 5.1.5 Billing Metadata
      • 5.2 Off-Chain Payload Object Data Storage
        • 5.2.1 Primary and Secondary SPs
        • 5.2.2 Data Redundancy
    • 6 Storage Economics and Its Primitives
      • 6.1 Account Creation
      • 6.2 Data Object Creation
      • 6.3 Data Storage
      • 6.4 Data Read and Download
      • 6.5 Permissions and Group
      • 6.6 Fees and Payments
      • 6.7 Data Integrity and Availability Challenge
      • 6.8 Data Delete
    • 7 Economy of Data Assets
      • 7.1 Cross-Chain with BSC
      • 7.2 Framework
      • 7.3 Communication Layer
      • 7.4 Resource Mirror Layer
        • 7.4.1 Resource Entity Mirror
        • 7.4.2 Cross-Chain Operating Primitives
    • 8 "Not" Ending for the Design
      • 8.1 Acknowledgement
  • Part 2 Showcases in Labs
    • 9 Showcases: Decentralized Storage
      • 9.1 Web Hosting and Personal Cloud Drive
      • 9.2 Data Availability Layer for Public Blockchain
        • 9.2.1 Layer 1 Blockchain Data Swapping
        • 9.2.2 Data Availability Layer for the Layer 2 Rollups
        • 9.2.3 Snapshots and Block Data Backups
    • 10 Showcases: New Ways of Digital Publishing
      • 10.1 Grass-Root Digital Publishing
      • 10.2 Data Market
      • 10.3 Risk: Anti-Piracy
    • 11 Showcases: User-Generated Content
      • 11.1 Anti-Monopoly and Anti-Censorship
      • 11.2 Token Curated Registries
    • 12 Showcases: Personal Data Market
    • 13 From Showcases to Real Production
  • Part 3 Simplified Technical Specifications
    • 14 Ecosystem Players
      • 14.1 Greenfield Validators
      • 14.2 Storage Providers (SPs)
      • 14.3 Greenfield dApps
    • 15 User Identifier
      • 15.1 User Balance
    • 16 Greenfield Blockchain
      • 16.1 Token Economics
      • 16.2 Consensus and Validator Election
      • 16.3 Governance Transactions
        • 16.3.1 Create and Edit Validator
        • 16.3.2 Staking Reward Distribution
        • 16.3.3 Create Storage Provider
        • 16.3.4 Remove Storage Provider
    • 17 Storage MetaData Models
      • 17.1 Bucket
      • 17.2 Object
      • 17.3 Group
      • 17.4 Permission
        • 17.4.1 Ownership
        • 17.4.2 Permission Definitions
        • 17.4.3 Permission Removal
        • 17.4.4 Examples
    • 18 Payload Storage Management
      • 18.1 Segments
      • 18.2 Erasure Code and Data Redundancy
        • 18.2.1 Data Redundancy Design
        • 18.2.2 Erasure Code
          • 18.2.2.1 Encoding
          • 18.2.2.2 Decoding: Data Recovery
    • 19 Data Availability Challenge
      • 19.1 The Initial Data Integrity and Redundancy Metadata
      • 19.2 Data Availability Challenge Process
    • 20 Storage Transactions
    • 21 Billing and Payment
      • 21.1 Concepts and Formulas
        • 21.1.1 Terminology
        • 21.1.2 Formula
        • 21.1.3 Types and Interfaces
      • 21.2 Key Workflow
        • 21.2.1 Deposit and Withdrawal
        • 21.2.2 Payment Stream
        • 21.2.3 Forced Settlement
        • 21.2.4 Payment Account
        • 21.2.5 Account Freeze and Resume
        • 21.2.6 Storage Fee Price and Adjustment
    • 22 Cross-Chain Models
      • 22.1 Communication Channels and Packages
        • 22.1.1 Vote Poll
        • 22.1.2 Channel and Sequence
        • 22.1.3 Reliability Protocol
        • 22.1.4 Validator Update
      • 22.2 Economic
        • 22.2.1 Fee and Reward of Cross-Chain Packages
        • 22.2.2 Race to Deliver Cross-Chain Packages
        • 22.2.3 Callbacks and Limited Gas
        • 22.2.4 Cross-Chain Infrastructure Contracts on BSC
      • 22.3 Error and Failure Handling
    • 23 SP APIs
      • 23.1 Universal Endpoint
        • 23.1.1 URI Standard
        • 23.1.2 HTTPS REST API
        • 23.1.3 P2P RPC
      • 23.2 List Operations
  • Ending

Contribute

  1. Clone the repo and checkout a branch
git clone https://github.com/bnb-chain/greenfield-whitepaper.git
git checkout -b <your-branch-name>
  1. Make your changes

  2. Lint files before a pull request

# install markdownlint-cli from https://github.com/igorshubovych/markdownlint-cli
markdownlint '**/*.md'  -c .github/workflows/markdownlint.yaml
  1. Submit a pull request

License

All the content are licensed under CC BY 4.0.