Источник: Bitcoin Magazine; Подборка: Пять Бат, Золотые Финансы
Роллапы в последнее время стали центром внимания в области масштабирования Биткойна, став первым настоящим конкурентом Сети Lighting в более широком контексте внимания. Роллапы предназначены стать вторым уровнем вне блокчейна, который не ограничен или не ограничивается ограничениями ликвидности Сети Lighting и не требует, чтобы конечным пользователям предварительно выделялись (или «заимствовались») средства для получения денег, или чтобы промежуточные узлы маршрутизации требовали баланса канала для обеспечения непрерывного движения суммы платежа от отправителя к получателю.
Эти системы изначально работали на Ethereum и других завершенных системах Тьюринга, но в последнее время упор сделан на их перенос на блокчейн, основанный на UTXO (например, BTC). В этой статье не будет обсуждаться текущее состояние реализации на BTC, а будет рассмотрена функциональность идеализированного Rollup, которую люди давно преследуют, и которая зависит от способности проверки Доказательств с нулевым разглашением (ZKP) непосредственно на BTC, что в настоящее время не поддерживается.
Базовая структура Roll выглядит следующим образом: отдельный счет (в BTC - UTXO) содержит балансы всех пользователей в Rollup. Этот UTXO содержит обязательство, представленное в виде корня Merkle-дерева, обязательство о текущих балансах всех счетов в Rollup. Все эти счета авторизованы с помощью открытого/закрытого ключей, поэтому для осуществления расходов вне блокчейна пользователи все равно должны подписать определенное содержимое с помощью секретного ключа. Эта часть структуры позволяет пользователям выходить в любое время без разрешения, просто предоставив доказательство того, что их счет является частью Merkle-дерева, и они могут односторонне покинуть Rollup без разрешения оператора.
Операторы Rollup должны включить в транзакцию ZKP, чтобы обновить корень дерева Меркла баланса счета в блокчейне во время завершения вне блокчейна транзакции; без этого ZKP транзакция будет недействительной и не может быть включена в блокчейн. Это доказательство позволяет людям проверить, получили ли все изменения баланса счета вне блокчейна должное санкционирование владельца счета, а также, не является ли оператор злонамеренным обновлением баланса для кражи средств пользователей или нечестным перераспределением их другим пользователям.
Вопрос заключается в том, если только корень дерева Меркле публикуется в блокчейне, и пользователи могут просматривать и получать к нему доступ, то как они могут разместить свои ветви в этом дереве, чтобы иметь возможность выйти без разрешения, когда им это нужно?
В соответствующем Rollup каждый раз, когда подтверждаются новые вне блокчейна транзакции и изменяется состояние Rollupсчета, информация напрямую помещается в блокчейн. Не вся дерево, это слишком абсурдно, а только информация, необходимая для восстановления дерева. В простой реализации в сводке Rollup будут содержаться балансы всех существующих счетов, а счета будут добавляться только в обновляемые транзакции Rollup.
В более продвинутой реализации используется разница балансов. Это по сути сводка того, какие счета увеличили или уменьшили свои средства в процессе обновления. Это позволяет каждому обновлению Rollup содержать только изменения балансов, произошедшие счетами. Затем пользователь может просто просканировать цепочку и «вычислить» текущее состояние балансов счетов с начала Rollup, что позволяет им восстановить текущий баланс дерева Меркля.
Таким образом, можно сэкономить много затрат и места в Блокчейне (что позволит сэкономить деньги), в то же время, позволяя пользователям гарантировать доступ к информации, необходимой для одностороннего выхода. Правила rollup требуют включения этих данных в официальный rollup, предоставляемый пользователям через Блокчейн, а сделки, которые не содержат сводки или различий счетов, считаются недействительными.
Еще один способ решения проблемы доступности данных для пользователей - размещение данных в другом месте, не связанном с Блокчейном. Это порождает сложные вопросы, поскольку rollup все равно должен гарантировать доступность данных в другом месте. Традиционно, для этой цели использовались другие Блокчейны, специально разработанные в качестве слоя доступности данных для систем, таких как rollup.
Это создало трудности с обеспечением безопасности на таком же высоком уровне. Когда данные напрямую публикуются в BTCБлокчейн, Соглашение правил может гарантировать их абсолютную правильность. Однако, когда они публикуются во внешнюю систему, лучшее, что можно сделать, это проверить SPV-доказательство, то есть, что данные были опубликованы в другой системе.
Это требует подтверждения того, что данные существуют в других цепях блокчейна, что в конечном итоге является проблемой машины Oracle. Блокчейн BTC не может полностью подтвердить что-либо, кроме событий, происходящих в его собственной цепи блоков, лучшее, что он может сделать, это подтвердить ZKP. Однако ZKP не может подтвердить, были ли данные rollup-цепи блоков действительно обнародованы после их создания. Он не может подтвердить, что внешняя информация действительно доступна всем.
Это открыло двери для атаки на удержание данных, то есть создание обязательств по опубликованным данным и их использование для продвижения rollup, но фактически данные недоступны. Это приводит к невозможности извлечения средств пользователем. Единственное истинное решение - полностью полагаться на ценность и структуру стимулов системы, отличной от BTC.
Это создает дилемму для rollup. Когда речь идет о проблеме доступности данных, фактически существует бинарный выбор между публикацией данных в блокчейне BTC или в другом месте. Этот выбор имеет серьезное влияние на безопасность, суверенитет и масштабируемость rollup.
С одной стороны, использование BTC в качестве слоя доступности данных для rollup устанавливает жесткий верхний предел масштабируемости. Блокчейн ограничен по пространству, что устанавливает ограничение на количество rollup, которые могут существовать одновременно, и общее количество транзакций, которые могут быть обработаны вне блокчейна. Каждое обновление rollup должно соответствовать количеству счетов, у которых изменился баланс с момента последнего обновления, в пределах ограниченного блокчейна. С точки зрения информационной теории, данные могут быть сжаты только до определенной степени, и на этом моменте утрачивается дополнительный потенциал масштабирования.
С другой стороны, использование разных уровней для обеспечения доступности данных устраняет жесткий верхний предел наращиваемой масштабируемости, но также вносит новые вопросы безопасности и суверенитета. В Rollup, использующем BTC для обеспечения доступности данных, если данные, которые пользователь хочет извлечь, не были автоматически опубликованы в блокчейне, состояние Rollup не может измениться. При использовании Validiums эта гарантия полностью зависит от способности использованных внешних систем противостоять мошенничеству и скрытию данных.
Теперь любой Биткойн-производитель на системе доступности внешних данных может захватить средства пользователей BTCRollup, производя Блок вместо фактической трансляции этого Блока, чтобы сделать данные доступными.
Итак, если мы действительно реализуем идеальную реализацию Rollup на BTC, действительно реализуем односторонний вывод средств пользователем, каково это будет?