Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
LABS
Guides

How to Architect a Private Supply Chain Data Layer on Blockchain

A technical guide for building a supply chain data layer that separates public consensus from private business logic using ZK proofs and modular data availability.
Chainscore © 2026
introduction
ARCHITECTURAL GUIDE

Introduction: The Privacy Problem in On-Chain Supply Chains

This guide explores the fundamental tension between blockchain's transparency and the confidentiality needs of modern supply chains, outlining architectural patterns for building a private data layer.

Public blockchains like Ethereum offer an immutable, transparent ledger, creating a single source of truth for supply chain events. However, this transparency is a double-edged sword. Revealing sensitive commercial data—such as supplier costs, shipment volumes, profit margins, and proprietary logistics routes—to competitors on a public ledger is untenable for most businesses. This creates the core privacy problem: how to leverage blockchain's trust and auditability without exposing confidential operational data.

Traditional enterprise systems use centralized databases with access controls, but they create data silos and lack inherent trust. The goal of a private on-chain data layer is to achieve selective transparency. This means cryptographic proofs can verify the integrity and provenance of data (e.g., a shipment's location was recorded at a specific time by an authorized sensor) without revealing the underlying data itself (e.g., the exact coordinates or contents) to unauthorized parties.

Several cryptographic primitives enable this. Zero-knowledge proofs (ZKPs), like zk-SNARKs used by zkSync and Aztec, allow one party to prove a statement is true without revealing the statement's details. Commitment schemes let a participant commit to a value (e.g., a product batch ID) with a hash, revealing it only later to authorized verifiers. Secure multi-party computation (MPC) can compute aggregate results (like total inventory across partners) without any party seeing the others' raw inputs.

An effective architecture often employs a hybrid approach. Sensitive raw data can be stored off-chain in encrypted form, with only cryptographic commitments (hashes) or zero-knowledge proofs posted on-chain. The blockchain then acts as a verification and dispute resolution layer. For instance, a hash of a shipment's bill of lading is stored on-chain. Any party with the correct decryption key can fetch the off-chain document and verify its hash matches the on-chain commitment, proving it hasn't been altered.

Implementing this requires careful design. You must define a data taxonomy, classifying information as public (e.g., certificate issuance timestamps), consortium-shared (e.g., quality reports for all partners), or private (e.g., pricing). Tools like Baseline Protocol and EY's Nightfall provide frameworks for using ZKPs for private business logic on Ethereum. The architecture must balance privacy, performance, and cost, as generating ZKPs can be computationally intensive.

The outcome is a verifiable yet confidential supply chain system. Auditors can verify compliance proofs, customers can confirm ethical sourcing claims via ZKPs, and partners can coordinate seamlessly—all while core business intelligence remains protected. This solves the privacy problem, unlocking blockchain's potential for enterprise supply chains without sacrificing competitive advantage.

prerequisites
ARCHITECTURE FOUNDATION

Prerequisites and System Requirements

Before building a private supply chain data layer, you must establish the technical and conceptual foundation. This section outlines the required knowledge, tools, and infrastructure.

A private supply chain data layer on blockchain is a permissioned network where trusted participants (e.g., manufacturers, logistics providers, retailers) share and verify data. Unlike public chains, it prioritizes data privacy, high throughput, and regulatory compliance. The core architecture typically involves a private blockchain or a consortium chain (like Hyperledger Fabric or Quorum), off-chain data storage (like IPFS or a private database), and oracles for injecting real-world data. You must decide on the consensus mechanism (e.g., Practical Byzantine Fault Tolerance for speed) and the data anchoring strategy—whether to store hashes on-chain and data off-chain for efficiency.

Your development environment requires specific tools. For smart contract development, you'll need Node.js (v18+), a package manager like npm or yarn, and the Truffle Suite or Hardhat for Ethereum-based chains. For Hyperledger Fabric, install Docker and Docker Compose to run the network locally. Essential libraries include web3.js or ethers.js for client interactions and IPFS HTTP client for decentralized storage. You should also set up an IDE like Visual Studio Code with Solidity or Chaincode extensions. A basic understanding of containerization is necessary for deploying and managing node services.

You need a clear data model. Define the immutable ledger entries, which are often hashes or proofs of off-chain documents like bills of lading or quality certificates. The on-chain state might track asset ownership (using ERC-721 for unique items) or batch provenance. Critical design decisions include choosing an identity and access management framework (e.g., Hyperledger Fabric's Membership Service Provider) and a private transaction method, such as Quorum's Tessera or Besu's privacy groups, to conceal sensitive commercial data from unauthorized participants while maintaining auditability for regulators.

Infrastructure requirements depend on scale. For a pilot, you can run all nodes on a cloud VM (minimum 4GB RAM, 2 vCPUs). Production demands a Kubernetes cluster or managed blockchain service (like AWS Managed Blockchain or Azure Confidential Ledger). Each participating organization must host at least one validator node to maintain the network's decentralization and trust. You'll also need secure off-chain storage, which could be a private IPFS cluster or an encrypted cloud bucket (AWS S3), with access controlled via on-chain permissions. Plan for oracle services like Chainlink to bring in IoT sensor data or external API information.

Finally, establish your governance and operational protocols before writing code. This includes defining the consortium agreement, node onboarding procedures, and dispute resolution mechanisms. You must also plan for key management—using hardware security modules (HSMs) or cloud KMS for production—and network monitoring tools like the Hyperledger Explorer or custom dashboards using The Graph for indexing on-chain events. Setting these prerequisites correctly prevents costly redesigns and ensures a scalable, secure supply chain data layer.

architecture-overview
SYSTEM ARCHITECTURE

How to Architect a Private Supply Chain Data Layer on Blockchain

A guide to designing a blockchain-based data layer that preserves privacy while enabling verifiable supply chain traceability.

A private supply chain data layer on blockchain must reconcile two opposing needs: the immutable, transparent ledger of a public network with the confidential business data of participants. The core architectural principle is to store only cryptographic commitments—like hashes of data or zero-knowledge proofs—on-chain, while keeping the raw, sensitive data (prices, quantities, proprietary details) off-chain in a permissioned database or decentralized storage like IPFS or Arweave. This creates an anchor of trust on the blockchain that can be used to verify the integrity and sequence of events without exposing the underlying information.

The system architecture typically involves a multi-layered approach. A smart contract layer on a blockchain like Ethereum, Polygon, or a dedicated consortium chain (e.g., Hyperledger Fabric) manages identities, access permissions, and records the hashes of critical events (e.g., event BatchCreated(bytes32 batchIdHash, bytes32 dataHash, address creator)). An off-chain middleware layer, often comprising oracles like Chainlink or decentralized compute platforms, handles the logic for creating these hashes, generating zero-knowledge proofs for complex validations, and managing encrypted data payloads. Participants interact with this middleware via APIs or dedicated client applications.

For data privacy, zero-knowledge proofs (ZKPs) are a powerful tool. A supplier can prove to a verifier (like a regulator) that a shipment meets certain criteria (e.g., "temperature never exceeded 8°C") by submitting a zk-SNARK proof to the blockchain, without revealing the individual sensor readings. Frameworks like Circom and SnarkJS are used to create these circuits. Alternatively, trusted execution environments (TEEs) like Intel SGX can be used within oracles to process private data and emit verifiable attestations on-chain, though they introduce different trust assumptions.

Access control is managed through a combination of on-chain registries and off-chain encryption. A smart contract can maintain a registry of authorized participants and their public keys. When a new event's data is stored off-chain, it is encrypted using a symmetric key, which is then itself encrypted to the public keys of all parties with permission to view it (e.g., using the eth-encrypt library). Only they can decrypt and view the full data, while the hash on-chain allows anyone to verify it hasn't been altered.

Implementing this requires careful smart contract design. A core contract, the Verifiable Data Registry, might have functions like submitBatch(bytes32 dataHash, bytes32 zkProof) and verifyBatch(bytes32 batchId). The off-chain component would use a library such as ethers.js to interact with it. For example, after storing a JSON document on IPFS, you would compute its hash, generate any required proof, and call the contract: await verifiableDataRegistry.submitBatch(ipfsHash, proof);. This creates a permanent, tamper-evident record linking the supply chain event to its private data.

When architecting, key trade-offs must be evaluated. Using a public blockchain (Ethereum) maximizes censorship resistance and trust minimization but incurs gas costs. Consortium chains offer higher throughput and privacy by design but require established governance among members. The choice of privacy technology—ZKPs for cryptographic guarantees vs. TEEs for performance—will dictate development complexity and audit requirements. Successful deployment hinges on a clear data model defining what is hashed on-chain, what is kept private, and the precise verification logic for each business process.

core-components
ARCHITECTURE

Core Technical Components

Building a private supply chain data layer requires specific blockchain primitives. These are the foundational tools and concepts you need to understand.

step-1-setup-da
ARCHITECTURE FOUNDATION

Step 1: Setting Up the Encrypted Data Availability Layer

This step establishes the secure, decentralized storage layer for your private supply chain data, ensuring information is available for verification without exposing sensitive details.

The Encrypted Data Availability (EDA) layer is the core infrastructure for a private blockchain supply chain. Its primary function is to store the raw, often confidential, transaction data—like shipment manifests, quality certificates, or customs documents—in a decentralized manner. Unlike storing this data directly on-chain, which is expensive and public, the EDA layer uses protocols like Celestia, EigenDA, or Arweave to guarantee that data is persistently available. This allows any network participant to cryptographically verify that the data referenced by a blockchain transaction hash exists and is immutable, without needing to trust a central server.

To architect this layer, you must first select a data availability protocol based on your requirements for cost, throughput, and decentralization. For high-frequency supply chain events, a modular DA layer like Celestia offers scalable blob space. For permanent, audit-proof archiving, a solution like Arweave is suitable. The key technical decision is determining the data schema and encryption method before commitment. All sensitive fields (e.g., price, supplierIdentity, recipe) must be encrypted client-side using a symmetric key (e.g., AES-256-GCM) or a mechanism like Hierarchical Deterministic (HD) encryption before the data is submitted to the DA network.

Implementation involves your application backend or a dedicated service node. For example, using the Celestia Blobstream via its Node API, you would: 1) encrypt the JSON payload, 2) submit the encrypted blob, and 3) receive a commitment hash (like a blobTxHash). This hash, along with the encryption key's reference, is what gets stored in your smart contract on the execution layer (e.g., Ethereum, Polygon). The plaintext data never touches the blockchain, but its availability and integrity are secured by the underlying DA network's consensus.

