Вышла версия 0.6 c-lightning
Lightning Network

Вышла версия 0.6 c-lightning

Christian Decker, Rusty Russell

Свершилось: мы, команда c-lightning, рады объявить о выпуске версии 0.6 c-lightning – важного этапа этого проекта. Полностью переписанная имплементация является первым полным воплощением всех спецификаций c-lightning. Уйдя от протокола, используемого при разработке спецификаций, к новой модульной и расширяемой архитектуре, мы создали решение, которое лучше адаптируется к вашим потребностям и инфраструктуре.

Статистика роста сети Lightning Network

Сегодняшний день также знаменует собой важную веху роста и развития сети Lightning Network: все три имплементации Lightning (Eclair, lnd и c-lightning) теперь находятся в бета-версии! Со времени появления в январе магазина Blockstream сеть Lightning Network значительно разрослась. На момент объявления о создании магазина Blockstream в сети Lightning Network было 46 открытых каналов с пропускной способностью 0,682 BTC. Сегодня существует около 7800 открытых каналов с пропускной способностью 26 BTC – то есть за 6 месяцев количество каналов выросло на 16856%, а их пропускная способность – на 4084%!


Новые функции

Всех новых функций версии 0.6 не перечислишь, так что ниже приведены наиболее интересные и эффективные:

  • Легкие ноды: В предыдущих версиях для обеспечения доступа к сети Биткоин требовалась полная нода bitcoinid, работающая параллельно с c-lightning. В этой версии по-прежнему необходима утилита bitcoin-cli, но теперь она может также взаимодействовать с удаленными нодами, включая некоторые легкие ноды, например, spruned. Это позволяет запускать ноду c-lightning на устройствах Raspberry Pi, а также на других маломощных устройствах.
  • Обновлён протокол коммуникации (gossip protocol), предполагающий более экономное потребление трафика, который запрашивает конкретную информацию, а не полные сетевые данные, как это было в предыдущей версии. Это особенно важно для маломощных и мобильных устройств, которые в противном случае тратили бы много трафика и энергии на загрузку и проверку уже имеющейся информации.
  • Стабильность API: Интерфейс JSON-RPC c-lightning и поддерживающие его библиотеки были переработаны, чтобы минимизировать изменения в будущих версиях. Такая стабильность API призвана облегчить создание других проектов на основе c-lightning, поскольку в течение обозримого будущего мы будем поддерживать эту версию API и обратную совместимость на случай внесения изменений.
  • Кошелек и синхронизация: Эта версия c-lightning включает полноценный кошелек, с помощью которого можно управлять средствами как внутри сети, так и за ее пределами. Больше не надо обрабатывать транзакции вручную! Все средства автоматически отслеживаются и возвращаются во внутренний кошелек в кратчайшие сроки, без участия пользователя. Кроме того, отслеживание блоков теперь происходит внутри кошелька, а проведение длинных повторных проверок блокчейнов прекращается.
  • Поддержка TOR: в c-lightning теперь поддерживается подключение к узлам по сети TOR, автоматическая регистрация в качестве скрытого сервиса и прием входящих соединений по TOR.
  • Логика платежей подверглась серьезной переработке для поддержки автоматических повторных попыток при сбое маршрутизации, рандомизации выбора маршрута и улучшенной обратной связи о текущем состоянии платежа.
  • И как всегда: производительность, производительность, производительность.

Гибкость благодаря модульности

Архитектура c-lightning основана на ряде независимых коммуницирующих процессов, каждый из которых имеет свою зону ответственности. Это обеспечивает лучшую интеграцию в вашу инфраструктуру и лучшую адаптацию к вашим потребностям. Два демона, являющиеся глобальными для всех каналов, gossipd и hsmd, заслуживают особого внимания из-за их модульной конструкции.

gossipd управляет локальной сетью и выполняет задачу поиска пути от источника платежа до места назначения. Программа по умолчанию пытается найти маршрут с разумными компромиссами между комиссиями, таймаутами и стабильностью. Она также запутывает маршрут, выбирая маршруты случайным образом из числа возможных маршрутов и изменяя суммы и тайм-ауты, чтобы скрыть конечные точки платежа. Включенную по умолчанию функцию можно легко отключить, если у вас есть особые требования к маршрутизации или если вы хотите применить какую-то конкретную политику маршрутизации, например, всегда выбирать маршрут с наименьшими таймаутами или самыми низкими комиссиями.

hsmd управляет всеми операциями, касающимися криптографических материалов, и контролирует средства в канале. Это единственная подсистема, которая имеет доступ к приватному ключу узла. Это означает, что другие подсистемы не содержат никакой частной информации и должны связываться с демоном hsmd для подписи или расшифровки чего-либо. Подобный способ централизации криптографических операций уменьшает объем информации, которую необходимо защитить, и приводит к созданию ряда интересных сценариев применения. Хотя установленная по умолчанию версия hsmd сама по себе обеспечивает хорошую безопасность за счет разделения процессов и создания дополнительного уровня защиты на уровне ОС, например, SELinux и AppArmor, ее можно легко заменить функцией, взаимодействующей с аппаратным модулем безопасности.

Кроме того, замена hsmd-имплементации позволяет обеспечивать безконсольную эксплуатацию, например, запустить у себя дома ноду c-lightning, используя сопряженное мобильное приложение для управления приватными ключами и инициирования платежей или создания счетов.

Такое разделение функциональности c-lightning на несколько демонов значительно повышает не только гибкость, но и безопасность нод, поскольку гарантирует, что злоумышленник не сможет напрямую взаимодействовать с чем-либо связанным с приватными ключами. Каждая подсистема независимо проверяет согласованность внутреннего состояния, отключая узел и убивая его процесс при обнаружении любой несогласованности. Архитектура нескольких демонов также позволяет использовать Docker, SELinux и AppArmor для блокировки информации, к которой каждый демон имеет доступ, а также действий, которые они могут выполнять.

Что дальше?

Наша работа с c-lightning еще далеко не завершена. Мы постоянно работаем над функциями и усовершенствованиями, а также над улучшением производительности, стабильности и удобства пользования. Не нашли свою любимую функцию? Есть отзывы, которые могут быть полезны? Почему бы не обсудить проблему на Github, написать нам на лист рассылки или связаться с нами по IRC.

Параллельно мы продолжаем участвовать в продвижении самой спецификации Lightning. Мы также активно исследуем как может выглядеть следующая итерация протокола с помощью таких инициатив как наше предложение об использовании eltoo и таких предложений о внедрении в Биткоин как SIGHASH_NOINPUT.

Мы бы хотели поблагодарить тех, кто не только участвовал в написании кода c-lightning, но и тех, у кого хватило #безрассудства протестировать наши разработки и сообщить что работает, а что надо улучшить. И, наконец, мы бы хотели выразить благодарность другим командам специалистов по сети Lightning Network, ACINQ и индивидуальным участникам, которые внесли свою лепту в создание в сообществе сети Lightning Network такого приятного духа солидарности и открытости!