Rollup сталкиваются с дилеммой: хранить все данные на Ethereum дорого, а off-chain DA решения требуют доверия. EigenDA решает эту проблему с помощью математического доказательства доступности и экономических гарантий EigenLayer. По сравнению с Ethereum blobs, EigenDA обеспечивает в 10 раз больший throughput (10+ MB/s) при значительно меньшей стоимости. Экономия на комиссиях достигает 90% — на одном из наших проектов экономия превысила десятки тысяч долларов в месяц при throughput 5 MB/s.
Наша команда имеет 10+ успешных интеграций DA слоёв для rollup на Ethereum, Arbitrum и OP Stack. EigenDA использует технологию EigenLayer restaking для обеспечения безопасности.
Как EigenDA решает проблему доступности данных?
EigenDA использует Erasure coding и Data Availability Sampling (DAS). Данные размером D кодируются в M chunks (M > D) с помощью Reed-Solomon кода. Любые D из M chunks достаточно для восстановления оригинала. Если 50% операторов недоступны — данные всё равно восстановимы.
Data Availability Sampling (DAS) позволяет light client верифицировать доступность данных, скачав только небольшое случайное подмножество chunks. Если скачать 30 случайных chunks и все доступны, с вероятностью >99.9% все данные доступны (при 50% erasure coding).
Blob (данные rollup) ↓ Reed-Solomon encoding Chunks [c0, c1, c2, ..., cn] ↓ KZG polynomial commitments Commitment (короткое доказательство данных) ↓ Dispersal к операторам Операторы хранят chunks + отвечают на sampling запросы Как устроена архитектура EigenDA?
EigenDA состоит из трёх компонентов:
- Операторы (Operators) — нодовладельцы, которые restaked ETH через EigenLayer и предоставляют хранение и bandwidth. Более 100 операторов уже в сети.
- Disperser — сервис (пока централизованный у EigenLabs, roadmap на децентрализацию), который принимает данные от rollup, делит их на chunks через erasure coding, распределяет по операторам, собирает подписи.
- Верификатор on-chain — смарт-контракт на Ethereum, который верифицирует, что quorum операторов подписал attestation о получении данных.
Сравнение EigenDA с альтернативами
| Параметр | Ethereum blobs (EIP-4844) | EigenDA | Celestia | Avail |
|---|---|---|---|---|
| Throughput | ~0.75 MB/блок (6 blobs) | 10+ MB/s (масштабируется) | ~1-2 MB/блок | ~2 MB/блок |
| Стоимость | Зависит от blob рынка | Значительно дешевле | Дешевле ETH blobs | Дешевле ETH blobs |
| Модель доверия | Ethereum validator set | EigenLayer restakers | Celestia validators | Avail validators |
| Latency | ~12 сек (1 блок) | ~10-12 сек | ~15 сек | ~20 сек |
| Зрелость | Production | Mainnet | Production | Beta |
| EVM интеграция | Нативная | Через proxy/adapter | Через adapters | Через adapters |
Как выполнить интеграцию EigenDA?
- Анализ архитектуры — определяем, какой тип интеграции подходит: через готовый proxy (OP Stack) или кастомный.
- Развёртывание инфраструктуры — настраиваем EigenDA Disperser, контракты и подключаемся к EigenLayer. Тестируем на Holesky.
- Интеграция dispersal — имплементируем отправку данных через EigenDA API с fallback на Ethereum calldata. Реализуем on-chain верификацию.
- Нагрузочное тестирование — проверяем throughput, latency и устойчивость к отказам. Используем Tenderly для симуляции.
- Аудит и деплой — проводим аудит контрактов (Slither, Mythril) и переносим конфигурацию в mainnet. Настраиваем мониторинг.
Пример кода dispersal и верификации
Rollup sequencer отправляет данные через EigenDA Disperser API:
func disperseBlob(data []byte) (*disperser.BlobInfo, error) { conn, err := grpc.Dial("disperser-holesky.eigenda.xyz:443", grpc.WithTransportCredentials(...)) if err != nil { return nil, err } defer conn.Close() client := disperser.NewDisperserClient(conn) reply, err := client.DisperseBlob(context.Background(), &disperser.DisperseBlobRequest{ Data: data, CustomQuorumNumbers: []uint32{}, AccountId: accountId, }) if err != nil { return nil, err } for { statusReply, _ := client.GetBlobStatus(context.Background(), &disperser.BlobStatusRequest{ RequestId: reply.RequestId, }) if statusReply.Status == disperser.BlobStatus_CONFIRMED { return statusReply.Info, nil } time.Sleep(2 * time.Second) } } func postBatchWithFallback(batchData []byte) error { blobInfo, err := disperseToEigenDA(batchData) if err == nil { return postToEthereumWithEigenDARef(blobInfo) } log.Warn("EigenDA dispersal failed, falling back to calldata", "err", err) return postToEthereumCalldata(batchData) } После confirmation serialized BlobInfo постится в Ethereum в calldata.
On-chain верификация
interface IEigenDAServiceManager { function confirmBatch(BatchHeader calldata batchHeader, OperatorStakesAndSignature calldata operatorStakesAndSignature) external; function verifyBlob(BlobHeader calldata blobHeader, BlobVerificationProof calldata blobVerificationProof) external view; } contract RollupWithEigenDA { IEigenDAServiceManager public eigenDA; function submitBatch(bytes calldata batchData, BlobHeader calldata eigenDABlobHeader, BlobVerificationProof calldata eigenDAProof) external { eigenDA.verifyBlob(eigenDABlobHeader, eigenDAProof); bytes32 batchRoot = keccak256(batchData); _submitBatchRoot(batchRoot); } } Интеграция с OP Stack через EigenDA Proxy
Для rollup на базе OP Stack есть готовый EigenDA Proxy — sidecar сервис, реализующий OP Stack alt-DA интерфейс:
eigenda-proxy: image: ghcr.io/layr-labs/eigenda-proxy:latest environment: - EIGENDA_PROXY_ADDR=0.0.0.0 - EIGENDA_PROXY_PORT=4242 - EIGENDA_PROXY_EIGENDA_DISPERSER_RPC=disperser-holesky.eigenda.xyz:443 - EIGENDA_PROXY_G1_PATH=/data/g1.point - EIGENDA_PROXY_G2_POWER_OF_TAU_PATH=/data/g2.point.powerOf2 volumes: - ./data:/data OP Stack batch poster конфигурируется с --altda.da-service=true и указывает на proxy. Всё остальное прозрачно.
Что входит в интеграцию?
| Этап | Что делаем | Результат |
|---|---|---|
| Аналитика | Изучаем архитектуру вашего rollup, выбираем схему интеграции (proxy / кастомный) | Технический план |
| Настройка инстанса EigenDA | Деплой контрактов, настройка quorum, подключение к EigenLayer | Рабочая среда на testnet |
| Интеграция софта | Имплементация dispersal логики, адаптация batch poster | Код, протестированный на Holesky |
| Тестирование и аудит | Нагрузочное тестирование, аудит контрактов (через Slither, Mythril) | Отчёт об аудите |
| Деплой в mainnet | Перенос конфигурации, мониторинг, документация | Продакшн-система + runbook |
Сроки и стоимость
- Интеграция через proxy (OP Stack): от 2 до 3 недель настройка, тестирование и запуск на testnet.
- Кастомная интеграция: от 4 до 8 недель, включая аудит.
- Разработка собственного DA слоя на EigenDA: от 3 до 4 месяцев.
Стоимость рассчитывается индивидуально. Получите консультацию инженера — мы оценим ваш проект бесплатно. Свяжитесь с нашими специалистами для детального обсуждения.
Наша команда выполнила 10+ интеграций DA слоёв, использует промышленные инструменты (Foundry, Slither, Tenderly) и гарантирует корректную настройку с последующей поддержкой. Закажите консультацию по интеграции EigenDA.







