news

RGB Magic: контракты на стороне клиента на биткойн


23.11.2022

Это редакционная статья Федерико Тенга, давнего участника биткоин-проектов с опытом работы в качестве основателя стартапа, консультанта и преподавателя. Freebitco.in — кран биткоин.

Термин «умные контракты» появился еще до изобретения блокчейна и самого Биткойна. Впервые он упоминается в статье Ника Сабо 1994 года, который определил смарт-контракты как «компьютеризированный протокол транзакций, выполняющий условия контракта». Хотя согласно этому определению Биткойн, благодаря своему скриптовому языку, поддерживал смарт-контракты с самого первого блока, термин был популяризирован лишь позднее сторонниками Ethereum, которые исказили первоначальное определение как «код, который избыточно выполняется всеми узлами в глобальной консенсусной сети».

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

Но что, если бы мы могли разработать систему, в которой условия контракта выполняются и подтверждаются только вовлеченными сторонами, а не всеми участниками сети? Давайте представим пример компании, которая хочет выпустить акции. Вместо того чтобы публично публиковать контракт на выпуск акций в глобальной бухгалтерской книге и использовать эту книгу для отслеживания всех будущих передач прав собственности, она может просто выпустить акции в частном порядке и передать покупателям право на их дальнейшую передачу. Затем право на передачу собственности может быть передано каждому новому владельцу, как если бы это была поправка к первоначальному договору о выпуске. Таким образом, каждый владелец может самостоятельно убедиться в подлинности полученных им акций, прочитав первоначальный контракт и убедившись, что вся история поправок, по которым перемещались акции, соответствует правилам, изложенным в первоначальном контракте.

На самом деле в этом нет ничего нового, это тот же механизм, который использовался для передачи собственности до того, как публичные реестры стали популярными. В Великобритании, например, до 90-х годов не было обязательной регистрации собственности при ее передаче. Это означает, что и сегодня более 15% земли в Англии и Уэльсе не зарегистрировано. Если вы покупаете незарегистрированную недвижимость, вместо того, чтобы проверять в реестре, является ли продавец истинным владельцем, вы должны будете проверить непрерывную цепочку владения, продолжающуюся не менее 15 лет (период, который считается достаточно длительным, чтобы считать, что продавец обладает достаточным правом собственности на недвижимость). При этом вы должны убедиться, что передача прав собственности была осуществлена правильно и что все ипотечные кредиты, использованные для предыдущих сделок, были полностью погашены. Преимуществом этой модели является повышенная конфиденциальность владения, и вам не придется полагаться на ведение государственного земельного кадастра. С другой стороны, это значительно усложняет проверку права собственности продавца для покупателя.

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

Во-вторых, чтобы избежать риска двойной траты продавцом своего актива, необходимо внедрить систему подтверждения публикации. Например, мы можем ввести правило, согласно которому каждая передача права собственности должна быть зафиксирована на заранее определенном месте известной газеты (например, поместить хэш передачи права собственности в правом верхнем углу первой страницы New York Times). Поскольку вы не можете поместить хэш передачи в одно и то же место дважды, это предотвращает попытки двойной траты. Однако использование для этой цели известной газеты имеет некоторые недостатки:

Вам придется покупать много газет для процесса проверки. Не очень практично.
Для каждого контракта требуется отдельное место в газете. Не очень масштабируемо.
Редактор газеты может легко подвергнуть цензуре или, что еще хуже, имитировать двойную трату, поместив случайный хэш в ваш слот, заставив любого потенциального покупателя вашего актива думать, что он уже был продан ранее, и отбить у него желание покупать его. Не очень надежно.
По этим причинам необходимо найти лучшее место для размещения доказательств передачи прав собственности. И что может быть лучше блокчейна Биткойна, уже созданной надежной публичной бухгалтерской книги с сильными стимулами для поддержания ее устойчивости к цензуре и децентрализации?

Если мы используем Биткойн, нам не следует указывать фиксированное место в блоке, где должно произойти обязательство по передаче права собственности (например, в первой транзакции), потому что, как и в случае с редактором New York Times, майнер может его испортить. Более эффективным подходом является размещение обязательства в заранее определенной транзакции Биткойна, а точнее, в транзакции, происходящей из неизрасходованного выхода транзакции (UTXO), с которым связано право собственности на выпускаемый актив. Связь между активом и биткоин UTXO может возникнуть либо в контракте, который выпускает актив, либо при последующей передаче права собственности, каждый раз делая целевой UTXO контролером передаваемого актива. Таким образом, мы четко определили, где должно находиться обязательство по передаче права собственности (т.е. в транзакции биткоина, исходящей от конкретного UTXO). Любой человек, управляющий узлом Биткойна, может независимо проверить обязательства, и ни майнеры, ни какие-либо другие организации не могут цензурировать или каким-либо образом вмешиваться в процесс передачи актива.

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

