Интеграция с Celestia (Data Availability)

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1 услугВсе 1306 услуг
Интеграция с Celestia (Data Availability)
Сложная
~3-5 рабочих дней
Часто задаваемые вопросы
Направления блокчейн-разработки
Этапы блокчейн-разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1221
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1163
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    855
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1056
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    828

Интеграция с Celestia (Data Availability)

Rollup без внешней DA — это rollup, который хранит calldata на L1. На Ethereum это стоит денег: до EIP-4844 каждый байт calldata обходился в ~16 gas, после — дешевле через blobs, но blob space ограничен (~375 KB на блок, 6 blobs). При высокой нагрузке rollup-проектов на mainnet blob market становится конкурентным, и транзакционные издержки растут. Celestia решает это через модульную специализацию: цепочка делает только одно — Data Availability, и делает это дёшево и масштабируемо.

Ключевое: Celestia не исполняет транзакции, не хранит state, не делает consensus о корректности вычислений. Она только гарантирует, что данные были опубликованы и доступны для загрузки. Это позволяет оптимизировать под DA-специфичные параметры: DAS (Data Availability Sampling), Namespaced Merkle Trees, высокий throughput.

Как работает DAS и почему это важно

Data Availability Sampling — механизм, при котором light node не скачивает весь блок, а делает случайные запросы на небольшие chunks данных. Если все запросы успешны — с высокой вероятностью (cryptographic guarantee) блок доступен полностью.

Celestia использует 2D Reed-Solomon erasure coding: данные разбиваются на матрицу, кодируются по строкам и столбцам. Для восстановления полного блока достаточно 50% данных (любых). Это означает: даже если часть нод офлайн или злонамеренны — данные восстановимы, пока хотя бы половина хранится.

Для rollup-разработчика это означает: публикуй данные в Celestia, и любой участник сети может верифицировать их доступность без скачивания всего. Light nodes у пользователей — реальный сценарий, а не теория.

Интеграция rollup с Celestia: практика

Sovereign Rollup vs. Settlement Rollup

Первое архитектурное решение: где происходит settlement?

Sovereign rollup — использует Celestia только как DA. Консенсус о корректности цепочки — среди участников самого rollup. Форки возможны. Это модель для проектов, которым нужна максимальная суверенность и гибкость.

Settlement rollup — публикует данные в Celestia, а proof верификации отправляет на отдельный settlement layer (Ethereum, или Celestia-based settlement chain). Это ближе к классической L2 модели, но с дешёвой DA.

Публикация данных через celestia-node

import (
    "github.com/celestiaorg/celestia-node/api/rpc/client"
    "github.com/celestiaorg/celestia-app/pkg/namespace"
)

// Инициализация клиента (подключение к celestia-node)
rpcClient, err := client.NewClient(ctx, "http://localhost:26658", authToken)

// Создание namespace — изолированного пространства для данных rollup
ns, err := namespace.From([]byte("myrollup123456789")) // 10 байт

// Публикация batch транзакций
blob, err := blob.NewBlob(ns, batchData)
height, err := rpcClient.Blob.Submit(ctx, []*blob.Blob{blob}, blob.DefaultGasPrice())

fmt.Printf("Data submitted at height: %d\n", height)

После публикации нужно сохранить (height, namespace, commitment) — это proof того, что данные были включены. Commitment — это хеш blob данных, который включается в Celestia block header.

Верификация включения: Namespace Merkle Proof

Чтобы смарт-контракт на L1 мог верифицировать, что данные были включены в Celestia, используются Namespaced Merkle Tree (NMT) proofs:

// Получение proof включения
proof, err := rpcClient.Blob.GetProof(ctx, height, ns, commitment)

// proof содержит:
// - NMT siblings path
// - Row roots из data root
// - Inclusion proof row в data root

На стороне Ethereum-контракта: Blobstream (ранее Quantum Gravity Bridge) публикует Celestia data root commitments в Ethereum. Верификатор контракт проверяет NMT proof против запостованного data root.

interface IBlobstream {
    function verifyAttestation(
        uint64 _tupleRootNonce,
        DataRootTuple calldata _tuple,
        BinaryMerkleProof calldata _proof
    ) external view returns (bool);
}

// В rollup верификаторе
function verifyDataAvailability(
    uint64 celestiaHeight,
    bytes32 dataRoot,
    NMTProof calldata nmtProof
) external view returns (bool) {
    // 1. Верифицируем что dataRoot включён в Blobstream
    bool rootVerified = blobstream.verifyAttestation(nonce, tuple, binaryProof);
    require(rootVerified, "DataRoot not attested");
    
    // 2. Верифицируем NMT proof что наш namespace включён в dataRoot
    return nmtVerifier.verify(dataRoot, nmtProof, namespaceStart, namespaceEnd);
}

Celestia в стеке модульного rollup

Реалистичный стек для нового rollup проекта с Celestia DA:

OP Stack + Celestia — наиболее проторенный путь. alt-da mode в OP Stack позволяет заменить Ethereum DA на Celestia. Репозиторий celestiaorg/optimism содержит патч. Sequencer публикует батчи в Celestia, derivation pipeline читает из Celestia по namespace.

Rollkit — sovereign rollup framework от Celestia Labs. Встроенная поддержка Celestia DA, поверх Cosmos SDK. Для проектов, которые хотят Cosmos-совместимость без IBC complexity.

Arbitrum + Celestia — через AnyTrust DA committee, можно настроить Celestia как один из committee members. Более сложная интеграция, но сохраняет совместимость с Arbitrum ecosystem.

Параметры производительности

Параметр Значение
Throughput (testnet) ~8 MB/block
Throughput (roadmap) ~1 GB/block (через DAS scaling)
Block time ~12 секунд
Data cost ~$0.000001/byte (Mocha testnet)
Namespaces 256^10 возможных пространств

Для сравнения: Ethereum blobs после EIP-4844 — ~375 KB/block, target price ~1 ETH за 1 MB при высокой нагрузке.

Операционные аспекты

celestia-node существует в трёх режимах:

  • Full node — скачивает и хранит все данные, участвует в DAS
  • Bridge node — соединяет Celestia P2P с Celestia App (consensus), нужен для DA bridging
  • Light node — только DAS, минимальные требования к ресурсам

Для production rollup sequencer нужен как минимум свой full node или bridge node — не стоит зависеть от публичных endpoints для публикации транзакций.

Мониторинг: Celestia node экспортирует Prometheus метрики. Ключевые алёрты: celestia_das_sampling_failures (DAS не работает), celestia_node_sync_delay (нода отстаёт), blob submission errors.

Fallback: если Celestia недоступна — rollup sequencer должен иметь fallback на L1 DA. OP Stack alt-da mode поддерживает это через challenge механизм: если data не доступна через DA provider в течение challenge window, sequencer обязан опубликовать её on-chain.

Интеграция с Celestia — это инфраструктурное решение с долгосрочными последствиями для архитектуры. Правильно сделанная, она снижает DA costs на 1-2 порядка и открывает путь к throughput-у, недостижимому при хранении данных на Ethereum.