Уровень 2 — не волшебное заклинание

В наши дни многие в этой сфере в ответ на любое обсуждение изменений в протоколе Биткойн скандируют: «Не связывайтесь с уровнем 1! Вы можете просто построить его на уровне 2!» Кажется, это очень логично, не так ли? Зачем рисковать безопасностью и стабильностью L1, если можно просто построить на его основе? Проблема в том, что это принципиально не позволяет понять взаимосвязь между уровнем 1 и уровнем 2.

Протокол L2 является расширением протокола L1. Все, для чего предназначен L2, в конечном итоге должно сводиться к тому, на что способен L1. Общее заявление «просто сделай это на L2!» запутывает многочисленные неявные реалии того, что можно или нельзя сделать на L2, учитывая текущее состояние базового уровня. Например, представьте, что вы пытаетесь построить сеть Lightning без использования сценариев с мультиподписью. Ты не мог. Было бы невозможно разделить контроль между несколькими людьми, и вся концепция платежного канала была бы невозможна.

Эволюция платежных каналов

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

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

Решением стал CHECKLOCKTIMEVERIFY, опкод абсолютной временной блокировки. CLTV позволяет сделать монету непригодной для использования до достижения определенной высоты блока или момента в будущем. Это, в сочетании с возможностью создавать скрипты, которые можно тратить разными способами, позволило UTXO с мультиподписью иметь путь к скрипту, по которому спонсор мог бы потратить все средства самостоятельно после временной блокировки. Это гарантировало, что спонсор сможет потребовать вернуть деньги в худшем случае, даже если транзакция финансирования будет нарушена. Однако канал по-прежнему может обеспечивать только односторонние платежи.

Чтобы облегчить двусторонние платежи, необходимо было правильное решение по обеспечению гибкости транзакций. Это было огромным мотиватором для Segregated Witness. Таймлок — это все, что было необходимо для одностороннего канала, потому что деньги только увеличился в одном направлении. Единственным риском для отправителя было то, что другая сторона никогда не потребует того, что уже было отправлено по цепочке, оставив остальную часть денег отправителя в ловушке. Возврат по временной блокировке дал получателю стимул потребовать средства в цепочке до наступления временной блокировки, когда он потеряет все уже отправленные средства, а отправителю – возможность обратиться за помощью в худшем случае, если что-то случится, что навсегда отключит получателя от сети. . Скрипт не поддерживает принудительное принудительное использование определенных сумм в определенных будущих сценариях, поэтому предварительно подписанная транзакция является единственным жизнеспособным механизмом первоначального возврата, если платежи должны осуществляться в обоих направлениях. Это вновь открыло риск того, что средства станут заложниками.

С переходом на Segwit эта проблема была решена. Вместо возврата денег за блокировку, стимулирующего честное поведение, был введен штрафной ключ. Поскольку средства в двустороннем канале могут течь туда и обратно в каждом направлении, неизбежно возникнет случай, когда обе стороны имели больше денег в предыдущем состоянии канала, чем в текущем. Создавая ветвь в предварительно подписанной транзакции каждого состояния канала с использованием штрафного ключа, пользователи могут обмениваться ими после подписания нового состояния и знать, что если другая сторона попытается использовать старую транзакцию, она может потребовать 100% средств в канале. Временные блокировки используются, чтобы гарантировать, что обычный путь расходования средств, при котором пользователи считают, что их соответствующие балансы недействительны в течение определенного времени, чтобы дать сторонам канала возможность использовать штрафной ключ в случае необходимости. Однако здесь есть проблема: использование CLTV означает, что в какой-то момент в будущем канал имеет закрыть, иначе срок блокировки истечет, и у вас больше не будет безопасного периода, чтобы наказать нечестную сторону.

Для решения этой проблемы двунаправленным каналам оплаты также требовалась CHECKSEQUENCEVERIFY или относительные временные блокировки. В отличие от CLTV, который указывает конкретное время или высоту блока в будущем, CSV указывает относительную продолжительность времени или количество блоков с момента или блока, который UTXO, использующий CSV в сценарии, подтверждается в блокчейне. Это позволило использовать период безопасности для использования штрафного ключа, не требуя закрытия каналов в цепочке в заранее определенное время.

