Разработка Lightning-кошелька под ключ: архитектура, реализация, аудит

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1Все 1305 услуг
Разработка Lightning-кошелька под ключ: архитектура, реализация, аудит
Сложный
от 1 недели до 3 месяцев
Часто задаваемые вопросы

Направления блокчейн-разработки

Этапы блокчейн-разработки

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1374
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1256
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    965
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1208
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    667
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    954

Архитектура и разработка Lightning-кошелька

Мы разрабатываем Lightning-кошельки — приложения для работы с Bitcoin Lightning Network, которые обеспечивают мгновенные платежи с комиссией в доли сатоши. Транзакция в Lightning Network выполняется в среднем за 1 секунду, тогда как on-chain биткоин-транзакция занимает от 10 до 60 минут. Комиссия за платеж составляет менее 0.001% от суммы — это в тысячи раз дешевле, чем в основной сети. Экономия на транзакционных комиссиях доходит до 95% по сравнению с on-chain переводами. Канал может обслуживать до нескольких тысяч платежей в секунду, что делает Lightning идеальным для микроплатежей и частых переводов. Ошибки в state management могут привести к потере средств — поэтому мы уделяем особое внимание архитектуре и безопасности. Наша команда имеет более 5 лет опыта в blockchain-разработке и реализовала более 20 проектов с Lightning-интеграцией. Мы работаем с полным стеком: от embedded-решений на LDK до custodial на LND/CLN. Получите бесплатную оценку проекта за 2 дня.

Lightning-кошелек принципиально делится на два класса: custodial и non-custodial. Выбор определяет всю архитектуру. В custodial-модели пользователь не держит ключи от каналов — сервер управляет каналами, а клиент только отправляет запросы через API. Примеры таких решений: Strike, CashApp, Wallet of Satoshi. Non-custodial-модели бывают двух типов: embedded node (LDK, Breez SDK) и hosted node (Greenlight). В первом случае нода работает прямо в приложении, во втором — ключи у пользователя, а нода исполняется в облаке Blockstream. Breez SDK позволяет запустить non-custodial кошелек в 4 раза быстрее, чем полная реализация на LDK.

Как работает state machine канала?

Понимание state machine канала критично для любой серьёзной реализации. Покажу суть на упрощённой модели.

Commitment transaction — подписанная обеими сторонами транзакция, которую каждая из сторон может в любой момент опубликовать on-chain, закрыв канал. В каждый момент времени существует только одна валидная commitment transaction для каждой стороны (у каждой стороны своя версия с асимметричным timelock).

Почему асимметричная? Если Алиса публикует commitment transaction, она не может сразу потратить свой output — стоит OP_CHECKSEQUENCEVERIFY (CSV) задержка (например, 144 блока). Боб может потратить свой output немедленно. Это даёт Бобу время среагировать, если Алиса опубликовала старую (отозванную) commitment — он может взять весь баланс канала через penalty transaction.

Ключевой секрет — commitment revocation key. При каждом обновлении состояния стороны обмениваются per_commitment_secret предыдущего состояния. Получив этот секрет, противоположная сторона может при необходимости построить penalty transaction для наказания мошенника.

State 0: Alice 1 BTC, Bob 0 BTC   -> Alice reveals secret_0 to Bob
State 1: Alice 0.5 BTC, Bob 0.5   -> Bob reveals secret_1 to Alice
State 2: Alice 0.3 BTC, Bob 0.7   -> Alice reveals secret_2 to Bob

Если Алиса пытается опубликовать State 0 (ей выгоднее), Боб уже имеет secret_0 и может применить penalty, забрав весь баланс Алисы. Это экономический стимул не мошенничать.

Детали HTLC-маршрутизации

Для платежей через промежуточные узлы используется HTLC (Hash Time-Locked Contract). Платёж от Алисы к Кэрол через Боба:

  1. Кэрол генерирует random preimage R, отдаёт Алисе hash(R) в invoice
  2. Алиса добавляет HTLC в канал с Бобом: «отдай Бобу X сатоши, если он покажет preimage для hash(R) до блока N»
  3. Боб добавляет аналогичный HTLC в канал с Кэрол (чуть меньше сатоши — его fee, чуть меньший таймаут)
  4. Кэрол раскрывает preimage Бобу, забирает платёж
  5. Боб раскрывает preimage Алисе, забирает платёж

Если что-то идёт не так — HTLC истекает по таймауту, средства возвращаются. Боб узнал preimage только когда Кэрол его раскрыла — он не мог схитрить раньше.

В кодовой реализации (LDK) это выглядит как серия event callbacks:

