A quantum-safe multisig wallet combines the access control of multi-signature authorization with cryptographic algorithms resistant to attacks from quantum computers. While traditional multisig wallets use ECDSA or EdDSA signatures, which are vulnerable to Shor's algorithm, quantum-safe variants employ post-quantum cryptography (PQC). This guide focuses on a practical setup using the CRYSTALS-Dilithium signature scheme, a NIST-standardized PQC algorithm, to create a 2-of-3 multisig configuration. We'll use a hypothetical framework, PQ-Sig-Wallet, to demonstrate the core concepts.
Setting Up a Quantum-Safe Multi-Signature Wallet System
Setting Up a Quantum-Safe Multi-Signature Wallet System
A practical guide to implementing a multi-signature wallet using post-quantum cryptography to secure assets against future quantum computing threats.
The security model relies on generating and distributing post-quantum private keys. Each signer in our 2-of-3 setup must generate their own key pair using a PQC library like liboqs. The public keys are aggregated to form the wallet's address, while private keys remain securely distributed. Unlike traditional schemes, PQC signatures are larger—a Dilithium2 signature is about 2.5KB—which impacts transaction size and gas costs on blockchains like Ethereum. This necessitates careful planning for on-chain verification logic and storage.
Implementation involves writing a smart contract for signature verification and fund custody. The contract must include a PQC verification function, which can be complex due to the large signatures. Projects like the Ethereum Foundation's PQ-Sig Research are exploring optimized precompiles. For now, a simplified contract structure includes: a constructor to set the three public keys and threshold (2), a submitSignature function that accepts a signature bundle, and logic to verify the Dilithium signature against the stored public keys before executing a transaction.
A critical step is the signing ceremony. To propose a transaction, the initiator creates a message hash. At least two signers must independently sign this hash with their PQC private keys using their secure devices. The signatures are then aggregated off-chain and submitted as a single call to the smart contract. This process emphasizes air-gapped signing devices to prevent key exposure, as PQC private keys are also sensitive and must be protected with the same rigor as traditional keys.
Deploying this system today involves trade-offs. The primary challenges are increased transaction costs due to large signature sizes and the immaturity of PQC library audits for production blockchains. It is recommended for high-value, long-term storage where quantum risk is a genuine concern. Developers should monitor the integration of PQC standards into major crypto libraries like OpenZeppelin and layer-2 solutions that can mitigate gas overhead. This setup provides a forward-looking security model for institutional and DAO treasuries.
Prerequisites and System Requirements
This guide outlines the hardware, software, and cryptographic knowledge required to implement a quantum-safe multi-signature wallet system.
Building a quantum-safe multi-signature wallet requires a foundational understanding of both traditional blockchain cryptography and post-quantum cryptography (PQC). You should be familiar with standard elliptic curve cryptography (ECC) used in wallets today (e.g., secp256k1 for Ethereum) and the concept of multi-signature (multisig) schemes like ECDSA-based Schnorr signatures or BLS signatures. Additionally, a working knowledge of PQC algorithms, particularly those selected by NIST for standardization such as CRYSTALS-Dilithium for digital signatures and CRYSTALS-Kyber for key encapsulation, is essential. This hybrid knowledge base is critical for understanding the security trade-offs and integration challenges.
For development, you will need a robust software environment. A Node.js runtime (v18 or later) or Python 3.10+ is recommended for running cryptographic libraries. Essential tools include Git for version control and a package manager like npm or pip. The core of the system will rely on PQC libraries; for prototyping, consider the liboqs library from Open Quantum Safe, which provides C implementations with language bindings, or language-specific ports like pqcrypto in Python. You will also need access to a blockchain development kit such as ethers.js v6, web3.js, or viem for interacting with smart contracts that will manage the multisig logic.
The system's security depends on a hybrid cryptographic architecture. Your wallet will generate and manage two key pairs: a traditional ECC key (e.g., secp256k1) and a PQC key pair (e.g., Dilithium). The signature process involves creating two signatures for each transaction authorization. The smart contract, deployed on a chain like Ethereum, must be written to validate both signature types. You will need a development framework like Hardhat, Foundry, or Truffle to write, test, and deploy this contract. Testing requires a local blockchain instance (e.g., Hardhat Network) and testnet faucets (like Sepolia or Holesky) for live environment validation.
Before writing code, ensure your development machine meets minimum requirements: a multi-core processor (Intel i5/Ryzen 5 or better), 8GB RAM (16GB recommended), and at least 10GB of free storage. A reliable internet connection is necessary for fetching dependencies and interacting with blockchain nodes. For enhanced security during key generation, consider using an air-gapped machine or a hardware security module (HSM) with experimental PQC support. Finally, allocate time to study the latest NIST FIPS 203, 204, and 205 draft standards and follow the ongoing community discussions on integrating PQC into blockchain protocols at forums like the Ethereum Research portal.
Core Cryptographic Concepts
Building a multi-signature wallet that remains secure against future quantum computers requires understanding and implementing post-quantum cryptographic primitives.
Key Management & Storage
Post-quantum key material is larger and requires updated storage and backup strategies. Shamir's Secret Sharing (SSS) can be used to split the master seed, but the shares must themselves be encrypted with PQC algorithms. Consider:
- Using Kyber for encrypting backup shards stored with custodians.
- Implementing Hardware Security Modules (HSMs) with PQC support for institutional signers.
- The lifecycle management of keys, including rotation and revocation protocols, which become more complex with larger key sizes.
Smart Contract Verification
On-chain verification of PQC signatures like Dilithium requires custom precompiles or smart contract logic due to computational complexity. On Ethereum, this would need a new EIP for a precompiled contract. On other VMs (e.g., CosmWasm, Solana), you must deploy the verification algorithm as a native program. Gas costs will be significantly higher than for ECDSA, impacting transaction fees for multisig executions.
Selecting a Post-Quantum Signature Algorithm
A practical guide to evaluating and implementing quantum-resistant signature schemes for securing multi-signature wallets against future cryptographic threats.
Post-quantum cryptography (PQC) refers to cryptographic algorithms designed to be secure against attacks from both classical and quantum computers. The threat stems from Shor's algorithm, which can efficiently break the RSA and Elliptic Curve Cryptography (ECC) that underpin most blockchain signatures today. For a multi-signature wallet, this means an attacker with a sufficiently powerful quantum computer could forge signatures and steal assets. Selecting a PQC algorithm involves evaluating trade-offs between signature size, key size, signing/verification speed, and cryptographic maturity.
Several families of PQC signature algorithms are under standardization by NIST. For blockchain applications, hash-based signatures like SPHINCS+ are a conservative choice due to their reliance only on hash functions, offering strong security proofs. Lattice-based schemes such as Dilithium (selected for NIST standardization) provide much smaller signatures and faster operations, making them practical for on-chain verification. Multivariate and code-based schemes are also contenders but often have larger key sizes or performance constraints less suitable for frequent blockchain transactions.
When integrating a PQC algorithm into a multi-signature system, you must consider the on-chain verification cost. A signature from SPHINCS+ can be ~40KB, while Dilithium signatures are ~2-4KB. For Ethereum, this translates directly to gas costs. A practical approach is a hybrid scheme: use a traditional ECDSA signature alongside a PQC signature, providing security during the transition period. The Open Quantum Safe (OQS) project provides open-source libraries like liboqs for prototyping. For a Solidity implementation, you would write a precompile or a smart contract that implements the verification algorithm, which is computationally intensive and may require a zk-SNARK for gas efficiency.
For developers, start by integrating a PQC algorithm into your wallet's off-chain signing logic. Using the liboqs-python bindings, you can generate and verify Dilithium2 signatures. The code snippet below shows a basic signing operation:
pythonfrom oqs import Signature signer = Signature('Dilithium2') public_key = signer.generate_keypair() signature = signer.sign(message) # The signature and public key must be formatted for on-chain verification
The public key and signature must then be serialized and passed to your smart contract for verification.
The migration path for an existing multi-signature wallet like Gnosis Safe involves deploying a new Proxy Factory and Fallback Handler that support PQC verification. User signing sessions in the wallet UI would need to generate both an ECDSA and a PQC signature. The smart contract's isValidSignature function would check both, eventually phasing out ECDSA. It's crucial to monitor NIST's final standardization (FIPS 203, 204, 205) and community audits of implementations like pq-crypto and Cloudflare's CIRCL library before committing to a production system.
Long-term, the blockchain ecosystem may converge on a small set of standardized PQC algorithms. Your selection today should prioritize algorithm agility—designing your wallet's signature verification to be upgradeable without requiring asset migration. By starting with a hybrid model and engaging with consortiums like the PQ Blockchain Forum, you can future-proof your multi-signature system against the quantum threat while the cryptographic landscape solidifies.
Post-Quantum Algorithm Comparison for Wallets
Comparison of leading post-quantum cryptographic algorithms for key generation and signing in multi-signature wallet systems.
| Algorithm / Metric | CRYSTALS-Dilithium | Falcon | SPHINCS+ |
|---|---|---|---|
NIST Standardization Status | ML-KEM (FIPS 203) ML-DSA (FIPS 204) | ML-DSA (FIPS 204) | ML-DSA (FIPS 204) |
Security Category | Category 1 (128-bit) | Category 1 (128-bit) | Category 1 (128-bit) |
Core Mathematical Problem | Module Lattice | NTRU Lattice | Hash-Based |
Public Key Size | 1,312 bytes | 897 bytes | 32 bytes |
Signature Size | 2,420 bytes | 666 bytes | 17,088 bytes |
Key Generation Time | < 1 sec | < 1 sec | < 1 sec |
Signature Verification Time | < 2 ms | < 1 ms | < 5 ms |
On-Chain Gas Cost (Est.) | High | Medium | Very High |
Smart Contract Audit Complexity | |||
Hardware Wallet Support |
Designing the Threshold Signature Scheme
A practical guide to implementing a multi-signature wallet using threshold signature schemes (TSS) with quantum-resistant cryptography, focusing on setup, key generation, and signing protocols.
A Threshold Signature Scheme (TSS) enables a group of n participants to collaboratively generate a single, compact signature, provided at least a threshold t of them agree. Unlike traditional multi-signature wallets that store multiple signatures on-chain, TSS produces one signature from one aggregated public key, reducing blockchain footprint and improving privacy. This architecture is ideal for institutional custody, DAO treasuries, and any scenario requiring distributed authority. For quantum resistance, we replace classical algorithms like ECDSA with post-quantum cryptography (PQC) such as CRYSTALS-Dilithium or Falcon, which are based on hard lattice problems believed to be secure against quantum attacks.
The core of the system is the Distributed Key Generation (DKG) protocol. No single party ever holds the complete private key; instead, each participant i generates a secret share s_i. Through a secure multi-party computation (MPC) ceremony, they collaboratively derive the shared public key P without exposing their individual shares. Libraries like ZenGo-X's multi-party-ecdsa or Binance's tss-lib provide robust implementations for classical curves. For a quantum-safe setup, you would integrate a PQC library like liboqs or PQClean to run a similar DKG for a lattice-based scheme, ensuring the master key is never assembled in one place.
When a transaction needs signing, participants engage in a signing protocol. Each party with a secret share s_i computes a partial signature using the transaction hash. These partial signatures are then combined to produce the final, valid signature, which can be verified against the shared public key P. The security property ensures that compromising fewer than t participants reveals nothing about the group's private key. Implementing this requires a secure communication channel, often facilitated by a relayer or a coordinator service that manages message passing between parties without accessing secret data.
For developers, a practical implementation stack involves several layers. The cryptography layer uses a TSS library (e.g., for EdDSA) or a PQC-TSS adaptation. The network layer handles peer-to-peer communication, often via libp2p or secure WebSocket channels. The application layer integrates with a wallet interface and blockchain clients. A critical consideration is robustness: the protocol must handle malicious participants (through verifiable secret sharing) and network dropouts. Always conduct the DKG in a trusted, isolated environment and consider using a hardware security module (HSM) or trusted execution environment (TEE) for storing secret shares in production.
While TSS significantly enhances security, it introduces complexity. Key challenges include the computation and communication overhead of MPC rounds, the lack of standardized PQC-TSS implementations, and the difficulty of key rotation or share refresh. Furthermore, the security of the entire system depends on the secure deletion of temporary data generated during signing. For Ethereum and EVM chains, you can use the resulting signature directly with smart contracts that verify the aggregated public key, or use a signer contract that acts as an abstracted account (like an ERC-4337 smart account) controlled by the TSS committee.
Setting Up a Quantum-Safe Multi-Signature Wallet System
This guide details the architecture and implementation of a multi-signature wallet system designed to resist threats from future quantum computers using post-quantum cryptography (PQC).
A quantum-safe multi-signature (multisig) wallet combines two critical security layers. First, it requires multiple private keys to authorize a transaction, protecting against single points of failure. Second, it replaces the vulnerable ECDSA or EdDSA signatures used in wallets like MetaMask or Ledger with post-quantum cryptography (PQC) algorithms. The imminent threat from quantum computers is their ability to solve the mathematical problems (like the discrete logarithm problem) that underpin today's blockchain signatures, potentially allowing them to forge transactions. Implementing PQC now, through a hybrid or transitional approach, provides cryptographic agility and future-proofs digital assets.
The core component is the smart contract governing the wallet logic. For an Ethereum-based system, you would deploy a contract that validates signatures against a set of predefined owner addresses. Instead of the native ecrecover function, which is only for ECDSA, the contract must implement a custom verification function for your chosen PQC algorithm. A practical interim solution is hybrid signatures, where a transaction must be signed with both a traditional algorithm (e.g., secp256k1) and a PQC algorithm (e.g., CRYSTALS-Dilithium). This maintains compatibility with existing tooling while adding a quantum-resistant layer.
Key generation and distribution are the most sensitive phases. Each participant must generate their key pair using a vetted PQC library, such as liboqs from the Open Quantum Safe project. The process for a participant involves: 1) Generating a Dilithium2 key pair locally in a secure environment. 2) Deriving a standard Ethereum address from their traditional secp256k1 key. 3) Registering their quantum-safe public key and their Ethereum address with the multisig wallet contract. Never transmit private keys. The public keys are stored on-chain for verification, while the private keys must be secured using hardware modules or air-gapped devices.
For developers, here's a conceptual snippet for a hybrid signature verification function in a Solidity contract, using a simplified interface. This example assumes you have a precompiled contract or library (e.g., DilithiumVerifier) to verify the PQC signature.
solidityfunction executeTransaction( address to, uint256 value, bytes calldata data, bytes[] calldata classicSigs, bytes[] calldata pqcSigs ) public { require(classicSigs.length == pqcSigs.length, "Signature count mismatch"); require(classicSigs.length >= requiredSignatures, "Insufficient signatures"); for (uint i = 0; i < classicSigs.length; i++) { address signer = recoverSigner(classicSigs[i]); // Standard ECDSA recovery require(isOwner[signer], "Invalid classic signer"); // Verify the corresponding PQC signature bytes memory pqcPubKey = ownerToPQCKey[signer]; bool pqcValid = DilithiumVerifier.verify(pqcPubKey, messageHash, pqcSigs[i]); require(pqcValid, "Invalid PQC signature"); } // Proceed with transaction... }
The messageHash should be a hash of the transaction data, signed by both algorithms.
Managing such a system requires updated procedures. Transaction signing tools must integrate PQC libraries, and wallet interfaces need to handle two signature requests. Key rotation policies become essential, as PQC standards are still finalizing (NIST is expected to release FIPS standards for PQC in 2024). You must plan for migration paths to newer algorithms without locking assets. Furthermore, audit your entire stack, from the key generation software to the contract verification logic, with firms experienced in both blockchain and advanced cryptography. The goal is to build a system that is not only secure against tomorrow's threats but also operable and maintainable today.
Adopting a quantum-safe multisig is a proactive measure for securing high-value treasuries, DAO vaults, or institutional custody solutions. While the ecosystem tooling is still evolving, starting with a hybrid model mitigates immediate quantum risk without breaking functionality. Focus on using well-reviewed libraries, enforcing secure multi-party key generation, and thoroughly testing the signature workflow. Resources like the Open Quantum Safe project and NIST's PQC Standardization Project are critical for staying current with algorithm choices and best practices as this field rapidly develops.
Implementing On-Chain Signature Verification
A guide to building a multi-signature wallet system that uses post-quantum cryptography for on-chain signature verification, protecting assets from future quantum computer attacks.
A quantum-safe multi-signature wallet secures digital assets by requiring multiple signatures for a transaction while using cryptographic algorithms resistant to attacks from quantum computers. Traditional schemes like ECDSA (used by Bitcoin and Ethereum) are vulnerable to Shor's algorithm, which could one day break their underlying mathematical problems. To future-proof assets, developers are integrating post-quantum cryptography (PQC) standards, such as those selected by NIST, into smart contract logic. This involves verifying signatures from algorithms like CRYSTALS-Dilithium or Falcon directly on-chain, ensuring that a wallet's security isn't compromised by advances in quantum computing.
The core challenge is implementing efficient on-chain verification for PQC signatures, which are significantly larger than ECDSA signatures. A Dilithium2 signature can be ~2,420 bytes, compared to ~65 bytes for an ECDSA signature. This requires careful smart contract design to manage gas costs and calldata size. A common architecture uses a verifier contract with a precompiled verify function. The contract stores the hash of the wallet's configuration—such as the set of signers' public keys and the threshold (e.g., 3-of-5)—and validates that a submitted transaction bundle includes enough valid PQC signatures to meet that threshold before execution.
Here is a simplified Solidity interface for a quantum-safe multisig verifier. The submitTransaction function expects the raw transaction data and an array of signature objects, each containing a signer's index and their large PQC signature bytes.
solidityinterface IQuantumSafeMultiSig { function submitTransaction( address to, uint256 value, bytes calldata data, Signature[] calldata signatures ) external returns (bytes32 txHash); } struct Signature { uint256 signerIndex; // Index in the signers array bytes pqcSignature; // e.g., Dilithium signature bytes }
The contract must internally reconstruct the signed message hash and verify each pqcSignature against the corresponding stored public key using a PQC verification algorithm.
Implementing the PQC verification logic in Solidity is computationally intensive. For production systems, a verification gateway pattern is often used. A dedicated, gas-optimized contract performs the core mathematical verification, potentially leveraging Ethereum precompiles or Layer-2 solutions like zk-rollups for efficiency. Alternatively, projects like the Ethereum Foundation's PQXDH experiment explore hybrid schemes, where a PQC algorithm establishes a shared secret, and a traditional signature authorizes the transaction. This balances quantum resistance with the gas constraints of the current Ethereum Virtual Machine.
To deploy this system, start by generating keys for your signers using a vetted PQC library such as liboqs. Integrate a JavaScript/TypeScript SDK for clients to create and sign transactions. Your front-end should bundle the transaction data with signatures and call the verifier contract. Thoroughly test with tools like Foundry or Hardhat, simulating mainnet gas usage. Critical considerations include managing signer set updates securely and ensuring the system is compatible with existing wallet infrastructure. The end result is a multi-signature wallet whose security is rooted in mathematics believed to be secure against both classical and quantum adversaries.
Implementation Resources and Libraries
These resources cover the cryptographic libraries, standards, and wallet frameworks needed to build a quantum-safe multi-signature wallet system. Each card focuses on production-relevant components rather than theoretical research.
Hybrid Signature Schemes for Blockchain Wallets
Most blockchains still require ECDSA or EdDSA for transaction validity. A practical quantum-safe multi-sig wallet uses hybrid signatures.
Hybrid approach:
- Each signer produces two signatures:
- Classical (ECDSA or Ed25519)
- Post-quantum (Dilithium or Falcon)
- Smart contracts verify the classical signature
- Off-chain or L2 logic verifies the PQ signature
Benefits:
- Backward compatibility with Ethereum, Bitcoin, and Cosmos
- Immediate quantum-resistance against "harvest now, decrypt later" attacks
- Incremental migration path
Implementation details:
- Store PQ public keys in contract storage or IPFS
- Enforce signer quorum at the application layer
- Log PQ signature hashes on-chain for auditability
RustCrypto and Post-Quantum Wallet Backends
Rust is increasingly used for wallet infrastructure due to memory safety and performance. While RustCrypto focuses on classical primitives, it integrates well with PQ libraries.
Typical stack:
- RustCrypto for hashing, encoding, and key management
- liboqs-rust bindings for Dilithium or Falcon
- JSON-RPC or gRPC signer services
Advantages for multi-signature wallets:
- Isolated signer processes
- Deterministic builds for auditability
- Easier integration with hardware security modules
Example workflow:
- Each signer runs a Rust-based PQ signer service
- Wallet coordinator aggregates approvals
- Final transaction assembled only after threshold approval
This model mirrors enterprise custody systems while remaining chain-agnostic.
Gas Cost Analysis for On-Chain PQC Verification
Estimated gas costs for verifying different PQC signature schemes on Ethereum Mainnet, based on current implementations and average gas prices.
| Operation / Metric | Dilithium2 | SPHINCS+ | Falcon-512 | ECDSA (Baseline) |
|---|---|---|---|---|
Signature Verification (gas) | 1,200,000 - 1,500,000 | 2,800,000 - 3,200,000 | 950,000 - 1,100,000 | ~3,000 |
Public Key Size (bytes) | 1,312 | 32 | 897 | 64 |
Signature Size (bytes) | 2,420 | 17,088 | 666 | 64 - 65 |
Precompile Optimization | ||||
Avg. Cost @ 50 Gwei ($) | $90 - $112 | $210 - $240 | $71 - $82 | $0.22 |
Suitable for Batch Verification | ||||
NIST Security Level | 2 | 1 | 1 | 1 |
Security Considerations and Audit Checklist
A practical guide to the security architecture and audit process for implementing a quantum-resistant multi-signature wallet using post-quantum cryptography (PQC).
A quantum-safe multi-signature wallet combines two critical security paradigms: the distributed trust of multi-party computation and cryptographic algorithms resistant to attacks from quantum computers. The primary threat model shifts from protecting against a single compromised key to ensuring the entire signature scheme remains secure against both classical and quantum adversaries. This requires replacing traditional digital signatures like ECDSA or EdDSA with Post-Quantum Cryptography (PQC) algorithms, such as those standardized by NIST like CRYSTALS-Dilithium for signatures and CRYSTALS-Kyber for key encapsulation. The system's security hinges on the correct implementation of these new, often more complex, mathematical constructs.
The core security consideration is key management and storage. PQC keys and signatures are significantly larger than their classical counterparts—a Dilithium2 public key is about 1,312 bytes, compared to 33 bytes for a secp256k1 key. This impacts gas costs on-chain, transaction sizes, and secure storage mechanisms. Private key material for each signer must be generated, stored, and used in a hardware-secure environment, such as a Hardware Security Module (HSM) or a secure enclave, to prevent exfiltration. The multi-signature protocol itself, whether it's a simple M-of-N threshold or a more advanced Schnorr-based aggregate scheme adapted for PQC, must be formally verified to prevent logic flaws that could bypass cryptographic security.
A comprehensive audit for such a system follows a multi-layered approach. First, cryptographic implementation review: auditors examine the PQC library for side-channel vulnerabilities (timing attacks, power analysis) and correctness against the official specification. They verify the randomness source for key generation. Second, smart contract and protocol audit: the on-chain contract that validates the aggregate signature must be checked for reentrancy, gas limit issues due to large calldata, and correct threshold logic. Third, integration and operational security: the audit covers the off-chain signer client software, secure communication channels between signers, and key rotation/revocation procedures. Using established tools like Slither for static analysis and differential fuzzing against a classical implementation are essential steps.
Developers should implement specific safeguards. Use well-audited libraries like liboqs from Open Quantum Safe or a provider's SDK. Enforce deterministic signing to prevent nonce reuse vulnerabilities present in some PQC algorithms. Design the wallet with upgradeability in mind, as PQC standards may evolve; use a proxy pattern to migrate to new algorithms if a vulnerability is discovered. Finally, maintain clear documentation of the threat model, signature scheme, and recovery process for auditors and users. A quantum-safe multi-sig is not just a cryptographic upgrade but a holistic security system requiring rigorous validation at every layer.
Frequently Asked Questions
Answers to common technical questions and troubleshooting for developers implementing quantum-resistant multi-signature wallets.
A quantum-safe multi-signature wallet is a smart contract or account abstraction wallet that requires multiple signatures to authorize a transaction, but uses post-quantum cryptography (PQC) algorithms for signing instead of traditional ECDSA. The core difference is the underlying cryptographic primitive. Standard multisigs rely on ECDSA or EdDSA (Ed25519), which are vulnerable to attacks from a sufficiently powerful quantum computer using Shor's algorithm. Quantum-safe multisigs use algorithms like CRYSTALS-Dilithium, Falcon, or SPHINCS+, which are believed to be secure against both classical and quantum attacks. This requires changes to the wallet's signature verification logic, key generation process, and often results in larger signature sizes (e.g., 2-50KB vs. 64-96 bytes for ECDSA), impacting gas costs and on-chain storage.