Однако даже это не дает нам Lightning Network. До сих пор не существует способа направить платеж по нескольким платежным каналам. Они могут проводить платежи в обе стороны, но только между двумя людьми, участвующими в канале. Для маршрутизации платежей по нескольким каналам вам понадобятся, как вы уже догадались, другие функции L1. Контракты с блокировкой времени хеширования позволяют добиться этого, и для них требуются как CLTV, так и хеш-блоки. Хэшлоки требуют предоставления прообраза хеша, чтобы потратить монеты. Это похоже на подпись, за исключением того, что вы просто раскрываете «закрытый ключ» вместо того, чтобы подписывать его. Это позволяет получателю платежа Lightning предоставить хэш-блокировку, а каждый промежуточный канал между отправителем и получателем создает сценарий, который позволяет немедленно тратить деньги с помощью прообраза хэша или возвращать деньги обратно после временной блокировки. Если получатель раскрывает хэш-лок, каждый может потребовать деньги за пересылку платежа, если нет, то деньги можно запросить задом наперед и отменить без его завершения.

Таким образом, сеть Lightning в том виде, в котором она существует сегодня, полностью зависит от пять функциональные возможности возможны на базовом уровне Биткойна. Скрипты с несколькими подписями, абсолютные временные блокировки, относительные временные блокировки, отдельный свидетель и хеш-блокировки. Без какой-либо из этих функций, существующих на L1, Lightning в том виде, в каком мы его знаем сегодня, не был бы возможным L2, который мы могли бы построить. Его существование как L2 полностью зависит от способности L1 делать определенные вещи. Так что, если бы кто-то в мире с Биткойном не поддерживал хэш-блокировки, временные блокировки в скриптах и ​​никаких исправлений гибкости, просто сказал бы: «Просто создайте двунаправленную систему многоскачковых платежных каналов на уровне 2!» Нам не следует возиться с Уровнем 1», это было бы совершенно бессвязное заявление.

Улов

Тем не менее, строго технически говоря, в этом мире все равно было бы возможно построить эту двунаправленную систему платежных каналов с несколькими переходами без этих трех функций на L1. В массивный затраты с точки зрения создания доверия к другим людям, чтобы они не украли ваши деньги, когда они способны на это. Федеративный сайдчейн. Каждый мог бы просто создать федеративную цепочку, например Liquid или Rootstock, и добавить эти функции в сайдчейн, построив там сеть Lightning, а не в основной цепочке. Проблема в том, что это не одно и то же. На техническом уровне сеть будет функционировать точно так же, но никто, использующий ее, не будет иметь такой же степени контроля над своими монетами.

Когда они закроют канал Lightning, он останется в боковой цепочке, поддерживаемой федерацией, то есть это будет просто учетная запись поверх чужого мультиподписного кошелька, где у вас нет возможности контролировать эти монеты на L1. Вам просто нужно доверять распределенной группе, управляющей федерацией, и она не будет мешать всем. Даже приводные цепи (которые, по иронии судьбы, сами по себе требуют реализации новой функциональности L1) — это всего лишь еще одна форма федерации в конце концов, с некоторыми дополнительными ограничениями, добавленными к процессу вывода. Федерация — это просто майнеры, а не люди, владеющие закрытыми ключами.

Это неявная реальность, понимают они это или нет, лежащая в основе реакции «просто постройте это на L2!» всякий раз, когда кто-то обсуждает улучшения L1. Есть объем того, что уже возможно построить на L2, который довольно ограничен и ограничивается собственными ограничениями масштабирования, а есть объем того, что еще невозможно. Все, что попадает в последнюю категорию, невозможно построить без вмешательства какой-либо доверенной организации или группы лиц, которые в конечном итоге контролируют средства пользователей для них.

В чем смысл?

«Слой 2» — это не волшебное заклинание. Вы не можете просто взмахнуть волшебной палочкой и произнести слова, и все станет волшебным образом возможным. Существуют строгие неизбежные ограничения на то, чего может достичь L2, и эти ограничения — это то, что может выполнить L1. Это просто неотъемлемый факт инженерной реальности, если смотреть на такую ​​систему, как Биткойн. Вы не можете избежать этого каким-либо способом, кроме как все больше и больше ухудшая предположения о доверии, чем более гибкий уровень L2 вы создаете за пределами возможностей L1.

Поэтому, когда возникают дискуссии вокруг этих вопросов, например, о том, какие улучшения можно внести в L1, первостепенное значение имеют две вещи. Во-первых, эти улучшения уровня L1 почти полностью сосредоточены на создании более гибких и масштабируемых уровней L2. Во-вторых, L2 не могут волшебным образом включить все. У L2 есть свои собственные ограничения, основанные на ограничениях L1, и обсуждать изменения в L1 без признания единственного способа обойти эти ограничения — ввести доверенные объекты — нечестный разговор.

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

Исходная ссылка