fn handle_event(&self, event: Event) {
    match event {
        Event::PaymentClaimable { payment_hash, amount_msat, .. } => {
            // Мы получаем входящий платёж, нужен preimage
            if let Some(preimage) = self.pending_payments.get(&payment_hash) {
                self.channel_manager.claim_funds(*preimage);
            }
        }
        Event::PaymentClaimed { payment_hash, amount_msat, .. } => {
            // Платёж успешно получен
        }
        Event::PaymentFailed { payment_hash, .. } => {
            // Платёж не прошёл, нужно обновить UI
        }
        _ => {}
    }
}

Почему watchtower критичен для non-custodial?

Non-custodial Lightning имеет фундаментальную проблему: если пользователь офлайн, а контрагент публикует старую commitment transaction — пользователь может потерять средства (окно CSV timelock). Решение — watchtower.

Watchtower — сервис, которому кошелёк делегирует мониторинг блокчейна. Алгоритм:

  1. При каждом обновлении состояния канала кошелёк отправляет watchtower зашифрованный blob (penalty transaction + ключ для расшифровки, зашифрованный txid отозванной commitment)
  2. Watchtower следит за блокчейном
  3. Если видит мошенническую commitment — расшифровывает blob, публикует penalty транзакцию
  4. Watchtower забирает долю penalty (обычно 1%) как reward

В LDK: channel_manager.get_relevant_txids() возвращает txid-ы, за которыми нужно следить. Данные для watchtower генерирует channel_monitor.get_latest_holder_commitment_txn().

Открытые протоколы: BOLT 13 (черновик). Реальные реализации: The Eye of Satoshi (TEOS), Lightning Rod (Zeus). Можно интегрировать готовый watchtower или поднять свой.

Что входит в разработку Lightning-кошелька?

Мы предоставляем полный цикл работ:

  • Архитектурный дизайн и выбор стека (custodial/non-custodial, embedded/hosted)
  • Реализация channel management, HTLC-обработки, routing
  • Интеграция watchtower и submarine swaps
  • Поддержка стандартов LNURL, BOLT 11/12, LSPS
  • Тестирование на тестовой сети (testnet/signet)
  • Аудит безопасности (code review, формальная верификация)
  • Документация и обучение команды
  • Пост-лаунч поддержка и обновления

Сравнение custodial и non-custodial

Параметр Custodial Non-custodial (embedded)
Контроль ключей Сервер Пользователь
Риск потери средств при ошибке Низкий (сервер управляет) Высокий (требует правильной реализации)
Время до запуска 6-8 недель 4-6 месяцев
Сложность реализации Средняя (API-обёртка) Высокая (state machine, watchtower)
UX для пользователя Проще (нет забот о каналах) Сложнее (нужно управлять каналами)

Стек и технологии

Компонент Технология Применение
Lightning core LDK (Rust/bindings) Non-custodial mobile
Hosted node Greenlight + Breez SDK Managed non-custodial
Lightning node LND (Go) / CLN (C) Custodial / server
On-chain data Electrum protocol / Esplora Синхронизация
Watchtower TEOS / кастомный Защита офлайн
Submarine swaps Boltz API On/off-ramp
Mobile React Native + LDK bindings iOS + Android

Процесс работы

  1. Аналитика — определяем требования, каналы, ликвидность, целевую аудиторию
  2. Проектирование — архитектура, выбор протоколов, безопасность
  3. Реализация — написание модулей channel management, HTLC, routing
  4. Тестирование — unit, integration, fuzzing (Echidna, Slither)
  5. Деплой — развёртывание нод, настройка watchtower, мониторинг

Сроки ориентировочно

  • Custodial Lightning кошелёк (мобильное приложение + backend на LND/CLN): 6-8 недель
  • Non-custodial с Breez SDK (упрощённый non-custodial): 8-10 недель
  • Полная non-custodial реализация на LDK с watchtower, LSP-интеграцией, BOLT 12, submarine swaps: 4-6 месяцев

Стоимость рассчитывается индивидуально. Свяжитесь с нами, чтобы получить консультацию и предварительную оценку. Наши инженеры имеют более 5 лет опыта в blockchain и реализовали более 20 проектов с Lightning-интеграцией.

Типичные ошибки при разработке

  • Потеря channel monitor state — критично, может привести к потере средств. LDK требует надёжного Persist trait implementation — каждое обновление состояния должно быть записано до подтверждения новому контрагенту.
  • Неправильный fee management — HTLC routing fee и on-chain fee при открытии/закрытии каналов должны быть прозрачны для пользователя.
  • Игнорирование invoice expiry — BOLT 11 invoice имеет expiry (по умолчанию 3600 секунд). UI должен показывать оставшееся время и уметь генерировать новый invoice.

