Компания Blockstream, известная как разработчик решений второго уровня для Биткоина, выпустила новый упрощенный механизм обновления для протоколов второго уровня под названием eltoo. Об этом компания заявила в своем блоге 30 апреля.

Чуть более года назад три команды, занимающиеся внедрением Lightning Network, объединили усилия для работы над общей спецификацией стека протоколов. Разработчики Blockstream отмечают что теперь, когда и эта спецификация, и три реализации становятся стабильными и пригодными для использования, пришло время внедрять дальнейшие улучшения: совершенствовать протокол, добавлять новые функции, упрощать и устранять недостатки.

Одним из основных нововведений, которые позволили активировать Lightning, был внесетевой механизм обновления для пересмотра новой конфигурации, гарантирующий, что старые настройки не могут работать в сети. 30 апреля команда Blockstream опубликовала новую исследовательскую работу, посвященную упрощенному механизму обновления eltoo.

Как это работает?

Как утверждают разработчики Blockstream, внесетевые взаимодействия можно сравнить с договорным соглашением между несколькими сторонами с дальнейшим его урегулированием, наряду с тем, как это происходит в суде, выносящем решение по делу – этим судом является блокчейн.

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

«Суд» при этом должен продолжать ждать новой конфигурации, пока в конце концов он не решит принять самое последнее известное ему обновление. Большинство требований, относящихся к работе блокчейнов для протоколов второго уровня, уже реализованы в блокчейне Биткоина.

eltoo

Пример выполнения протокола eltoo, показывающий, как промежуточные состояния могут быть пропущены путем повторного связывания последующей транзакции обновления с предыдущей или непосредственно с транзакцией настройки. Только последняя расчетная транзакция может быть подтверждена в блокчейне.

В eltoo каждое состояние представлено как совокупность двух транзакций: транзакции обновления, которая тратит выход контракта и создает новый выход, и расчетной транзакции, тратящей новый выход и разделяющей средства в соответствии с согласованным распределением. Выходы имеют скрипт, который позволяет немедленно присоединить новую транзакцию обновления, или же расчетную транзакцию, которая будет прикреплена после настраиваемого таймаута. Если участники согласятся на обновление до истечения таймаута, они создадут новую транзакцию обновления, потратив предыдущий выход и дважды потратив выход соответствующего урегулирования, фактически аннулируя его.

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

Ключевой принцип eltoo заключается в том, что этот механизм позволяет пропустить промежуточные обновления, просто связав заключительную транзакцию обновления с созданием контракта. Для того, чтобы это стало возможным, команда Blockstream предлагает новый признак состояния SIGHASH - SIGHASH_NOINPUT, который позволяет привязывать вход транзакции к любому выходу транзакции с соответствующим скриптом.

Поскольку все сценарии ранее обновленных выходов транзакций соответствуют последним скриптам входов, можно связать последующее обновление с любым предыдущим, что позволяет пропускать любое количество промежуточных обновлений. Документ содержит полную схему протокола, включая подробную информацию о том, как создаются скрипты.

Улучшение Lightning

Описанная выше методика – это механизм обновления, позволяющий конечным точкам платежного канала повторно корректировать свои балансы и присоединять к конфигурации более продвинутые конструкции, такие как HTLC. Команда Blockstream отмечает, что не видит в своем предложении замену протоколу Lightning – разработчики лишь хотят улучшить его при помощи нового механизма обновления.

eltoo

Схема различных субпротоколов, входящих в состав Lightning Stack.

Спецификация Lightning Network больше не является спецификацией одного протокола, а представляет собой полный стек протоколов, каждый из которых отвечает за собственные функции. Eltoo не стремится заменить весь стек Lightning, а скорее является лишь заменой для исходного механизма обновления, которая поддерживает обратную совместимость с другими частями стека.

