Новая идея масштабирования биткоина: сможет ли LayerTree позволить миллиону людей использовать один UTXO?

PanewslabPanewslabАвтор: 798.eth

Автор: 798.eth

Сооснователь Lightning Labs Олаолува Осунтокун недавно представил новую схему масштабирования биткоина под названием LayerTree.

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

Это звучит несколько противоречиво.

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

LayerTree пытается найти новое место между этими двумя подходами.

В блокчейне хранится только один UTXO. Сколько биткоинов принадлежит каждому, записано в офчейн-дереве Merkle Sum Tree. Оператор отвечает за поддержание повседневного сервиса, но не может произвольно изменять балансы пользователей или мешать существующим пользователям вернуть свои деньги в блокчейн.

 

Как одно дерево представляет балансы всех

В LayerTree у каждого пользователя есть листовой узел.

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

Предположим, в дереве четыре человека:

У Алисы 5 BTC, у Боба 3 BTC, у Кэрол и Дэвида по 1 BTC.

Общий UTXO в блокчейне содержит 10 BTC. Корень дерева фиксирует, сколько принадлежит каждому из четырёх, и что сумма всех балансов равна 10 BTC.

Если кто-то изменит листовой узел, корень дерева изменится. Если кто-то попытается произвольно увеличить баланс, проверка суммы в корневом узле не пройдёт.

В блокчейне биткоина не нужно хранить всё дерево — достаточно сохранить этот корень и UTXO, соответствующий общей сумме в дереве.

Это эквивалентно сжатию записей о правах собственности множества пользователей в одно криптографическое обязательство.

 

Как пользователь выходит в одностороннем порядке

Когда Алиса хочет выйти, ей не нужно одобрение оператора или присутствие других пользователей в сети.

Ей достаточно предоставить свой листовой узел, доказательство Меркла от листового узла до корня дерева и свою подпись.

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

Во-первых, выплатит баланс Алисы на указанный ею адрес выхода.

Во-вторых, удалит листовой узел Алисы и поместит оставшиеся средства в UTXO, фиксирующий новый корень дерева.

Независимо от того, сто человек в дереве или миллион, Алисе нужно транслировать только одну транзакцию выхода.

Заявленный LayerTree выход O(1) означает, что количество транзакций, необходимых для выхода, всегда равно одной. Размер доказательства Меркла по-прежнему растёт с числом участников, примерно как O(log N).

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

 

Два способа перевода в LayerTree

Если бы при каждом переводе пользователи изменяли корень дерева, все транзакции по-прежнему должны были бы последовательно попадать в блокчейн, и эффект масштабирования был бы очень ограниченным.

Поэтому LayerTree выполняет повседневные платежи офчейн, предлагая в основном два способа: channel leaf и voucher.

Channel leaf: размещение канала Lightning в листовом узле

Листовой узел может представлять канал Lightning между пользователем и оператором.

Средства канала временно не существуют как отдельный UTXO в блокчейне — они включены в общий выход всего дерева LayerTree. При платежах между пользователями обычные HTLC Lightning пересылаются через оператора.

В процессе платежа корень LayerTree не меняется, и транзакции в блокчейне не создаются.

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

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

Voucher: цифровой чек, который можно обналичить в блокчейне

Более креативная часть LayerTree — это voucher.

Voucher можно понимать как цифровой чек, подписанный пользователем и исполняемый в конечном счёте скриптом биткоина.

Предположим, в листовом узле Алисы 100 000 сатоши, и она хочет заплатить Бобу 10 000 сатоши.

Алисе не нужно немедленно изменять всё дерево. Ей достаточно подписать сообщение, в котором указано, к какому LayerTree относится этот voucher, из какого листового узла поступают средства, какой новый листовой узел получит Боб, какова сумма платежа и текущий порядковый номер состояния листового узла Алисы.

Алиса отправляет подписанный voucher Бобу, и офчейн-платёж завершён.

Этот процесс включает только подпись и передачу по сети, поэтому по скорости может приближаться к внутренним переводам на бирже.

Ключевое отличие в том, что Боб получает не просто запись о балансе в базе данных оператора. Он получает платёжную инструкцию, которую можно передать на исполнение скрипту биткоина.

Если Алиса или оператор перестанут сотрудничать, Боб может самостоятельно отправить voucher в блокчейн. Контракт LayerTree вычтет соответствующую сумму из листового узла Алисы и одновременно создаст новый листовой узел для Боба.

Весь процесс называется CLAIM.

Алисе не нужно подписывать снова, и оператор не может помешать Бобу обналичить voucher.

 

Почему один voucher можно использовать только один раз

У каждого листового узла LayerTree есть порядковый номер состояния, называемый seq.

Предположим, текущий seq Алисы равен 7, тогда подписанный ею voucher будет явно привязан к seq 7.

После обналичивания voucher баланс Алисы уменьшится, а seq увеличится с 7 до 8. Все старые voucher, привязанные к seq 7, станут недействительными.

Это предотвращает повторное обналичивание одного и того же чека.

Если Алиса часто платит Бобу, ей не нужно каждый раз создавать независимый voucher.

При первом платеже в 10 000 сатоши Алиса может подписать voucher с накопительной суммой 10 000 сатоши. При втором платеже в 20 000 сатоши она может заново подписать voucher с накопительной суммой 30 000 сатоши.

Бобу достаточно хранить только самый свежий.

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

 

Voucher не устраняет кредитный риск

Voucher имеет настоящую подпись и путь обналичивания в блокчейне, но до момента обналичивания он по-прежнему несёт кредитный риск эмитента.

Предположим, в листовом узле Алисы только 100 000 сатоши.

Она может подписать voucher на 80 000 сатоши для Боба и одновременно другой voucher на 80 000 сатоши для Кэрол.