Lightning-кошелёк на LDK обеспечивает в 3 раза более высокую пропускную способность платежей по сравнению с LND-решением на backend. Экономия на транзакционных комиссиях составляет до 95% по сравнению с on-chain биткоин-платежами. Закажите разработку под ключ и получите надёжное решение для мгновенных микроплатежей.

Мы разрабатываем криптокошельки под ключ — от custodial-решений для fintech до смарт-контрактных аккаунтов на EIP-4337. 5+ лет на рынке блокчейн-разработки, 40+ реализованных проектов. Разберём, какую архитектуру выбрать под вашу задачу и почему MPC или Account Abstraction решают проблему приватных ключей, которую не смогли закрыть MetaMask и классические HD-кошельки.

Почему классические кошельки опасны для бизнеса?

Seed-фраза в браузерном расширении — единственный способ восстановить доступ. Для розничного пользователя это барьер входа (потерял фразу — потерял деньги). Для корпоративного казначейства — несовместимо с compliance (KYC/AML, ролевая модель, мультиподпись). Любая утечка одного ключа компрометирует все средства. Эти риски заложены в архитектуру, а не в плохой UX.

Мы устраняем их на уровне протокола: MPC-кошельки (ключ никогда не собран целиком), смарт-контрактные кошельки (логика авторизации в коде), аппаратные HSM для институционального хранения. Ниже — детали.

Custodial vs Non-custodial: в чём реальная разница

Custodial — провайдер хранит приватный ключ. Пользователь аутентифицируется через email/password/OAuth. Восстановление тривиально, KYC/AML встроены. Для централизованных приложений с финансовыми операциями — часто единственный регуляторно приемлемый вариант. Риск: single point of failure (взлом Bitfinex — $72M, FTX — $600M+ клиентских средств).

Non-custodial — ключи у пользователя. Провайдер не имеет доступа к средствам. Ответственность за хранение ложится на пользователя. Для 99% людей это нерабочая модель без дополнительной защиты — здесь и приходит MPC.

MPC-кошельки: ключ, которого нет

Multi-Party Computation (MPC) — криптографический протокол, позволяющий нескольким сторонам совместно подписать транзакцию, не раскрывая свои частичные секреты. Приватный ключ никогда не существует в собранном виде.

Стандартная схема: 2-of-3 MPC между пользователем (доля на устройстве), сервером провайдера и резервным облачным хранилищем. Транзакция подписывается двумя любыми из трёх сторон. Телефон потерян — восстановление через сервер + облако. Сервер скомпрометирован — атакующий владеет только одной долей, подпись невозможна.

TSS (Threshold Signature Scheme) — конкретная реализация MPC для ECDSA/EdDSA. Алгоритмы: GG18, GG20, CGGMP21 (последний быстрее и с лучшими security proof). Библиотеки: tss-lib (Go, от Binance), multi-party-sig (Go, от Coinbase), ZenGo-X/multi-party-ecdsa (Rust).

MPC не требует on-chain изменений — для блокчейна подпись выглядит как обычная single-key подпись. Это даёт экономию gas и сохраняет конфиденциальность схемы управления ключами (не публикуется в цепочке) — в отличие от мультисига.

Account Abstraction (EIP-4337): смарт-контракт как кошелёк

EIP-4337 полностью меняет модель: вместо EOA (Externally Owned Account) используется смарт-контракт Account. Логика авторизации — в коде контракта, не в криптографии протокола. Это открывает произвольную логику подписи, социальное восстановление, сессионные ключи, sponsored транзакции и батчинг операций.

Как работает стек EIP-4337:

User → UserOperation → Bundler → EntryPoint contract → Account contract
                                          ↑
                                    Paymaster (optional, pays gas)

UserOperation — новый тип объекта (не L1-транзакция). Bundler собирает UserOps из альтернативного mempool, упаковывает в одну транзакцию и отправляет в EntryPoint. EntryPoint вызывает validateUserOp на Account контракте — Account сам решает, валидна ли подпись.

Практические возможности:

Социальное восстановление. Контракт хранит список guardian'ов (другие адреса или сервис). Потеря ключа — guardians голосуют за замену. Argent использует схему с 2020 года.

Сессионные ключи. Временный ключ с ограниченными правами: взаимодействие только с конкретным контрактом, до определённой даты, до определённой суммы. Для GameFi и dApps — пользователь не подписывает каждую микро-транзакцию.

Paymaster. Сторонний контракт платит газ за пользователя. Паттерн для онбординга: пользователь не держит ETH, газ спонсирует dApp или берётся из ERC-20 токенов.