A critical design pattern is key management. The encryption key must be accessible to authorized parties for data retrieval. This can be managed via access control lists (ACLs) in a smart contract that releases key shares, or through Lit Protocol for decentralized key management and conditional decryption. For instance, a smart contract could permit a buyer's wallet to retrieve a decryption key only after a paymentConfirmed event is emitted, enforcing business logic directly into data accessibility.

Finally, you must implement the verification and retrieval client. This is a frontend or service that, given a transaction hash from the blockchain, can query the DA layer's light client (e.g., using @celestiaorg/celestia-node) to fetch the corresponding encrypted blob, verify its inclusion via Merkle proofs, and then decrypt it for authorized users. This completes the loop, creating a trust-minimized system where data privacy is maintained without sacrificing the verifiable availability that blockchain provides.

step-2-zk-circuits
CIRCUIT DESIGN

Step 2: Designing Zero-Knowledge Proof Circuits for Supply Chain Events

This guide details how to architect the core zero-knowledge proof circuits that verify supply chain events without revealing sensitive data.

A zero-knowledge proof (ZKP) circuit is a programmatic constraint system that defines the rules for a valid computation. For supply chains, these circuits encode business logic—like verifying a product's temperature stayed within a certified range during shipment—into a format a ZK-SNARK or ZK-STARK prover can execute. You write this logic using domain-specific languages (DSLs) like Circom, Noir, or Halo2. The circuit doesn't process the raw data itself; instead, it generates a proof that the private inputs (e.g., sensor logs) satisfy all the declared constraints when combined with the public inputs (e.g., a target temperature range).

