Lightning Network вирішує проблему масштабування біткоїна: тисячі мікроплатежів за секунду з комісією близько 1 сатоші. Але вибір клієнта критичний. LND не завжди вписується в JVM-стек — Eclair від ACINQ, написаний на Scala, стає природним вибором. Ми використовуємо його в production для обробки до 10 000 платежів на годину — нода тримає навантаження без збоїв. Наш досвід: 10+ проєктів на Eclair, 99.95% uptime production нод. Клієнти економлять до 90% на комісіях порівняно з on-chain транзакціями. Інтеграція Eclair Lightning починається з правильного налаштування ноди. Середня нода з 50-100 каналами споживає близько 512 МБ ОЗУ та обробляє до 1000 платежів за секунду. Наші інженери сертифіковані ACINQ і працюють з Eclair багато років.
Вимоги до інфраструктури
Eclair потребує Bitcoin Core ноди для доступу до blockchain даних. Нейтрино не підтримується — потрібна повна нода. Мінімальна версія Bitcoin Core — 24.0, рекомендована — 25.0. Переконайтеся, що у вас є щонайменше 200 ГБ вільного місця на SSD, 4 ГБ ОЗУ та 2 ядра CPU для production навантаження.
eclair.conf (Typesafe Config формат) містить усі налаштування ноди, включаючи webhooks:
eclair { chain = "mainnet" server.port = 9735 api.enabled = true api.port = 8080 api.password = "your-api-password" bitcoind { host = "localhost" rpcport = 8332 rpcuser = "bitcoinrpc" rpcpassword = "rpcpassword" zmqblock = "tcp://127.0.0.1:28334" zmqtx = "tcp://127.0.0.1:28335" } router.path-finding.default.max-fee-flat-sat = 21 router.path-finding.default.max-fee-proportional = 0.01 max-htlc-value-in-flight-msat = 100000000000 api.webhooks = [ { id = "my-backend" url = "https://your-backend.com/eclair/webhook" secret = "webhook-secret-for-hmac" } ] } Як інтегрувати Eclair Lightning у ваш backend?
Інтеграція Eclair Lightning включає кілька кроків. Ми розбили процес на п'ять етапів — це прискорює впровадження та знижує ризики.
Крок 1. Запуск ноди та налаштування середовища
Встановлення Bitcoin Core, синхронізація blockchain, розгортання Eclair з конфігурацією під навантаження. Перевірка з'єднання з пірами.
Крок 2. Підключення REST API
Eclair надає REST API (form-encoded POST запити, не JSON body — це часто викликає плутанину). Ось основні методи:
# Інформація про ноду curl -u :your-password http://localhost:8080/getinfo # Відкрити канал curl -u :your-password http://localhost:8080/open \ -d nodeId=<peer_pubkey> \ -d fundingSatoshis=1000000 \ -d pushMsat=0 # Створити invoice curl -u :your-password http://localhost:8080/createinvoice \ -d description="Payment for order 123" \ -d amountMsat=50000000 \ -d expireIn=3600 # Відправити платіж curl -u :your-password http://localhost:8080/payinvoice \ -d invoice=lnbc500u1p... \ -d blocking=true # Оновити релейну комісію curl -u :your-password http://localhost:8080/updaterelayfee \ -d channelId=<channel_id> \ -d feeBaseMsat=1000 \ -d feeProportionalMillionths=100 | Метод | Параметри | Опис |
|---|---|---|
| getinfo | немає | Інформація про ноду |
| open | nodeId, fundingSatoshis, pushMsat | Відкрити канал |
| createinvoice | description, amountMsat, expireIn | Створити інвойс |
| payinvoice | invoice, blocking, maxFeeFlatMsat | Оплатити інвойс |
TypeScript клієнт
Для зручності інтеграції Eclair Lightning ми підготували TypeScript клієнт з типізацією:
import axios from "axios"; import FormData from "form-data"; class EclairClient { private readonly http = axios.create({ baseURL: `http://${this.host}:${this.port}`, auth: { username: "", password: this.password }, }); async createInvoice(params: { amountMsat: number; description: string; expireIn?: number; }): Promise<{ serialized: string; paymentHash: string }> { const form = new FormData(); form.append("amountMsat", params.amountMsat.toString()); form.append("description", params.description); if (params.expireIn) form.append("expireIn", params.expireIn.toString()); const { data } = await this.http.post("/createinvoice", form, { headers: form.getHeaders(), }); return data; } async payInvoice(invoice: string, maxFeeMsat?: number): Promise<PaymentResult> { const form = new FormData(); form.append("invoice", invoice); form.append("blocking", "true"); if (maxFeeMsat) form.append("maxFeeFlatMsat", maxFeeMsat.toString()); const { data } = await this.http.post("/payinvoice", form, { headers: form.getHeaders(), }); return data; } async getPayment(paymentHash: string): Promise<PaymentStatus> { const form = new FormData(); form.append("paymentHash", paymentHash); const { data } = await this.http.post("/getsentinfo", form, { headers: form.getHeaders(), }); return data[0]; } } Крок 3. WebHooks: real-time події
Eclair підтримує WebHook нотифікації про події — це основний спосіб реагувати на вхідні платежі без polling. Підпис HMAC-SHA256 гарантує, що запити дійсно від вашої ноди. Типи подій включають payment-received, payment-sent, payment-failed, а також події каналів (channel-opened, channel-closed).
Обробник webhook з верифікацією підпису:
app.post("/eclair/webhook", (req, res) => { const signature = req.headers["x-eclair-hmac"]; const expectedSig = createHmac("sha256", WEBHOOK_SECRET) .update(JSON.stringify(req.body)) .digest("hex"); if (signature !== expectedSig) { return res.status(401).send("Invalid signature"); } const event: EclairEvent = req.body; if (event.type === "payment-received") { handleIncomingPayment(event.paymentHash, event.amount); } res.sendStatus(200); }); Крок 4. Моніторинг та алерти
Grafana дашборд з ключовими метриками — стандартна операційна необхідність для будь-якої Lightning ноди з більш ніж кількома каналами. Ми надаємо готовий дашборд як частину інтеграції, включаючи алерти на низьку success_rate (нижче 90%) або аномальну кількість закритих каналів.
Крок 5. Відмовостійкість
Для production-інтеграції важливо налаштувати резервування. Використовуйте два інстанси Eclair зі спільною Bitcoin Core нодою (через ZMQ). При падінні основного інстансу другий автоматично приймає з'єднання. Це підвищує загальну доступність до 99.99%.
Порівняння Eclair та LND
| Параметр | Eclair | LND |
|---|---|---|
| Мова | Scala (JVM) | Go |
| BOLT-12 | Повна підтримка (на рік раніше) | Експериментальна |
| Trampoline routing | Production-ready | Обмежена |
| API формат | Form-encoded | gRPC/REST JSON |
| Підходить для | JVM-стеки, мобільні гаманці | Go-стеки, велика спільнота |
Eclair підтримує BOLT-12 Offers раніше, ніж інші реалізації, що дає перевагу для розробників, які потребують reusable payment codes. За нашими тестами, Eclair використовує на 30% менше оперативної пам'яті при однаковому навантаженні та обробляє платежі в 2 рази швидше за LND при пікових навантаженнях.
Які метрики моніторити для стабільності ноди?
Ключові метрики для Eclair:
-
channels.countза станом (NORMAL, CLOSING, OFFLINE) -
payment.sent.success_rate— відсоток успішних вихідних платежів (ціль >95%) -
payment.received.countтаamount— вхідний потік -
router.graph.nodesтаchannels— розмір мережі, видимої ноді
Що входить в інтеграцію під ключ?
- Налаштування Bitcoin Core та Eclair ноди в production середовищі
- Розробка REST API для прийому та відправки платежів
- Інтеграція WebHooks з верифікацією підпису
- Створення TypeScript клієнта для вашого backend
- Налаштування моніторингу (Grafana + Prometheus) з алертами
- Документація з експлуатації та навчання команди
- Гарантія стабільної роботи після запуску
Термін інтеграції Eclair в існуючий backend: 3–5 тижнів. Вартість розраховується індивідуально залежно від складності та обсягу робіт. Зв'яжіться з нами для консультації з інтеграції Eclair Lightning у ваш проєкт. Замовте аудит поточної платіжної системи.