Эта только что описанная модель для подтвержденных контрактов на стороне клиента и передачи прав собственности — именно то, что было реализовано в протоколе RGB. С помощью RGB можно создать контракт, который определяет права, присваивает их одному или нескольким существующим биткоин UTXO и указывает, как можно передать право собственности на них. Контракт может быть создан на основе шаблона, называемого «схемой», в котором создатель контракта лишь корректирует параметры и права собственности, как это делается в традиционных юридических контрактах. В настоящее время в RGB существует два типа схем: одна для выпуска взаимозаменяемых токенов (RGB20) и вторая для выпуска коллекционных токенов (RGB21), но в будущем больше схем может быть разработано кем угодно без разрешения, не требуя изменений на уровне протокола.

В качестве более практического примера можно привести эмитента взаимозаменяемых активов (например, акций компании, стейблкоинов и т.д.), который может использовать шаблон схемы RGB20 и создать контракт, определяющий количество выпускаемых им токенов, название актива и некоторые дополнительные метаданные, связанные с ним. Затем он может определить, какая биткоин UTXO имеет право передавать право собственности на созданные токены и передавать другие права другим UTXO, например, право на вторичную эмиссию или реноминацию актива. Каждый клиент, получающий токены, созданные по этому контракту, сможет проверить содержание контракта Genesis и подтвердить, что любая передача прав собственности в истории полученного токена соответствовала изложенным в нем правилам.

Итак, что мы можем сделать с RGB на практике сегодня? Прежде всего, он позволяет выпускать и передавать токенизированные активы с лучшей масштабируемостью и конфиденциальностью по сравнению с любой существующей альтернативой. С точки зрения конфиденциальности, преимущество RGB заключается в том, что все данные, связанные с передачей, хранятся на стороне клиента, поэтому наблюдатель блокчейна не может извлечь никакой информации о финансовой деятельности пользователя (невозможно даже отличить транзакцию биткоина, содержащую обязательство RGB, от обычной), более того, получатель делится с отправителем только ослепленным UTXO (т.е. хэшем коннекта). т. е. хэш конкатенации между UTXO, в котором она хочет получить активы, и случайным числом) вместо самого UTXO, поэтому плательщик не может отслеживать будущие действия получателя. Для дальнейшего повышения конфиденциальности пользователей RGB также использует криптографический механизм bulletproof для сокрытия сумм в истории переводов активов, так что даже будущие владельцы активов имеют смутное представление о финансовом поведении предыдущих владельцев.

С точки зрения масштабируемости, RGB также имеет некоторые преимущества. Во-первых, большая часть данных хранится вне цепи, поскольку блокчейн используется только как уровень обязательств, что снижает комиссионные сборы и означает, что каждый клиент проверяет только те переводы, в которых он заинтересован, а не всю деятельность глобальной сети. Поскольку для перевода RGB по-прежнему требуется транзакция Биткойна, экономия на комиссии может показаться минимальной, но когда вы начинаете вводить пакетную обработку транзакций, она может быстро стать огромной. Действительно, можно передать все токены (или, в более общем смысле, «права»), связанные с UTXO, произвольному количеству получателей с одним обязательством в рамках одной биткойн-транзакции. Предположим, вы являетесь поставщиком услуг, осуществляющим выплаты сразу нескольким пользователям. С помощью RGB вы можете совершить в одной биткоин-транзакции тысячи переводов тысячам пользователей, запрашивающих различные виды активов, что делает предельные затраты на каждую отдельную выплату абсолютно незначительными.

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

Кроме того, поскольку RGB построен на основе транзакций биткоина, он также совместим с Lightning Network. Хотя на момент написания статьи это еще не реализовано, можно будет создавать специфические для активов каналы Lightning и направлять через них платежи, аналогично тому, как это работает с обычными транзакциями Lightning.

Заключение
RGB — это революционная инновация, которая открывает новые возможности для использования совершенно новой парадигмы, но какие инструменты доступны для ее использования? Если вы хотите поэкспериментировать с ядром самой технологии, вам следует непосредственно опробовать узел RGB. Если вы хотите создавать приложения на основе RGB без необходимости глубоко погружаться в сложность протокола, вы можете воспользоваться библиотекой rgb-lib, которая предоставляет простой интерфейс для разработчиков. Если вы просто хотите попробовать выпустить и передать активы, вы можете поиграть с Iris Wallet для Android, код которого также открыт на GitHub. Если вы просто хотите узнать больше о RGB, вы можете ознакомиться с этим списком ресурсов.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *