Обновление для Биткоина Lightning Network только начинает участвовать в транзакциях в блокчейне, а его разработчики уже планируют перестроить технологию.

Решение внести изменения вызвано тем, что сеть требует от пользователей хранить большое количество данных, что существенно затрудняет их загрузку и управление. В связи с этим несколько разработчиков Lightning, а именно: соучредитель компании Lightning Labs «Laolu» Осунтокун (Osuntokun) и представители компании Blockstream Кристиан Декер (Christian Decker) и Расти Рассел (Rusty Russell), опубликовали новое предложение, представляющее собой альтернативный, «упрощенный» способ осуществления внесетевых транзакций. Новое предложение получило название Eltoo.

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

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

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

«При помощи Eltoo мы сокращаем риск уничтожения средств. Мы удаляем эту токсичную информацию», - говорит Декер.

Аннулирование транзакций

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

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

Идея проста – если у Алисы имеется $10, и она отправляет транзакцию в $1 Бобу, ее остаток сокращается до $9 и получает порядковый номер "1." Если впоследствии Алиса отправит Бобу еще $4, остаток ее средств составит $5, а новая транзакция получит порядковый номер "2."

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

Майнеры могут просто передать транзакцию, в которой остаток средств Алисы сокращается до $9 (не взирая на то, что впоследствии она осуществила еще одну транзакцию, сократившую ее остаток до $5). Причина, по которой майнеры не хотят менять одну транзакцию на другую, непонятна, однако их действия можно объяснить тем, что предлагаемое правило не имеет обязательного характера.

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

На сегодняшний день наиболее известным решением проблемы является предложение Lightning network. В данный момент отмена старого состояния выполняется при помощи модели "L2-penalty"– когда кошелек Lightning хранит все промежуточные состояния и затем, если кто-то пытается передать более раннее, недействующее состояние, оно отменяется, а пытавшийся смошенничать пользователь наказывается, теряя свои деньги.

Eltoo и L2

Так или иначе, но по прошествии трех лет разработчики вновь решили вернуться к идее использования порядковых номеров для аннулирования старых транзакций.

В отличие от старого кода Биткоина, не имевшего механизма обязательности для таких последовательностей, решение Eltoo добавляет процесс, который делает каждое обновленное состояние заданным. Любое обновление состояния – например, когда Алиса отправляет деньги Бобу – состоит из двух транзакций, каждая из которых хранит, а впоследствии полностью заменяет предыдущую транзакцию.

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

Eltoo и более ранняя модель L2 могут использоваться параллельно.

Препятствие для кода

Тем не менее, у нового решения есть не только плюсы – препятствие для использования технологии представляет функция под названием "sighash_noinput", вернее, ее внедрение.

Для того чтобы Биткоин мог поддерживать предложение Eltoo (в эффективной форме), в его кодовую базу необходимо добавить эту опцию.

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

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

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

Так или иначе, Декер считает функцию sighash_noinput относительно простым изменением для кодовой базы Биткоина и надеется на лучшее.

Выяснилось также, что данное обновление будет иметь ряд других положительных моментов для разработчиков.