On-chain кошельки достигают примерно 1-1 сопоставления транзакций с транзакциями: для каждой экономической транзакции, которую выполняет пользователь, требуется примерно одна блокчейн-транзакция. Агрегации, coinjoin, cut-through-payments и т.д. немного изменяют это утверждение. Но это примерно правильно.
Lightning добился сопоставления транзакций с транзакциями по принципу «многие-к-одному»: магия Lightning заключается в том, что фактически бесконечное количество экономических транзакций может происходить в одном канале Lightning, который, в свою очередь, привязан к одному неизрасходованному выходу транзакции (UTXO). По сути, мы взяли измерение «время» — транзакции — и добились значительного масштабирования, свернув это измерение.
Но, вероятно, даже создание одного UTXO на пользователя недостаточно хорошо. Поэтому существует множество предложений для достижения еще большего масштабирования путем разрешения нескольким пользователям совместно использовать один UTXO самостоятельным образом. Опять же, схлопывание еще одного "пространственного" измерения масштабирования - пользователей - в один UTXO.
Нашей целью здесь является обзор всех этих предложений, выяснение, какие технические шаблоны они имеют, определение, какие виды новых операций и других обновлений через мягкую вилку им необходимы для работы, и создание сравнительной таблицы, показывающей, как все эти части сочетаются. В процессе мы также определим, что такое протокол Layer 2 на самом деле, какого рода масштабирование уже способно осуществлять Lightning, и поймем, какие улучшения нам нужны для mempool, чтобы достичь всего этого.
Благодарность идет в адрес Fulgur Venturesза спонсирование этого исследования. Они не имели редакционного контроля над содержанием этого сообщения и не рассматривали его перед публикацией.
Спасибо также идетДаниэла Броццони, Сара Кокс, и другие для предварительного рецензирования до публикации.
Тем не менее, одностороннее отзыв всегда является нашей основной целью дизайна.2
С этим определением такие вещи, как Lightning, считаются системами уровня 2. Однако системы, такие как Liquid, Cashu и Fedimint, не являются уровнями 2, потому что другая сторона или стороны контролируют ваши средства. Схемы валидации с клиентской стороны, такие как RGB, также не являются уровнями 2 по этому определению, потому что они не могут совершать сделки с BTC без доверия. Наконец, @RubenSomsen/statechains-non-custodial-off-chain-bitcoin-transfer-1ae4845a4a39">Statechains не проходит проверку, потому что сущность Statechain может похитить средства, если они не следуют протоколу.
В скриптинге Bitcoin контракты - это механизмы, которые заранее ограничивают способ, которым может быть использован txout, таким образом, что форма транзакций, используемых для использования этого txout, заранее определена или иначе ограничена способом, который не ограничивается только подписями. L2-системы, которые обмениваются UTXO между несколькими сторонами, нуждаются в контрактах, потому что им нужны способы ограничения того, как можно потратить UTXO для реализации правил и стимулов протокола L2.

Предполагается, что Около половины всемирного населения владеют смартфоном, 4.3 миллиарда человек. Таким образом, фактически мы можем привлечь значительный процент всего населения, которое, вероятно, сможет воспользоваться каналом Lightning в течение года.
Однако каналы не длится вечно. В некоторых случаях пользователи захотят переключить кошельки, увеличить или уменьшить ёмкость канала и т. д. Самый эффективный метод изменения ёмкости канала - через сплайсинг, отличается внедрением в Кошелек Phoenix.
Как и при открытии канала, соединение также может осуществляться амортизированным способом для повышения эффективности, с несколькими операциями соединения, использующими одну транзакцию, чтобы уменьшить количество входов и выходов, необходимых для добавления и удаления средств.5. Таким образом, дельта-блочное пространство, необходимое для сращивания пользователей, при условии использования musig, является выходом ответвления 43vB плюс
57.5vB ключевой путь taproot, на сумму 100.5vB. Если снова предположить использование блокового пространства на уровне 90%, мы получим:

Наконец, обратите внимание, как переключение молниеносных каналов между кошельками может быть выполнено в одной транзакции путем доверия следующему кошельку подписать транзакцию обязательства после отправки средств на адрес обязательства или совместной поддержки закрытия-к-новому-каналу в обеих реализациях кошелька.
Конечно, существуют конкурирующие варианты использования биткоина за пределами каналов Lightning, и трудно сказать, как это отразится на ставках комиссии. Но эти цифры дают нам приблизительное представление о том, что с нынешними технологиями, по крайней мере, технически возможно поддерживать сотни миллионов суверенных пользователей Lightning.
В концепции виртуального UTXO (V-UTXO), наиболее ярким примером которой является Ark, V-UTXO создаются через ковенанты или мультистороннее соглашение, путем создания транзакций, которые могут быть добыты, чтобы односторонне вывести средства V-UTXO, поместив их на цепочку, но не находятся в «счастливом пути». В этом отношении V-UTXO похожи на каналы. Но в отличие от каналов схемы V-UTXO выполняют транзакции, затрачивая сами V-UTXO, в (концептуально) единой6предварительно подписанная транзакция.
Шаблон проектирования "счастливого пути" - это использование пути сценария "все стороны согласны", такого как N-of-N мультиподпись; taproot разработан специально для этой концепции, позволяя пути ключа быть N-of-N мультиподписью через musig. Предполагая, что все стороны согласны, счастливый путь позволяет эффективно (и конфиденциально) потратить монеты.
Интересно, что, поскольку виртуальные UTXO являются «реальными» во многих смыслах, довольно легко построить каналы поверх виртуальных UTXO, просто создав виртуальные UTXO, которые, если их добыть, приведут к созданию UTXO, необходимых для каналов. В этом смысле виртуальные схемы UTXO
немного нижний уровень, чем каналы.
Как уже говорилось выше, ключевой характеристикой Lightning является ограничение масштабируемости для конечных пользователей из-за необходимости иметь по крайней мере одну UTXO на пользователя. Тем не менее, для «основного» элемента маршрутизации Lightning — общедоступных узлов Lightning, которые маршрутизируют подавляющее большинство транзакций — эти ограничения масштабируемости не являются большой проблемой, поскольку Lightning прекрасно функционирует, если конечных пользователей гораздо больше, чем узлов маршрутизации, потому что каждый публичный канал, используемый для маршрутизации платежей, может легко поддерживать большое количество транзакций в секунду. По этой же причине многие будущие системы L2 также ожидают участия в сети Lightning. Мы также видим это в том, что существующие не совсем L2-системы, такие как Kasu, в значительной степени полагаются на сеть Lightning, чтобы быть действительно полезными: основное использование Cashu, вероятно, заключается в отправке и получении платежей Lightning.
Поскольку каналы-фабрики согласуют UTXO, которые могут быть добыты, но не ожидается, что они будут действительно добыты на пути к успеху, они являются очень примитивным примером V-UTXO.
Сами по себе фабрики каналов не требуют никаких soft-форков для своей реализации. Однако простые фабрики каналов, описанные выше, вероятно, непрактичны при большом количестве участников из-за необходимости координации для достижения масштабируемой выгоды. Таким образом, предложения о договорах, такие как OP_Evictили CTV (через деревья txout) направлены на то, чтобы позволить более детализированные результаты, где отдельные стороны могут быть вынуждены выходить на цепочку, не вынуждая всех сразу выходить на цепочку.
В то время как каналы Poon-Dryja поощряют публикацию правильного состояния в цепочке, наказывая за неправильные состояния, LN-Symmetry вместо этого позволяет обновлять неправильные состояния с помощью дополнительной транзакции. Преимущество этого метода заключается в упрощении каналов Lightning за счет упрощения штрафов. Тем не менее, это, вероятно, будет недостатком в ненадежных сценариях, поскольку штрафы, возможно, необходимы для предотвращения мошенничества.
LN-Symmetry требует мягкого форка для включенияSIGHASH_ANYPREVOUT, что необходимо для того, чтобы разрешить повторное расходование состояния других состояний во время обновлений.
По себе LN-Symmetry не предлагает улучшения масштабирования по сравнению с обычными каналами Lightning. Но сторонники утверждаличто это делает вещи, такие как фабрики каналов, более легкими в реализации.
Для передачи V-UTXOs между сторонами координатор Ark совместно подписывает транзакции, которые тратят одну или несколько V-UTXOs, так что транзакции действительны только в том случае, если созданы одна или несколько других V-UTXOs в другом раунде. В сочетании с некоторыми осторожными ограничениями по времени ожидания - см. полные сведения в документации Ark - эта зависимость обеспечивает безопасность V-UTXO: V-UTXO не может быть получено на цепи, если новые V-UTXOs не создаются в другой пуловой транзакции. Есть несколько потенциальных способов реализации этой зависимости. Однако точные детали не имеют отношения к целям данной статьи.
Обратите внимание, что это означает, что у данного ASP будет происходить много разных активных раундов одновременно. Новые раунды часто создаются для передачи средств из существующих раундов. Но существующие раунды перекрывают новые раунды, так как они, как правило, истекают по истечении некоторого времени после создания новых раундов и новых транзакций пула.
Конкретно, расходы возникают при трате V-UTXO. Пока V-UTXO не тратится, он представляет собой очень реальный потенциальный UTXO, который можно вывести на цепочку, чтобы односторонне изъять средства; пользователь владеет этими средствами. Однако для того чтобы потратить V-UTXO, ASP должен создать новый pool txout, используя средства, которые ASP получает в другом месте, в то время как средства в потраченном V-UTXO не доступны для ASP до достижения времени истечения.
Таким образом, расходы на V-UTXO требуют краткосрочного кредита, заем средств для покрытия временного интервала между настоящим моментом и истечением раунда. Это означает, что ликвидационные издержки на V-UTXO фактически снижаются по мере старения V-UTXO и приближения времени истечения, в конечном итоге — в теории — достигая нуля, когда раунд наконец истекает.
Наконец, помните, что стоимость траты V-UTXO связана с общим размером потраченных V-UTXO. Не сумма, выплаченная получателю. Это означает, что кошельки, предназначенные для транзакций V-UTXO напрямую (в отличие от управления одним V-UTXO для целей, например, канала Lighting на основе V-UTXO), должны идти на компромиссы в том, как они распределяют средства на V-UTXO. Один V-UTXO минимизирует затраты на односторонний вывод средств, при этом максимизируя комиссию за транзакцию на основе ликвидности; Разделение средств на множество V-UTXO приводит к обратному результату. Это совершенно не похоже на экономику транзакций Биткойна или Lightning.
Что такая стоимость ликвидности? На момент написания кошелек Lightning Phoenix взимает комиссию в размере 1% за резервирование ликвидности канала на 1 год; в худшем случае Phoenix должен был бы затратить свои средства на 1 год. Однако это предполагает, что ликвидность не используется. Вполне возможно, что стоимость капитала для Phoenix на самом деле выше, и они предполагают, что средний клиент использует их входящую ликвидность менее чем за год. Кроме того, Phoenix зарабатывает деньги на комиссиях за транзакции, потенциально субсидируя ликвидность канала. Наконец, Phoenix может быть нерентабельным!
Ставка по краткосрочным облигациям США дает нам еще одну оценку. На момент написания ставка по 3-месячным казначейским облигациям составляет около 5% в год. Поскольку есть аргумент, что эта ставка завышена из-за инфляции доллара США, мы предположим, что стоимость ликвидности для фондов, деноминированных в BTC, составляет 3% в год для нашего анализа.
Если интервал раунда составляет 4 недели, это означает, что транзакция начнется с затрат на ликвидность в размере
, в конечном итоге снижается до нуля. Предполагая, что пользователь пытается переместить свои средства на новый уровень за две недели до истечения срока, пользователь платит примерно 1,5% в год в виде ликвидационных издержек, чтобы обеспечить самостоятельное сохранение своих средств. С другой стороны, если пользователь ждет до последнего момента8, стоимость может быть практически нулевой, с риском пропуска срока истечения.Пользователи могут не считать это тривиальной стоимостью. И эта стоимость предполагает, что фиксированные затраты каждого раунда становятся незначительными за счет амортизации комиссий за транзакции и других затрат на большое количество участников.
Что, если постоянные издержки не настолько незначительны? Предположим, что у ASP есть 1000 пользователей, и транзакции пула создаются в среднем раз в час. За 4-недельный период это составляет 672 транзакции на цепи. Это означает, что просто для того, чтобы удерживать свои средства, пользователи ASP в совокупности должны оплачивать почти столько же транзакций, сколько и пользователей! Возможно, для них было бы дешевле открыть свои собственные каналы Lightning, даже если ASP требует от них ждать целый час для подтверждения.
Поскольку раунды истекают, этот проблема является постоянной, даже более худшей, чем та, с которой сталкиваются каналы Lightning: по крайней мере, канал Lightning может продолжать быть полезным бесконечно, позволяя открыть канал сейчас и амортизировать его постепенно в течение многих месяцев. Во-вторых, поскольку раунды истекают, есть меньше гибкости в том, когда создавать новые txouts, поддерживающие эти раунды: если комиссии высоки на протяжении недели или двух, пользователи, чьи txouts пула истекают, не имеют выбора, кроме как (совместно) оплатить эти высокие комиссии, чтобы сохранить свое управление своими средствами. С каналами Lightning есть гораздо больше гибкости в том, когда фактически открыть канал.
В то время как авторы Ark изначально представляли себе очень оптимистичный сценарий, в котором новые раунды каждые несколько секунд, первоначальная загрузка, вероятно, должна происходить с вариантами использования, которые могут позволить себе ждать подтверждения транзакции Ark несколько часов, если комиссия за транзакцию не субсидируется.
Рассмотрим, что произойдет с V-UTXO, если владелец уйдет в оффлайн: после истечения раунда ASP необходимо вернуть средства, чтобы вернуть свою ликвидность для дальнейших раундов. Если владелец V-UTXO переходит в автономный режим, размещение этого V-UTXO в блокчейне влечет за собой значительные транзакционные издержки, поскольку ASP теперь необходимо восстанавливать средства на нескольких уровнях дерева V-UTXO. ASP может воссоздать неизрасходованные V-UTXO в новом раунде. Но с точки зрения владельцев V-UTXO это не лишено доверия, поскольку они не могут потратить эти V-UTXO, не получив данных9от ASP. ASP также может просто записывать неизрасходованные V-UTXO в качестве депозита. Или даже иметь политику конфискации средств!
Лично я подозреваю, что, учитывая нетривиальную стоимость самостоятельного хранения в Ark, многие пользователи вместо этого выберут ASP с политикой пролонгации средств в новый раунд и просто смирятся с возможностью мошенничества в конце каждого раунда. Это дешевле, чем упреждающий перевод средств достаточно рано, чтобы гарантировать безопасность в случае, если, например, они не включили свой телефон вовремя, чтобы их кошелек перевел средства на новый раунд.
Аналогично, через достаточно развитые ковенанты структура всего дерева txout может быть заменена каким-то видом контролируемого вывода средств, что потенциально может предложить экономию места. Мы рассмотрим это в дополнительном разделе, поскольку эта техника потенциально полезна для других схем.
Проблема сохранения на конец раунда - еще один случай, когда достаточно развитые™ ковенанты могут решить проблему: ковенант, в частности, ZK-proof ковенант, может заставить ASP воссоздать все неизрасходованные V-UTXO в следующем раунде, устраняя проблему сохранения на конец раунда. Возможно, невозможно сделать это бездоверительным, так как пользователю, скорее всего, понадобится некоторые данные от ASP, чтобы потратить свой V-UTXO на новом раунде, это может предотвратить ASP от финансовой выгоды от мошенничества против офлайн-пользователей.
Оплата комиссии на цепочке при одностороннем выводе
Подобно Lightning, экономика оплаты комиссий на основе цепочки и фактическая стоимость V-UTXO после вычета комиссий определяют, соответствует ли использование Ark нашему определению L2 через односторонний вывод или мошенничество, не приносящее выгоды ASP. Мы обсудим это подробнее, когда будем обсуждать шаблон проектирования txout tree.
С точки зрения биткоина, схема с проверкой действительности требует договора, поскольку мы хотим иметь возможность создавать UTXO для схемы, которые можно потратить только в случае соблюдения правил схемы. Это не обязательно децентрализованный процесс. Многие схемы с проверкой действительности на самом деле полностью централизованы; доказательство проверки действительности доказывает, что централизованный транзакционный секвенсор следовал правилам для определенной последовательности транзакций.
Что же касается какого завета... Технология доказательства с нулевым разглашением все еще является очень новой областью, в которой все еще часто происходят улучшения. Таким образом, крайне маловероятно, что мы увидим какие-либо опкоды, добавленные в Биткойн, которые напрямую проверяют какие-либо конкретные ZK-устойчивые схемы. Вместо этого принято считать, что конкретные схемы будут использовать более общие коды операций, в частности OP_CAT, для проверки ZK-доказательств с помощью скриптов. Например StarkWareэтоКампанииполучить принятие OP_CAT.
Скручивание действительности - это такая большая потенциальная тема, с таким количеством проектов с низким содержанием и высокими возможностями, что мы не будем обсуждать ее дальше, кроме как указать, какие опкоды могут сделать этот класс дизайна жизнеспособным.
Иерархические каналы
Иерархические каналы10 стремится сделать изменение размера канала быстрым и дешевым: «Иерархические каналы делают для пропускной способности канала то же, что LN делает для биткоина». Тем не менее, они по-прежнему принципиально не превышают лимит в 1 UTXO на пользователя. Они также не требуют каких-либо изменений в протоколе Биткойна. Поэтому мы не будем обсуждать их дальше. Их сторонники должны просто выполнять их! Им не нужно наше разрешение.
В настоящее время развитие CoinPool, кажется, застыло, последний коммит на сайте спецификации был сделан два года назад.
Самый простой пример закрепления связан с тем, что без полной замены транзакции можно отключить функцию замены. Таким образом, у нас может быть транзакция с низкой комиссией и отключенной заменой, которая не будет подтверждена, но не может быть заменена. Практически 100% хэш-мощности исправили эту проблему, включив полную замену транзакций, и, на момент написания, полная замена транзакций должна быть включена по умолчанию в следующем релизе Bitcoin Core (после 11 лет усилий!).
Таким образом, остается правило BIP-125 #3 закрепления, единственная оставшаяся проблема закрепления, которая имеет отношение к многосторонним протоколам L2 и не исправлена в Bitcoin Core. Для справки, Правило #3 BIP-125 гласит следующее:
Для оплаты более высокой абсолютной комиссии требуется замещающая транзакция (не
чем сумма комиссий, уплаченных всеми заменяемыми транзакциями.)
Это правило может быть использовано путем широковещательной трансляции большой транзакции с низкой комиссией и закреплением, в результате чего будут затрачиваться выходы, относящиеся к многостороннему протоколу (в качестве альтернативы, группа транзакций). Поскольку транзакция имеет низкую комиссию, она не будет добыта своевременно, если вообще когда-либо. Тем не менее, поскольку он имеет высокую общую комиссию, замена его другой транзакцией неэкономична.
Правило №3 закрепление довольно легко исправляется черезreplace-by-fee-ставка, и это исправление работает во всех ситуациях. К сожалению, неясно, будет ли RBFR принят Core в ближайшем будущем, поскольку они потратили значительное количество усилий на худшее частичное решение. Транзакции TRUC/V3.
RBF - это золотой стандарт для оплаты комиссий, потому что он является наиболее эффективным по использованию блокчейн пространства практически во всех случаях.11ситуации: заменяемая транзакция(ии) не требуют дополнительных входов или выходов, относительно того, что было бы необходимо, если бы правильная комиссия была угадана с первой попытки.
Эффективность важна, потому что неэффективность в оплате гонораров приводит к тому, что оплата комиссии вне диапазона выгодный источник дохода для крупных майнеров; Более мелкие, децентрализованные майнеры не могут получать прибыль от внеполосных платежей из-за непрактичности и бесполезности платить мелкому майнеру за подтверждение транзакции. Внеполосная оплата комиссий также, по-видимому, вызывает проблемы AML/KYC: в настоящее время большинство систем оплаты комиссий по внешнему каналу, фактически доступных прямо сейчас, требуют определенного процесса AML/KYC для осуществления платежа комиссии, за заметным исключением ускоритель mempool.space, который на момент написания (август 2024 года) принимает Lightning без учетной записи.
Чтобы использовать RBF непосредственно в ситуациях с предварительно подписанными транзакциями, вам необходимо заранее подписать варианты комиссий, охватывающие весь спектр потенциальных комиссий. Хотя во многих случаях это вполне осуществимо, так как количество необходимых вариантов обычно невелико12, до сих пор производственный протокол Lightning — и другие предложенные протоколы — предпочитали вместо этого использовать Child-Pays-For-Parent (CPFP), как правило, через якорные выходы.
Идея, лежащая в основе якорного выхода, заключается в том, что вы добавляете один или несколько выходов к транзакции с минимальным или нулевым значением с намерением оплатить комиссию через CPFP, потратив эти выходные данные на вторичные транзакции. Это, конечно, очень неэффективно в применении к таким протоколам, как LN, которые имеют небольшие транзакции в сети, почти удвоение общего размера транзакции обязательства LN с использованием временного якоря. Это будет менее озабоченностью при применении протоколов, использующих более крупные транзакции, такие как все, что использует OP_CAT для реализации заветов.
Менее очевидной проблемой с якорными выходами является необходимость сохранения дополнительных UTXO для оплаты комиссий. В типичном приложении "клиента" это может быть значительной общей нагрузкой, так как без якорных выходов часто нет необходимости в поддержке более одного UTXO. Действительно, вероятно, что некоторые существующие кошельки Lightning, ориентированные на потребителей, уязвимы для кражи со стороны удаленной стороны канала в условиях высоких комиссий из-за неспособности оплатить комиссии.
SIGHASH_ANYONECANPAY может быть использован для оплаты комиссий в некоторых случаях, позволяя добавлять дополнительные входные данные к подписанным транзакциям; SIGHASH_SINGLE также позволяет добавлять выходы. Lightning использует это для транзакций HTLC. На данный момент эта практика может быть уязвима для закрепления транзакций, если с ней не обращаться осторожно13, поскольку злоумышленник может добавить большое количество входов и/или выходов в транзакцию, чтобы создать высокую комиссию/низкую ставку комиссии. RBFR решает эту проблему; подход, используемый в транзакциях TRUC/V3, не способен решить эту проблему. Этот способ оплаты комиссии не так эффективен, как RBF. Но он может быть более эффективным, чем якорные выходы.
Наконец, было предложено несколько вариантов мягкой ветви для добавления спонсирование комиссиисистема в протоколе Bitcoin. Это позволило бы транзакциям объявлять зависимости от других транзакций, так что спонсорская транзакция может быть добыта только в том случае, если спонсируемая транзакция также была добыта (скорее всего в том же блоке). Это может быть намного эффективнее, чем традиционный CPFP, так как спонсорская транзакция может объявить эту зависимость, используя значительно меньше vbytes, чем размер входа транзакции.
Канонический пример относится к хэшированному контракту с блокировкой времени (HTLC). В то время как легко думать о HTLC как о контракте, позволяющем либо потратить транзакцию через раскрытие предобраза, либо через тайм-аут. На самом деле, из-за ограничений скриптов Биткойна, HTLC позволяет всегда тратить транзакцию через раскрытие прообраза, а затем, после тайм-аута, дополнительно через механизм тайм-аута.
Цикл замены использует это преимущество, используя прообраз после тайм-аута, чтобы заменить транзакцию, пытающуюся активировать выходные данные HLTC с помощью механизма тайм-аута без того, чтобы жертва узнала о прообразе. Успешная циклическая атака на замену делает это достаточно долго, чтобы истекло время ожидания HTLC другого канала.
Основной вызов в прибыльном использовании циклической замены заключается в том, что каждый раунд замены стоит денег. Реализация Lightning, учитывающая сроки, будет тратить все больше и больше сборов, пытаясь потратить истекший вывод HTLC перед истечением следующего истекшего вывода HTLC. Во-вторых, любой может победить атаку, просто повторно транслируя замененную транзакцию15как только цикл замены завершен.
Как и в случае с закреплением транзакций, цикл замены также является экономическим эксплойтом для майнеров. В конце каждого цикла замены существует транзакция, которая была удалена из мемпулов, но является полностью действительной и может быть добыта, если только майнеры все еще имеют ее в своих мемпулах.
Фактический мягкий форк OP_Expire, скорее всего, будет состоять из двух функций, аналогично тому, как OP_CheckLockTimeVerify и OP_CheckSequenceVerify Коды операций состоят из двух частей:
Очень важным вызовом при развертывании и использовании OP_Expire являются переорганизации: техническое сообщество Bitcoin, начиная с Сатоши17пытается обеспечить, чтобы протокол консенсуса Bitcoin был разработан таким образом, чтобы после глубокой переработки ранее добытые транзакции могли быть добыты в новых блоках. Этот принцип дизайна пытается избежать кошмарного сценария, когда большое количество подтвержденных монет становятся постоянно недействительными, и люди, полагающиеся на эти монеты, теряют деньги, если сбой консенсуса приводит к большой переработке.
В случае большой реорганизации транзакции с использованием срока действия могут стать недобываемыми из-за достижения их истекшей высоты. Предложение OP_Expire предполагает устранить эту проблему, обрабатывая выводы транзакций, использующих срок действия, аналогично транзакциям coinbase, делая их также непотратными в течение ~100 блоков.
Значительным препятствием для внедрения истечения срока сделки является достижение согласия относительно того, является ли этот компромисс приемлемым или даже необходимым. Типы транзакций, где OP_Expire был бы полезен, уже включают довольно продолжительные таймауты, в течение которых средства пользователя заморожены. Добавление еще большего времени к этим таймаутам не желательно. Кроме того, двойные траты всегда были еще одним способом аннулирования монет после реорганизации: с увеличением использования RBF и предполагаемого использования безключевых якорных выходов, истечение срока транзакции сделает значительную разницу?
SIGHASH_ANYPREVOUT также потенциально полезен в случаях, когда мы хотим использовать предварительно подписанные варианты RBF с учетом предварительно подписанных транзакций, так как факт, что подпись больше не зависит от конкретного txid, избегает комбинаторный взрыв вариантов платы за услугиОднако текущий предложение BIP-118 не решает этот вариант использования и может быть несовместим с ним из-за того, что SIGHASH_ANYPREVOUT также предполагается фиксировать значение UTXO.
Начальное возражение против SIGHASH_ANYPREVOUT заключалось в идее, что кошельки могут попасть в беду, используя его неправильным образом. Проблема заключается в том, что после публикации только одной подписи SIGHASH_ANYPREVOUT ее можно использовать для расходования любого txout с указанным скриптом. Таким образом, если случайно созданы вторые выходы с тем же скриптом, SIGHASH_ANYPREVOUT позволяет легко повторить атаку и украсть эти монеты. Однако, так как в кошельках и реализациях L2 есть так много других потенциальных ошибок, связанных с безопасностью, эту проблему, кажется, оставили в прошлом.
На данный момент общественное техническое сообщество кажется довольно положительным относительно реализации BIP-118. Однако, как обсуждалось выше в нашем обсуждении LN-Symmetry, есть дебаты о том, является ли его основное использование - LN-Symmetry - действительно хорошей идеей.
Почему невозможны рекурсивные соглашения в CTV? Потому что хэш-функции: CTV проверяет тратящую транзакцию на соответствие хешу шаблона, и нет способа18создания шаблона, содержащего CTV с хешем самого себя.
Тем не менее, это не обязательно является реальным ограничением: вы можете легко хешировать цепочку хешей шаблонов CTV на глубину десятков миллионов транзакций всего за несколько секунд на современном компьютере. С относительные временные блокировки nSequenceи ограниченный размер блока, на самом деле, достигнув конца такой цепи, может легко быть увеличен до тысяч лет.
Текущее предложение CTV в БИП-119 имеет только один режим хеширования, известный как DefaultCheckTemplateVerifyHash, который, по сути, фиксирует каждый аспект транзакции расходов в хэше шаблона. С практической точки зрения это означает, что во многих случаях единственным доступным механизмом оплаты пошлин будет CPFP. Как упоминалось выше, это потенциальная проблема, поскольку это делает внеполосную оплату комиссий нетривиальной экономией средств в тех случаях, когда транзакции с использованием CTV невелики.
Можно сказать, что CTV имеет наибольшую поддержку среди технического сообщества любого предложения по опкодам ковенанта из-за его относительной простоты и широкого спектра использования.
Хотя у авторов, вероятно, есть веские причины для своего предложения, на них лежит обязанность действительно объяснить эти причины и правильно их обосновать. Таким образом, мы не будем обсуждать это далее.
Конкатенация достаточна для реализации многих типов ковенантов, включая рекурсивные ковенанты, выполнив следующее:
Факт, что нам нужно только собрать транзакцию без данных свидетелей, является ключевым моментом: завет должен только подтвердить, что делает транзакция - ее входы и выходы - а не данные свидетелей (если они есть), которые делают ее действительной.
За исключением ограничений размера скрипта, сочетание OP_CAT и OP_CheckSigFromStack достаточно для создания многих типов ковенантов, включая рекурсивные ковенанты. По сравнению с более эффективными решениями, такими как CTV, это более дорого. Но разница в стоимости меньше, чем вы ожидаете!
Грубо говоря, для выполнения этого требуется поместить на стек с использованием OP_CAT все невитнесс-части транзакции расходов. Для типичных случаев использования CTV, таких как деревья txout, транзакция расходов вообще не будет содержать никаких данных свидетельства. Поскольку свидетельство пространство скидка 75%, это увеличивает нашу эффективную комиссию за дочернюю транзакцию всего на 25%. Неплохо!
Отличным примером является то, как утверждается, что OP_CAT достаточно для обеспечения достаточно эффективной и безопаснойSTARK верификация будет реализована в Bitcoin скрипте. Поскольку STARK способны доказывать чрезвычайно общие утверждения, возможность эффективной реализации STARK имеет значительные последствия, выходящие за рамки систем L2, так как это позволит многим различным системам быть построенными на основе Биткоина. Сильным аргументом против OP_CAT является то, что эти случаи использования могут быть не совсем хорошими для пользователей Биткоина.
Создание вредной централизующей Miner Extractable Value является ключевой потенциальной проблемой,названо «MEV, что зло» (MEVil)МЭВилом является любое обстоятельство, когда большие майнеры/пулы могут извлечь дополнительную стоимость, используя сложные стратегии майнинга транзакций - не просто максимизируя общие комиссии - что непрактично для меньших майнеров/пулов. Из-за сложности потенциальных финансовых инструментов, которые могут быть созданы с помощью OP_CAT, очень трудно исключить МЭВил. Значительный МЭВил уже появился на Биткоине из-за протоколов токеновых аукционов; к счастью, этот конкретный случай был побежден благодаря принятию полного-RBF.
Помимо потенциала MEVil, существует много других конкретных OP_CAT применений, которые потенциально вредны. Например, предложение Drivechains уже обозревается здесь, и широко считается вредным для Биткоина. Это Считается, что это возможно для реализации Drivechain с OP_CAT. Другим примером являются предложения токенов, такие как Taproot Assets. В то время как в принципе невозможно предотвратить их реализацию с помощью проверка на стороне клиента, есть предложения реализовать их с помощью OP_CAT способами, которые потенциально намного более привлекательны для конечных пользователей, при этом используя гораздо больше блокового пространства, что потенциально может перебить «легитимные» транзакции Bitcoin. Эти варианты использования также могут вызвать юридические вопросы из-за того, насколько часто протоколы токенов используются для финансовых мошенничеств.
Одним из важных проектных решений является вопрос о том, следует ли раскрывать фактические байты промежуточного состояния в стеке в некоем каноническом виде или представлять их в виде нового типа непрозрачного элемента стека, чье фактическое значение байта не может быть напрямую изменено. SHA256 указан для конкретного, фиксированного вектора инициализации, и неизвестно, действительно ли криптографические свойства SHA256 сохраняются, если разрешены произвольные промежуточные состояния/векторы инициализации.
Конечно, поскольку приращение хэширования может делать практически все то же, что и OP_CAT, только более эффективно, оно разделяет все опасения относительно того, что OP_CAT слишком мощный.
Возрождение сценария
OP_CAT был одним из 15 опкодов, которые отключил Сатоши. В дополнение к восстановлению OP_CAT, Расти Рассел предлагает21чтобы восстановить сценарий Bitcoin в «Оригинальной Визии Сатоши», путем повторного включения большинства этих опкодов, добавления ограничений DoS и, возможно, добавления еще нескольких в том же мягком форке. В частности, скорее всего будет добавлен OP_CheckSigFromStack.
Хотя OP_CAT в одиночку действительно делает возможными (рекурсивные) заветы, полное "возрождение сценария" позволило бы создавать более сложные заветы - и намного легче их реализовывать - поскольку части траты транзакции можно было бы манипулировать напрямую. Например, можно представить себе сценарий завета, использующий арифметические операции, чтобы обеспечить, чтобы общая стоимость txouts в транзакции соответствовала некоторому желаемому свойству.
Опять же, оживление сценария вызывает все те же опасения, и даже больше, о том, что OP_CAT в одиночку слишком мощен.
На практике Простота и слишком проста, и вовсе не проста. Примитивные комбинаторы настолько абсурдно низкого уровня, что базовые операции, такие как сложение, пришлось бы трудоемко реализовывать с нуля; сырая Простота была бы исключительно многословна на практике. Таким образом, любое реальное использование Простоты было бы использованием системы подстановок кода, аналогичной вызовам библиотечных функций, известных как Струй. Это создает практическую/политическую проблему: как решить, на какие джеты ставить? Скорее всего джеты будут реализованы на C++, как любая другая операция, требуя хардфорк для каждого нового джета.
Для целей данной статьи нам не нужно подробно останавливаться на каждом из этих многочисленных предложений. Лучше мы можем говорить о них как о группе: все они относительно специфичны для определенных случаев использования и позволяют создавать один класс L2, идеально без побочных эффектов. У них всех есть преимущество эффективности: они все используют меньше блокового пространства, чем достижение той же цели с помощью более общих операций, таких как манипуляции OP_CAT. Но у них всех есть недостаток в добавлении сложности в систему сценариев для потенциально узкого случая использования.
Та же динамика произошла бы, если бы Биткоин принял систему сценариев Simplicity. Эквивалентом операций в Simplicity является добавление реактивного двигателя для часто используемого шаблона. Опять же, реализация реактивных двигателей для операций, специфичных для конкретного случая, таких как манипуляции с деревьями, имеет такие же плюсы и минусы, как и реализация сложных операций для операций, специфичных для конкретного случая.
Чтобы пул фондов был полезен, он должен иметь некое «состояние общих данных», связанное с ним: как распределяется стоимость txout? Если пул фондов должен развиваться с течением времени, это состояние также должно меняться по мере добавления или удаления средств из пула. Поскольку мы строим на Биткойне, добавление или удаление средств из пула неизбежно повлечет за собой трату UTXO, контролируемых пулом.
Помните, что сама система консенсуса Биткоина основана на валидации изменений состояния: транзакции доказывают через своих свидетелей, что изменения в установленном состоянии UTXO действительны; Proof-of-Work позволяет нам прийти к консенсусу относительно того, какой набор транзакций является правильным. Это означает, что пулы фондов сами по себе также будут основаны на проверке изменений состояния: мы доказываем каждому узлу Биткойна, что правила для пула фондов соблюдаются при каждом изменении состояния.
Но есть еще один ключевой аспект пулов фондов L2 без доверия: когда состояние пула фондов меняется, система по своей сути должна публиковать достаточно данных для пользователей, участвующих в пуле фондов, чтобы вернуть свои средства. Если мы этого не сделали, то наша система не может обеспечить односторонний выход, без сотрудничества с третьими лицами. Многие схемы, основанные на роллапе, здесь терпят неудачу: они страдают от сбоев доступности данных, когда пользователь не может восстановить свои средства, если сторонние координаторы отключаются, потому что у них нет возможности получить данные, необходимые им для построения действительной транзакции возврата средств.
С учетом этих ограничений, на каких структурах данных будут основываться фондовые пулы? Неизбежно, это все какой-то вид дерева. Конкретно, какой-то вид дерева Меркла. Они должны быть деревом, потому что это практически единственная масштабируемая структура данных в компьютерной науке; они должны быть Мерклизованными, потому что это практически единственный разумный способ криптографически зафиксировать состояние дерева. Наконец, обновления дерева неизбежно будут опубликованы в блокчейне Bitcoin, потому что это единственный.публикационная средавсе пользователи уровня 2 делятся, и это единственное, на что мы можем заставить пользователей публиковать, чтобы перемещать монеты. И поскольку любая реализация договора будет нуждаться в частях дерева для проверки соблюдения правил договора.
Итак, разобравшись с высокоуровневой теорией, как это на самом деле транслируется в скрипты и транзакции Биткойна?
Здесь требуется только самое базовое 'завещание': предварительно подписанная транзакция.
Деревья Txout
Следующий, более сложный, шаблон проектирования, который мы видим в фондовых пулах, это дерево txout. Ark - хороший пример. Здесь фондовый пул может быть разделен путем траты корневого UTXO в дереве заранее определенных транзакций, обеспеченных простыми условиями, такими как предварительно подписанные транзакции или CTV, разделение стоимости этого UTXO на все меньшие и меньшие суммы, пока не будут достигнуты листовые узлы, которые могут быть потрачены правомерными владельцами.
Важно понимать, что цель древа txout состоит в том, чтобы предоставить пользователям возможности по восстановлению их средств, и эти возможности имеют свою цену: древо txout всегда будет более дорогим способом разделения пула средств и их возврата владельцам, чем простое разделение UTXO в одной транзакции. Каждый слой в древе добавляет стоимость из-за байтов, используемых в txouts и txins, необходимых для создания этого слоя.
Итак, какие варианты может предоставить дерево txout? Опять же, Ark является отличным примером: мы не хотим, чтобы ончейн-выкуп одного V-UTXO требовал, чтобы каждый V-UTXO был помещен в цепочку. Используя дерево, выкуп может вместо этого разделить дерево на более мелкие части до тех пор, пока желаемый V-UTXO не будет поставлен на цепочку.
Аналогично случаю с отдельной предварительно подписанной транзакцией, информация, которая публикуется, - это сами транзакции, которые информируют кошельки других пользователей о том, как использовать свои средства при необходимости.
Масштабируемость деревьев txout имеет интересную экономию за счет масштаба. Стоимость первого V-UTXO, который должен быть помещен в цепочку в пуле фондов с n V-UTXO, примерно log2(n)log2(n) раз дороже, чем одна транзакция, поскольку log2(n) уровней разделенных транзакций должны быть помещены в цепочку. Однако, как только первый V-UTXO будет помещен в цепочку, последующие V-UTXO станут дешевле для погашения в блокчейне, потому что кто-то другой уже оплатил стоимость майнинга промежуточных транзакций.
Помните, что общее количество элементов в бинарном дереве с
n листьев равно 2n. Это означает, что для того, чтобы поместить все V-UTXO в цепочку, общая стоимость этого через дерево txout будет немного кратна общей стоимости одной транзакции. Удивительно эффективно!
Или, может быть, и нет... Если общий размер пула фондовых погашений достаточно велик, они могут представлять собой незначительный спрос на общее количество блоков. Блок - это система предложения и спроса, так что в какой-то момент комиссии увеличатся из-за высокого спроса. В крайнем случае, вполне возможно создать такие большие и глубокие деревья txout, что фактически погасить каждый
Внедрение RBF сложно из-за разрешений: очевидное место для взимания комиссии за RBF - это значение V-UTXO. Но как гарантировать, что только владелец может подписать транзакцию с более высокой комиссией? Во многих случаях неочевидно, как это сделать более эффективно, чем безключевой якорный вывод. Однако, не сделав этого, возникают серьезные проблемы для схем, используемых кошельками конечных пользователей, которые могут не иметь UTXO для выполнения CPFP, если сами V-UTXO не могут быть сразу потрачены.
Наконец, необходимо тщательно продумать, какие стимулы существуют в системах дерева txout, учитывая плату за транзакцию. Например, в системе типа Ark, если набор V-UTXO стоит слишком дорого, чтобы быть стоящими на on-chain V-UTXO, некооперативный координатор может отказаться разрешить погашение этих V-UTXO вне цепи, а затем заработать, украв стоимость этих V-UTXO в одной транзакции UTXO, как только истекло время ожидания.
Если это так, можно утверждать, что такая система не соответствует нашим критериям быть L2 для маленьких V-UTXO.
Для этого нам нужно реализовать нетривиальную конечную машину состояний. Но нам также нужна сущность, которая по сути является общей базой данных. Почему? Потому что здесь целью является совместное использование одного UTXO с разными владельцами. Наконец, если мы действительно хотим получить улучшение масштабируемости, мы должны сделать это таким образом, чтобы на цепи находилось как можно меньше данных о владении.
Эти требования по своей сути приводят нас к своего рода древовидной структуре данных с мерклизацией, такой как дерево суммы Меркла. Манипулирование этой структурой данных по своей сути потребует чего-то вроде OP_CAT, какой-то операции верификации доказательства нулевого знания или операции манипулирования деревом для конкретной цели.
Интересно, как и в деревьях txout, вы не можете сделать лучше, чем порядок логарифма (n) при сохранении сходных свойств безопасности. Почему? Давайте предположим, что у нас был гипотетический OP_ZKP, который через некоторые продвинутые математические методы требовал всего 32 байта, чтобы доказать любое утверждение. Хотя этот zk-доказательство могло бы доказать, что меркелизованная структура данных была изменена в соответствии с правилами системы уровня 2, оно не предоставило бы данных, необходимых для того, чтобы следующий пользователь также мог произвести изменение состояния. Это не соответствует нашим предпочтительным критериям обеспечения безусловного вывода: в лучшем случае один пользователь может сделать безусловный вывод. Но ни один другой пользователь этого сделать не смог бы.
В отличие от этого, если измененные части merklized структуры данных опубликованы через ковенант scriptsig — например, родственные дайджесты в дереве Меркля — у следующего пользователя будет достаточно данных для обновления их понимания состояния системы и сделать безусловный вывод.
Потенциальный способ обойти эту проблему заключается в том, что ковенант требует доказательства публикации на другом носителе, отличном от цепочки Биткойна. Тем не менее, гарантии безопасности будут слабее, чем это возможно через Bitcoin.
Наконец, обратите внимание, как деревья txout и подход на основе баланса могут быть объединены. Если структура данных, с которой ведется работа, является деревом txout, средства могут быть добавлены в дерево txout путем расходования вывода и добавления новых средств с помощью скрипта ковенанта, который проверяет, что средства были фактически добавлены в дерево txout. Также средства могут быть удалены всеми механизмами, обычно доступными для дерева txout. Advanced Ark является примером этого класса схемы.
Максимальная емкость блока во всех децентрализованных (и централизованных) блокчейнах ограничена техническими ограничениями. В Биткойне максимальный размер блока таков, что Биткойн работает практически на мощности ~100% времени. Поскольку майнинг биткойнов действует как аукционная система, продавая с аукциона пространство блока тому, кто предложит самую высокую цену, на практике это означает, что минимальная ставка комиссии за транзакцию увеличивается и уменьшается по мере увеличения и уменьшения спроса.
Показатель комиссии всегда учитывается в экономике и режимах работы L2. Например, в молниеносной сети «пылинки» HTLC, которые слишком малы для выгодного освобождения на основной цепи, используют другую модель безопасности по сравнению с более крупными HTLC. Хотя протокол Lightning еще не реализовал это правильно, в теории этот порог должен быть динамическим, основанным на показателях комиссии при их изменении, желательно таким, чтобы сторона могла выбирать, существует ли HTLC в данной транзакции соглашения на основе показателя комиссии.
Было предложено множество атак, при которых эта ситуация намеренно вызывается в Lightning, например, flood and loot.22и массовая атака на выход23. Поскольку ёмкость блокчейна Bitcoin распределяется между всеми случаями использования, атаки между различными системами L2 также возможны: например, запуск массового выхода на Ark для получения прибыли от каналов Lightning.
L2, которые разделяют UTXO между несколькими пользователями, по своей сути потенциально усугубляют эти проблемы, поскольку в худшем случае потребность в блочном пространстве во время сбоя пропорционально выше. На момент написания этой статьи мы ни разу не видели крупномасштабных сбоев в Lightning, когда приходилось закрывать большое количество каналов одновременно. Есть веские аргументы в пользу того, что мы должны получить дополнительный опыт работы с Lightning и его масштабированием примерно на 1 UTXO на пользователя, прежде чем раздвигать границы с помощью схем совместного использования UTXO.
Во-вторых, прежде чем новые схемы совместного использования UTXO будут широко приняты, необходимо тщательно исследовать потенциальную прибыльность атак во время повышенного спроса на блоки. Например, в системе, такой как Ark, где ASP может выкупать средства, используя гораздо меньше блокового пространства, чем другие стороны, может быть так, что намеренное вызывание высоких комиссий и затем захват средств, которые не могут быть выгодно односторонне сняты, является прибыльным мошенничеством, нарушающим оба наших условия для настоящей системы L2.
Самый последний мягкий форк, Taproot, имел относительно спорный процесс развертывания, занявший довольно длительное время для фактического развертывания. Аргумент за проведение согласованной очистки мягкого форка первым, перед включением любых новых операционных кодов или других функций для новых типов L2, заключается в том, что мы узнали бы больше о том, насколько готова широкая общественность внедрять то, что должно быть относительно нетривиальным мягким форком, который, вероятно, выгоден для всех.
Более простой подход заключается в том, чтобы просто притворяться, что определенные стороны не могут выполнять действия, которые бы предотвратили ковенанты. Например, если предлагаемый протокол хочет использовать CTV, чтобы обеспечить выполнение дерева txout в дереве транзакций, каждое использование CTV может быть заменено на NOP или CheckSig. Хотя на самом деле дерево txout не фактически применяется, каждый бит кода, взаимодействующий с деревом и каждая сторона могут быть протестированы так, как будто он применяется, и поскольку NOP и CheckSig разрешены в стандартных скриптах, протокол может быть протестирован на главной сети с реальными средствами.
Мы также собираемся отказаться от всех предложенных опкодов манипуляции деревом Меркля. Все они слишком узкоспециализированы, чтобы иметь значительный шанс на принятие на данный момент. В той мере, в которой эти опкоды полезны, реализация их эффектов с помощью OP_CAT и/или Script Revival является гораздо более вероятным путем к принятию.

CTV является явным победителем здесь, за которым следует SIGHASH_ANYPREVOUT (OP_Expire полезен для многих вещей, так как он заменяет циклическое исправление, но не является необходимым). CTV побеждает, потому что так много вещей соответствуют шаблону конструкции «убедитесь, что тратящаяся транзакция соответствует этому шаблону»; даже конструкции OP_CAT могут эффективно использовать CTV.
В отличие от OP_CAT, CTV, по-видимому, не повышает большого риска непредвиденных последствий, кроме поощрения внеполосных платежей в определенных случаях. Это не идеальный вариант. Но никто не придумал широко поддерживаемой альтернативы.
Мое личное рекомендация: проведите очистку согласования с помощью мягкого форка, а затем CTV.
Отказ от ответственности: Взгляды и мнения, выраженные в этой статье, принадлежат исключительно автору и не являются какими-либо инвестиционными рекомендациями.
Переводом статьи на другие языки занимается команда Gate Learn. Если не указано иное, копирование, распространение или плагиат переведенных статей запрещены.