Start by defining the public and private signals for your event. For a provenance verification circuit, public signals might include a batch ID and a final isValid flag. Private signals would be the hashed sensor readings and secret supplier signatures. The circuit's job is to check: 1) that the hashes correspond to legitimate data, 2) that a signature from an authorized party is present, and 3) that the data meets the required conditions. This creates a trustless link between a public claim ("Batch XYZ is authentic") and private evidence, without exposing the evidence.

Here's a simplified Circom template for checking a temperature threshold. This circuit outputs 1 only if all logged temperatures are below a maximum value.

circom
template TemperatureCircuit(maxTemp) {
    signal private input temperatures[];
    signal output isWithinLimit;

    // Component to check each temperature
    component checkers[temperatures.length];
    component and = AND();

    // Constrain each temperature to be <= maxTemp
    for (var i = 0; i < temperatures.length; i++) {
        checkers[i] = LessEqThan(32);
        checkers[i].in[0] <== temperatures[i];
        checkers[i].in[1] <== maxTemp;
        and.in[i] <== checkers[i].out;
    }
    isWithinLimit <== and.out;
}

The LessEqThan component ensures each private temperature[i] is ≤ the public maxTemp. The AND gate aggregates the results; all checks must pass for isWithinLimit to be 1.

Optimizing circuit design is critical for cost and performance. Each constraint adds to the proving time and the on-chain verification gas cost. Use techniques like hash pre-processing (commit to hashes of large datasets off-chain) and recursive proof composition to aggregate multiple event proofs into a single one. For instance, instead of proving each leg of a shipment separately, you can design a circuit that recursively verifies the proof from the previous leg, creating a compact proof of the entire journey. Libraries like SnarkJS for Circom or Barretenberg for Noir help with this optimization and the final proof generation.

Finally, integrate the circuit with your data layer. The on-chain verifier contract (written in Solidity or Cairo) only needs the circuit's verification key and the public signals. When a supply chain event occurs, an off-chain prover uses the circuit, the private data, and the public parameters to generate a proof. Submitting this proof and the public signals to the verifier contract triggers a state update—like minting an NFT certificate or appending a verified entry to a ledger. This creates an immutable, privacy-preserving audit trail anchored on-chain.

step-3-hybrid-contracts
ARCHITECTURE

Step 3: Building Hybrid On-Chain/Off-Chain Smart Contracts

Designing a private supply chain data layer requires a hybrid approach. This step details how to structure smart contracts that anchor trust on-chain while processing sensitive data off-chain.

A hybrid architecture separates data storage from data verification. The on-chain smart contract acts as a lightweight, immutable registry. It stores only essential, non-sensitive anchors like cryptographic hashes (e.g., Merkle roots), timestamps, and permissioned participant addresses. For example, a contract might record event ProductBatchSealed(bytes32 rootHash, uint256 timestamp, address manufacturer). This creates a public, tamper-proof proof-of-existence for off-chain data without revealing the data itself. The contract also enforces access control logic, dictating who can submit new data anchors.

The off-chain component, often called an oracle or trusted execution environment (TEE), handles the private data. This is where sensitive supply chain information—such as exact GPS coordinates, supplier invoices, or quality inspection reports—is processed and encrypted. A common pattern uses a commit-reveal scheme: the off-chain service first commits a hash of the data to the on-chain contract. Later, it can provide the raw data and a cryptographic proof (like a Merkle proof) to authorized parties, who can verify it against the on-chain hash. This keeps the data private and scalable while leveraging blockchain for trust.

For implementation, you can use frameworks designed for hybrid systems. Chainlink Functions allows your on-chain contract to request computation from off-chain servers, returning verified results. Polygon's zkEVM or Aztec Network enable private smart contract execution with zero-knowledge proofs. A basic Solidity anchor contract might look like this:

solidity
mapping(uint256 => bytes32) public batchHashes;
function sealBatch(uint256 batchId, bytes32 dataHash) external onlyRole(MANUFACTURER_ROLE) {
    batchHashes[batchId] = dataHash;
    emit BatchSealed(batchId, dataHash, block.timestamp);
}

This function allows a permitted manufacturer to record a hash, creating an immutable on-chain reference.

Key design considerations include data availability and oracle trust. Where is the raw off-chain data stored? Options include decentralized storage like IPFS or Arweave, or a permissioned database with access keys. The oracle that hashes and submits the data must be trusted or decentralized. Using a decentralized oracle network (DON) like Chainlink improves resilience. Furthermore, define a clear data schema (e.g., using JSON Schema or Protobufs) for the off-chain data to ensure consistency in how information is structured and hashed across the supply chain participants.

Finally, the architecture must support selective disclosure for audits and compliance. Authorized auditors should be able to request proof of specific claims (e.g., "produce was stored below 5°C") without seeing the entire dataset. This can be achieved using zero-knowledge proofs (ZKPs) generated off-chain, where a zk-SNARK proves a statement about the private data is true. The verifier contract only needs the tiny proof and the public input. This completes the hybrid model: private data off-chain, verifiable integrity and logic on-chain, and granular privacy for real-world supply chain use cases.

ARCHITECTURE DECISION

Data Availability Layer Comparison: Celestia vs. EigenDA vs. Ethereum

Key technical and economic metrics for selecting a data availability (DA) solution for a private supply chain data layer.

Feature / MetricCelestiaEigenDAEthereum (Blobs)

Core Architecture

Modular DA blockchain

Restaking-powered AVS on Ethereum

Monolithic L1 with proto-danksharding

Data Availability Guarantee

Data availability sampling (DAS)

Ethereum economic security via restaking

Full consensus & execution

Cost per MB (approx.)

$0.10 - $0.50

$0.01 - $0.10

$5.00 - $20.00

Finality Time

~15 seconds

~12-24 hours (challenge period)

~12 minutes

Throughput (MB per block)

~8 MB

~10 MB

~0.125 MB (per blob)

Data Privacy Support

Yes (via namespaces/private mempools)

No (public mempool)

No (public mempool)

EVM Compatibility

No (Sovereign Rollups)

Yes (via EigenLayer operators)

Native

Economic Security

Celestia staked tokens (~$2B)

Restaked ETH via EigenLayer (~$15B)

Staked ETH (~$90B)

PRIVATE SUPPLY CHAIN DATA LAYER

Implementation FAQ and Troubleshooting

Common technical questions and solutions for developers building a private, blockchain-anchored data layer for supply chain applications.

Use a commit-reveal scheme with cryptographic commitments. Store only the hash (e.g., keccak256) of your private data on-chain. This hash serves as an immutable, timestamped proof of the data's existence and state at a specific point in time. The raw data (sensor readings, shipment details) remains off-chain in your private database or a decentralized storage network like IPFS or Arweave. To verify data integrity later, you recalculate the hash of the stored data; if it matches the on-chain commitment, the data is authentic and unchanged.

Common Pattern:

  1. Generate hash H1 = hash(sensitive_data + nonce).
  2. Submit H1 to a smart contract (e.g., on Ethereum, Polygon).
  3. Later, to prove data integrity, reveal the original sensitive_data and nonce to the verifier off-chain.
  4. The verifier computes H2 = hash(sensitive_data + nonce) and checks H1 == H2.
security-considerations
SECURITY AND OPERATIONAL CONSIDERATIONS

How to Architect a Private Supply Chain Data Layer on Blockchain

Building a private blockchain data layer for supply chains requires balancing transparency with confidentiality, ensuring data integrity, and designing for real-world operational constraints. This guide covers key architectural decisions for enterprise-grade deployments.

The core challenge is designing a permissioned blockchain network that provides an immutable audit trail while restricting data visibility. A common architecture uses a consortium blockchain like Hyperledger Fabric or a private Ethereum network using a consensus mechanism like Istanbul BFT. This allows pre-approved participants (manufacturers, logistics providers, customs) to run validating nodes, ensuring data is verified without being public. Sensitive commercial data, such as pricing or exact quantities, should be stored off-chain in a secure database or IPFS, with only a cryptographic hash (e.g., a bytes32 Merkle root) committed to the blockchain. This preserves data privacy while allowing any party to cryptographically prove the integrity of the referenced data.