Подписи на обоих voucher подлинные, но баланс Алисы не может покрыть их одновременно.

Скрипт биткоина может предотвратить обналичивание суммы, превышающей баланс, но не может помешать Алисе офчейн подписать несколько свидетельств на сумму больше её баланса. Кто в итоге получит деньги, может зависеть от того, кто первым завершит обналичивание.

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

Поэтому ещё не погашенный voucher очень похож на традиционный чек:

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

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

Официальный сайт LayerTree также прямо заявляет, что получатель должен рассматривать voucher как кредит до момента его обналичивания или урегулирования иным способом.

Этот кредитный риск — цена, которую voucher платит за высокую эффективность.

 

Зачем вообще нужен voucher

Если существует кредитный риск, почему бы не использовать только каналы Lightning?

Потому что структура voucher проще и гибче.

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

LayerTree разработал credit leaf для приёма платежей из Lightning.

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

В базовом процессе существует короткое окно доверия: оператор уже получил платёж Lightning, но ещё не подписал voucher получателю. В статье также предложена конструкция pending pair, которая с помощью хеш-блокировки, предварительно подписанного voucher и окна расчёта позволяет получателю сначала получить исполняемое свидетельство, а затем раскрыть preimage платежа Lightning.

В такой структуре voucher становится мостом между платежами Lightning и балансами общего UTXO.

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

 

От каких обновлений биткоина зависит LayerTree

В настоящее время LayerTree ещё не может работать в основной сети биткоина.

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

Проект разработал четыре комбинации опкодов.

Версия FULL зависит от BIP 441, BIP 440, OP_TX, BIP 348 и набора опкодов для эллиптических кривых.

BIP 441 восстанавливает часть ранее отключённых возможностей скриптов и поддерживает более гибкую обработку данных и чисел. BIP 440 предоставляет бюджет вычислений для этих операций с переменной стоимостью.

Версия MID зависит от OP_CAT из BIP 347, OP_TX, OP_CHECKSIGFROMSTACK из BIP 348 и OP_TWEAKADD из BIP 449.

OP_CAT используется для конкатенации данных в скрипте. OP_TX позволяет скрипту читать и ограничивать текущую транзакцию. OP_TWEAKADD используется для вычисления публичного ключа Taproot, фиксирующего новое состояние.

Среди них BIP 348 особенно важен для voucher. Он позволяет скрипту биткоина проверять подпись на произвольных данных. Без этой возможности скрипту было бы трудно проверить тот цифровой чек, который Алиса подписала офчейн.

Версия MIN зависит только от OP_CAT и OP_TWEAKADD, но поддерживает лишь выход и SPLIT, без voucher и channel leaf. Она скорее является экспериментом, демонстрирующим минимальные границы возможностей LayerTree.

Версия CCV зависит от OP_CHECKCONTRACTVERIFY из BIP 443, OP_TX и BIP 348 для voucher.

BIP 443 позволяет UTXO нести динамическое обязательство состояния и требует, чтобы новые выходы наследовали обновлённое состояние. Он очень хорошо сочетается с такой ончейн-машиной состояний, как LayerTree, и среди четырёх вариантов обеспечивает наименьший размер выхода.

Однако ни один из этих BIP ещё не активирован в основной сети биткоина.

 

У идеи «миллион людей делят один UTXO» есть ещё одна предпосылка

Самая впечатляющая по производительности версия LayerTree в рекламных материалах также зависит от специального опкода OP_MERKLESUMUPDATE.

Он может проверять доказательство Merkle Sum и напрямую вычислять новый корень дерева после замены одного листового узла.

С ним одиночный выход из LayerTree с 65 536 участниками занимает около 540 vB. При каждом удвоении числа участников транзакция выхода увеличивается лишь примерно на 10 vB.

Но OP_MERKLESUMUPDATE сейчас существует только как проект и симуляция в репозитории проекта, ещё не стал официальным BIP и не вошёл в процесс обновления биткоина.

Если использовать только уже предложенные опкоды, стоимость выхода при 65 536 участниках составит примерно от 908 до 1 473 vB.

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

 

Может ли это решить проблему массового оттока

LayerTree может значительно сократить занятость блокчейна в нормальном состоянии, но не может увеличить ёмкость самих блоков биткоина.

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

По собственным расчётам проекта, если 65 536 пользователей выйдут из одного дерева по отдельности, потребуется около 2 622 блоков, то есть почти 18 дней.

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

Это также показывает цель дизайна LayerTree: оставить подавляющее большинство обычной активности офчейн, а ограниченное пространство блокчейна — для окончательных расчётов и обработки исключительных ситуаций.

 

Значение LayerTree

У LayerTree по-прежнему есть явный оператор.

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

Его точнее называть системой общего UTXO без кастодиального хранения.

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

Самая примечательная часть LayerTree в том, что помимо обычных UTXO, каналов Lightning и кастодиальных баз данных он демонстрирует ещё одну форму денег:

цифровой чек, который может мгновенно обращаться, постоянно накапливаться и в конечном счёте принудительно обналичиваться скриптом биткоина.

Он не устраняет кредитный риск и не преодолевает ограничение пространства блоков.

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

Это довольно креативный подход к масштабированию биткоина.

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

Рекомендуемые

Новые правила майнинга в России: могут ли майнеры биткоина остаться без электричества?Интервью с основателем PaperTrade: создатель казино с плечом 1000x надеется, что в мире не будет кредитного плечаЕженедельные события BTCC (5–12 октября): TOKEN2049 в центре внимания, BTC отскочил после теста $80 000, сформировав глубокую V-образную модельВ день запуска Papertrade потерял 1,28 млн долларовПять веков эволюции: рынки прогнозов стали новой инфраструктурой глобального ценообразования информации