Eltoo имеет принципиально другие компромиссы, чем механизм, представленный в оригинальном документе Lightning, который разработчики Blockstream называют LN-penalty. В то время, как LN-penalty применяет систему штрафов для наказания сторон, работающих неверно, eltoo просто применяет последнее согласованное состояние внесетевого контракта. Это имеет важные последствия для применимости и безопасности протоколов, которые построены поверх механизма обновления.

Некоторые из них связаны с тем, что в eltoo все участники имеют общий набор транзакций, тогда как LN-penalty требует неравенства, при котором одна сторона имеет доступ к некоторым транзакциям, чтобы адаптироваться к реакции участников, ведущих себя ненадлежащим образом. Это изменение устраняет то, что разработчики Blockstream называют токсичной информацией в Lightning.

Токсичная информация исходит от операций, относящихся к устаревшим конфигурациям, которые в случае утечки приведут к потере средств. Это происходит не только если одна сторона неправильно функционирует, но также и если узел забывает об обновлении (например, при восстановлении из резервной копии). С eltoo это уже невозможно, потому что могут быть урегулированы только согласованные конфигурации.

Управление данными для участников также упрощается в соответствии с новой парадигмой: им больше не нужно хранить хэш-прообразы для недействительных конфигураций. Кроме того, им также больше не нужно хранить HTLC, которые были признаны недействительными, поскольку расчетная транзакция, к которой они были присоединены, никогда не может быть совершена в блокчейне. Все, что нужно хранить участникам - это последнюю транзакцию обновления, соответствующую расчетную транзакцию и HTLC, которые тратятся из этого урегулирования. Кроме того, урегулирование упрощено до такой степени, что позволяет просто связать последнюю транзакцию обновления с настройками выхода и разрешить таймауту истечь до трансляции расчетной транзакции.

По утверждению разработчиков Blockstream, можно объединить результаты обновления с SIGHASH_SINGLE, чтобы разрешить присоединение дополнительных входов и выходов в транзакцию обновления во время урегулирования. Хотя это может показаться незначительным изменением, оно позволяет присоединять комиссии к транзакциям обновления во время урегулирования, освобождая участников от необходимости признавать фиксированную комиссию раньше времени. В текущих реализациях необходимо будет согласиться и зафиксировать комиссию за несколько месяцев до того, как будет произведена попытка подтверждения внутрисетевой транзакции. Это позволит прогнозировать, как будет развиваться рынок комиссий.

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

Кроме Lightning

Общий механизм обновления второго уровня eltoo может использоваться для любого количества систем за пределами Lightning. Например, он позволяет создавать внесетевые контракты для любого количества сторон, которые в настоящее время ограничены семью участниками. Благодаря механизму участников контракта может быть любое количество, а также могут применяться подписи Шнорра.

Одним из таких многосторонних внесетевых контрактов является фабрика каналов, представленная Burchert et al как масштабируемый способ финансирования любого количества платежных каналов поверх одной внутрисетевой транзакции и для балансировки или их динамического перераспределения, без внесения изменений в блокчейн.

Путь к eltoo

Прежде чем можно будет внедрить eltoo, по утверждению команды Blockstream необходимо внести незначительные изменения в блокчейн Биткоина: внедрить признак состояния SIGHASH_NOINPUT для подписей. Впервые этот вопрос поднимался несколько месяцев назад в контексте "сторожевых вышек" (контрольные каналы для выявления мошеннических транзакций), которые помогут защитить каналы Lightning, но официально это изменение предложено не было. Официальное предложение теперь можно найти в документации eltoo.

Blockstream призывает сообщество рассмотреть предложение и принять участие в его обсуждении. Разработчики надеются достичь консенсуса в отношении использования SIGHASH_NOINPUT, чтобы его можно было принять и включить в будущую программную версию Bitcoin Script. Как утверждает команда проекта, это позволит сообществу прийти к надежной и простой сети Lightning Network, включающей новый механизм обновления, который также может использоваться для многих других приложений.