Smart contracts, or chaincode in Fabric, act as the system's business logic layer, automating verification and state transitions. For a supply chain, key contracts might include a ProductRegistry to mint unique digital twins for physical assets, a CustodyContract to track ownership and location changes, and a ComplianceContract to verify certifications. It is critical to implement role-based access control (RBAC) within these contracts using modifiers or decorators to enforce permissions. For example, only a certified inspection body's address should be able to call verifyQualityCheck(). All contract functions must emit standardized events (like TransferSingle from ERC-1155) to enable efficient off-chain indexing and monitoring by participants.

Data ingestion from legacy Enterprise Resource Planning (ERP) and Warehouse Management Systems (WMS) is a major operational hurdle. Use a blockchain oracle pattern to bridge off-chain data. This typically involves running a lightweight client or agent (e.g., a Chainlink external adapter, or a custom service using web3.js/ethers.js) that listens for events from enterprise systems, formats the data, and submits transactions to the blockchain. To prevent spam and ensure data quality, these oracle transactions should be signed by cryptographically verified API keys or hardware security modules (HSMs) assigned to each entity. The architecture must handle the asynchronous nature of blockchain finality, potentially using event-driven workflows that confirm on-chain inclusion before triggering the next step in the physical process.

Network governance and operational security are paramount. Establish a clear governance framework for node operators covering software upgrades, membership changes, and emergency response. For private networks, consider using a TLS-based peer-to-peer communication layer (as in Hyperledger Fabric) to encrypt all network traffic. Key management is a critical vulnerability; private keys for organizational wallets and oracle services should never be stored in plaintext. Use hardware security modules (HSMs) or cloud-based key management services (like AWS KMS, Azure Key Vault) for signing transactions. Regularly audit smart contracts for common vulnerabilities (reentrancy, access control) using tools like Slither or Mythril, and implement a formal upgrade path using proxy patterns (e.g., OpenZeppelin's TransparentUpgradeableProxy) to patch logic without migrating state.

Finally, design for scalability and interoperability from the start. Supply chain events can be high-volume; use layer-2 solutions or sidechains for throughput-intensive operations if using Ethereum, or select a platform like Polygon Edge designed for private networks. To interact with public blockchains (e.g., for carbon credit trading or public certification), implement a secure bridge with fraud proofs or a trusted federation. The system should expose well-documented GraphQL or REST APIs for participants to query their relevant data without needing deep blockchain expertise, abstracting the underlying complexity. Monitor network health with tools that track transaction latency, gas costs (if applicable), and node synchronization status to ensure operational reliability.

conclusion-next-steps
ARCHITECTURE REVIEW

Conclusion and Next Steps

You have now explored the core components for building a private, blockchain-anchored data layer for supply chain management. This final section consolidates the architecture and outlines practical steps for implementation.

The architecture you've designed leverages a hybrid approach: a private, permissioned blockchain (like Hyperledger Fabric or a Polygon Supernet) for governance and consensus among known participants, coupled with zero-knowledge proofs (ZKPs) for privacy. Sensitive data—such as pricing, proprietary formulas, or supplier contracts—remains off-chain, encrypted, and stored in a decentralized file system like IPFS or Arweave. The blockchain acts as an immutable, shared ledger of truth, storing only the cryptographic commitments (hashes) of this data and the ZK proofs that verify its integrity and compliance with business logic without revealing the underlying information.

To move from concept to deployment, begin with a focused pilot. Select a single, high-value asset or product line with a limited number of trusted partners. Use frameworks like Circom or SnarkJS to model your critical business rules (e.g., "temperature never exceeded 8°C") as ZK circuits. Develop smart contracts for the core registry and verification logic, and choose a client SDK—such as those provided by web3.js, ethers.js, or Fabric SDK—for your application front-end. This phased approach allows you to validate the technical stack, quantify efficiency gains, and demonstrate ROI before scaling.

The next evolution of this system involves interoperability and advanced analytics. Consider how your private data layer can communicate with public blockchains for tasks like public product provenance verification or carbon credit tokenization using Chainlink CCIP or Axelar. Furthermore, the accumulation of permissioned, verifiable data creates a powerful foundation for trusted AI and ML models. Partners can train algorithms on this authenticated dataset to predict disruptions, optimize routes, or automate procurement, all while maintaining data sovereignty and auditability through the underlying cryptographic proofs.

How to Architect a Private Supply Chain Data Layer on Blockchain | ChainScore Guides