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