btc
bch
eth

Ожидается новый поворот в Lightning Network

Lightning Network (LN) только-только внедрили в Биткоин, а её разработчики уже планируют перестроить технологию.

Это связано с тем, что, хотя LN преподносится как возможность существенно увеличить пропускную способность сети Биткоина, она требует от пользователей хранить значительный объём данных, что затрудняет загрузку и использование. Таким образом, несколько разработчиков LN, соучредитель Lightning Labs Лаолу Осантокун [Laolu Osuntokun] и Кристиан Декер [Christian Decker] с Расти Расселом [Rusty Russell] из Blockstream, опубликовали новый подход, в котором предлагается альтернативный «упрощённый» способ осуществления off-chain (внесетевых) транзакций под названием eltoo. Однако новое предложение заключается не только в сжатии объема данных, которые пользователи должны хранить, но и в обеспечении безопасности принадлежащей им криптовалюты.

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

Предлагаемый протокол Eltoo, напротив, хранит информацию только о самых последних off-chain транзакциях, решая тем самым известную проблему «информационной ассиметрии». Эта проблема заключается в том, что если что-то случится с устройством, например, со смартфоном, на котором работает ваше LN-приложение, вы можете потерять доступ ко всей истории транзакций.

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

И это именно то, в чем Декер очень заинтересован, так как он лично ощутил эту проблему на себе.

«Это на самом деле произошло со мной», – сказал он, добавив: «У меня была старая нода LN на моем ноутбуке. Я восстановил её, но я не знал, что у меня не было последней версии [состояния платежного канала]. Парень [другой участник платежного канала] закрыл канал, потому что знал, что у меня была неактуальная версия и он мог своровать мои деньги! Что он, кстати, и сделал».

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

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

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

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

Но, по словам Декера, механизм «не сработал», потому что у майнеров не было никаких стимулов для соблюдения правил и замены старых транзакций на новые.

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

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

Проблема отсутствия «механизма стимулов» не была решена вплоть до 2015 года.

И Lightning Network – самое известное решение этой проблемы. Сегодня аннулирование старого состояния канала осуществляется с помощью механизма «L2-penalty», при котором LN-кошелек или нода хранят все промежуточные состояния канала, и, если кто-то пытается передать старое неактуальное состояние, система его наказывает, лишая денег.

Eltoo и L2

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

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

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

Косвенное преимущество этой системы заключается в том, что она увеличивает масштабируемость LN. С eltoo у нод LN пропадает необходимость хранить все промежуточные состояния платежного канала. Вместо этого ноды хранят только самую последнюю версию состояния и некоторую информацию о самой транзакции, такую как соответствующую ей расчетную транзакцию и, потенциально, Hash Time Lock контракты.

Диаграмма различных суб-протоколов, входящий в стек LN
Взята из анонса eltooв блоге Blockstream: https://blockstream.com/2018/04/30/eltoo-next-lightning.html

Однако, пожалуй, основное преимущество предложения заключается в том, что оно не построено на принципе «победитель забирает все». Вместо этого, eltoo и более старый протокол L2-penalty могут использоваться вместе.

«У Eltoo совершенно другие компромиссы. Я не имею в виду, что он лучше во всех смыслах», – сказал Декер CoinDesk, указав на некоторые аргументы, приведённые в email-переписке Биткоин-разработчиков о том, что данное решение увеличивает время ожидания для проведения транзакций.

Тем не менее, в целом, он очень доволен eltoo и простотой, которую этот протокол привносит, добавляя: «Мы не знаем, какой протокол лучше, но я бы выбрал eltoo. Я думаю, что eltoo легче объяснить и дальше развивать».

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

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

Этот долгожданный вариант кода должен быть добавлен в кодовую базу Биткоина, чтобы криптовалюта могла поддерживать eltoo.

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

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

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

Когда Декера спросили, считает ли он, что функция sighash_noinput будет внедрена в кодовую базу биткоина, он рассмеялся и ответил: «После ситуации с SegWit, я прекратил составлять подобные прогнозы».

Он указывает на то, что Segregated Witness (SegWit) получил широкую поддержку от большинства активных разработчиков биткойна, но в итоге продолжил многолетнюю борьбу внутри сообщества. Изменение кода было добавлено в Биткоин только в августе прошлого года, хотя оно было предложено более двух лет назад.
Тем не менее, Декер считает, что функция sighash_noinput является относительно легким изменением для кодовой базы биткоина.

Кроме того, изменение теоретически может иметь много положительных последствий для разработчиков, продолжил он. Из-за этих потенциальных преимуществ некоторые пользователи Twitter начали добавлять призыв к изменению кода в свои профили, чтобы выразить свою поддержку. Точно так же, как делали во время дебатов по масштабированию (тег #No2X был популярен среди тех, кто был против инициативы Segwit2x).

Не оставляя надежд, Декер заключил:

«Каждый день новые варианты использования присоединяются к фронту sighash_noinput». 

Источник

Похожие материалы

Комментарии

Your browser is out of date!
Install the latest version of your browser.