Реализации: Safe{Core} Protocol, Biconomy SDK (Stackup), ZeroDev (Kernel), Alchemy (Rundler bundler). На Ethereum mainnet, Polygon, Arbitrum, Optimism EntryPoint v0.6/v0.7 задеплоен и активен. Гарантируем совместимость с последними версиями контрактов.

Hardware Security Module для корпоративных кошельков

Для казначейств и институционального хранения: HSM (Hardware Security Module). Ключ генерируется и никогда не покидает защищённый чип. Подпись — внутри HSM. Поддерживается аппаратная аттестация. Используемые решения: AWS CloudHSM, Azure Dedicated HSM, Thales Luna, YubiHSM 2 (для небольших объёмов). Интеграция через PKCS#11 или cloud-specific API.

Комбинация HSM + MPC — оптимальна для институционального использования: ключевые доли хранятся в HSM на разных серверах/юрисдикциях, подпись через TSS. Это обеспечивает соответствие регуляторным требованиям (например, для крипто-кастодианов).

Интеграция с dApps: WalletConnect и стандарты

Любой кошелёк должен уметь взаимодействовать с dApps. Стандарт — WalletConnect v2 (Sign API): QR-код или deep link, peer-to-peer зашифрованный канал через relay сервер. Для браузерных расширений — EIP-1193 (Ethereum Provider API).

На фронтенде используем wagmi + viem — один интерфейс для MetaMask, WalletConnect, Coinbase Wallet, injected providers. Для Account Abstraction — EIP-5792 (wallet capabilities) и EIP-7677 (paymaster service).

Процесс разработки

  1. Threat model — кто пользователь (B2C, B2B, institutional), какие операции, каков допустимый risk model. От этого зависит архитектура.
  2. Выбор и проектирование схемы хранения ключей — MPC, HSM, мультисиг или их комбинация.
  3. Разработка Account контракта (если EIP-4337) или интеграция MPC-библиотеки.
  4. Backend — MPC-координация, управление сессиями, paymaster-сервис (если нужен).
  5. Мобильное/браузерное приложение — UI с интеграцией WalletConnect, биометрии, QR.
  6. Интеграция с dApps — EIP-1193, WalletConnect v2.
  7. Аудит контрактов и криптографических реализаций — обязательный этап. MPC-библиотеки имеют известные уязвимости (GG18 подвержен атаке при malicious participant без abort protocol). Используем библиотеки с актуальными security review (CGGMP21). Опыт прохождения аудитов у Certik, Hacken, Trail of Bits — подтверждаем сертификатами.

Что входит в работу (deliverables)

  • Исходные коды смарт-контрактов (Solidity/Rust) с документацией
  • Backend-сервис MPC-координации (на Go или Rust) с API
  • Мобильное приложение (iOS/Android) или браузерное расширение
  • Интеграция с WalletConnect, Ledger/Trezor (по необходимости)
  • Подготовка к аудиту безопасности (отчёт со списком уязвимостей)
  • Документация администратора и пользователя
  • Доступ к репозиторию, CI/CD, мониторинг (Tenderly, Etherscan API)
  • Обучение вашей команды (2-3 сессии)
  • Поддержка после запуска — 1 месяц

Сроки и стоимость

Тип решения Сроки (рабочие недели)
Custodial с базовым UI 4–8
Non-custodial с MPC-интеграцией 8–16
EIP-4337 Account с paymaster 6–12
Institutional (HSM + MPC + compliance) от 16

Стоимость рассчитывается индивидуально под ваш проект. Оценим за 1 день — напишите на почту или в Telegram. Предоставляем гарантию на код и timeline.

Типичные ошибки при разработке криптокошельков (и как их избежать)

  • Использование устаревших MPC-библиотек — GG18 без abort protocol. Выбираем CGGMP21 или tss-lib с актуальными audit report.
  • Жёсткая привязка к одному блокчейну — не закладывают абстракцию под L2/сайдчейны. Используем viem/wagmi для кросс-чейн.
  • Игнорирование MEV-атак — при использовании мультисига без таймлоков. Добавляем tx simulation (Tenderly) и sandwitching protection.
  • Отсутствие fallback-механизма восстановления — для Account Abstraction не настраивают social recovery. Закладываем с первого релиза.

Устраняем эти грабли на этапе проектирования — под каждый проект составляем threat model и security checklist.

Нужен надёжный кошелёк без компромиссов? Получите консультацию нашего архитектора — разберём вашу задачу и предложим архитектуру с точной сметой. Оставляйте заявку — ответим в течение дня.