Реализуйте смарт-контракты в Биткойне, моделируя виртуальную машину Биткойн.

Исходная ссылка: https://github.com/atomicals/avm-whitepaper/blob/main/avm.md

Краткое содержание

На данный момент все протоколы наложения цифровых активов в Биткойне следуют фиксированным правилам создания и передачи цифровых активов. Позволяя программистам определять логику конечного автомата для создания и управления этими правилами, мы можем разработать полностью гибкие (полные по Тьюрингу) смарт-контракты для наложения цифровых активов. Мы предлагаем решение, которое использует Биткойн в качестве глобальной базы данных, сохраняет код смарт-контракта в транзакциях и выполняет эти коды в изолированной среде путем наложения индексатора цифровых активов. Исходный набор инструкций кода операции Bitcoin Script был принят в качестве языка программирования, поскольку он обладает всеми необходимыми свойствами для эффективного выполнения в средах с ограниченными ресурсами. Хэши состояний используются для отслеживания оверлейных транзакций и предоставляют участникам удобный способ проверки статуса синхронизации. Решение, которое мы предлагаем, является естественным шагом в эволюции протокола цифровых активов Bitcoin и служит платформой для тестирования исходного кода операции Bitcoin, демонстрируя его гибкость и безопасность.

1. Введение

Одноранговая электронная денежная система Биткойн [1] изначально использовалась в основном как средство сбережения, поэтому ее называли «цифровым золотом», а ее функция как средства обмена была относительно незначительной. Прежде чем Сатоши Накамото ушел, он отключил многие оригинальные коды операций (Op Codes), используемые для расширенных сценариев, из соображений безопасности, в частности, чтобы избежать потенциальных атак типа «отказ в обслуживании». Эти отключенные коды операций в основном включают арифметические и двоичные операции, которые являются фундаментальными операциями, на которые полагаются разработчики в самых базовых средах программирования. Без поддержки этих критических кодов операций функциональность, доступная разработчикам приложений Биткойн и конечным пользователям, очень ограничена. В частности, код операции «OP_CAT» (подключение к данным), который можно было использовать для создания пользовательских ограничений потребления и передачи, так называемых контрактов. Таким образом, из-за этих исторических решений Биткойн не смог стать мощной платформой для смарт-контрактов, первоначально задуманной Сатоши Накамото, и мог существовать только как разновидность цифрового золота. Короче говоря, из-за отключения этих ключевых кодов операций Биткойн должен существовать только как цифровое золото и не может превратиться в полноценную систему смарт-контрактов для защиты этой развивающейся системы электронных денег.

«Природа Биткойна заключается в том, что после выпуска версии 0.1 его основная конструкция фиксируется на весь срок службы. Поэтому я намерен разработать его для поддержки всех типов транзакций, о которых я только могу подумать. Проблема в том, что все типы транзакций требуются. специальные поля кода поддержки и данных, независимо от того, используются ли они, и могут обрабатывать только одну конкретную ситуацию одновременно. Это может привести к чрезмерному раздуванию в особых случаях. Сценарии обеспечивают решение проблемы. Обобщите, чтобы обе стороны могли описать. их транзакция как предикат, который оценивается сетью узлов.» — Сатоши Накамото[2]

С тех пор, как Биткойн впервые отключил некоторые коды операций, были введены различные меры защиты. Одним из важных ограничений является MAX_SIGOPS, который ограничивает максимальное количество операций подписи, разрешенных в любой конкретной транзакции. Оглядываясь назад в историю, мы можем наблюдать производительность этих исходных кодов операций в разветвленных версиях Биткойна, таких как BSC и BSV. Эти форки повторно активировали большинство исходных кодов операций несколько лет назад. До сих пор эти коды операций не вызывали никаких проблем с безопасностью или атак типа «отказ в обслуживании» и не вызывали особых споров. Вместо этого они значительно расширяют потенциал развития этих форков Биткойна.

Несмотря на текущие ограничения смарт-контрактов Биткойн, появился ряд протоколов наложения, которые позволяют создавать и передавать цифровые активы в самом Биткойне. Первым основным стандартом невзаимозаменяемых токенов был протокол под названием Ordinals, за которым последовал BRC20, стандарт взаимозаменяемых токенов. Вскоре после этого появились другие протоколы цифровых активов, такие как Atomics Digital Objects и ARC20, которые используют единицы сатоши в качестве расчетных единиц, а также Bitcoin Stamp и недавний протокол взаимозаменяемых токенов Runes (выпущенный в апреле 2024 года). Это поколение протоколов наложения в основном создает и управляет цифровыми активами посредством транзакций Биткойн, в то время как индексатор протокола наложения отслеживает и управляет жизненным циклом цифровых активов, считывая данные непосредственно из специальных транзакций Биткойн. Чего не хватает в этих протоколах, так это возможности для разработчиков настраивать поведение цифровых активов — до сих пор не было способа создавать расширенные смарт-контракты для этих протоколов наложения.

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

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

2. Биткойн как глобальная база данных

Сеть Биткойн, по сути, представляет собой распределенный сервер временных меток, предназначенный для решения проблемы двойного расходования. Система предназначена не только для передачи и хранения денежных операций, но и для хранения таких данных, как счета-фактуры и большие файлы. Сатоши включил различные коды операций, такие как OP_RETURN, который позволяет добавлять произвольные данные, и OP_PUSHDATA4, который позволяет передавать данные размером до 4 ГБ. Даже первая биткойн-транзакция — транзакция Genesis Coinbase — включала произвольные текстовые данные: «The Times, 3 января 2009 г. Канцлер на пороге второй помощи банкам».

На протяжении многих лет предпринимались неоднократные попытки предотвратить использование Биткойна в качестве носителя данных, ограничив максимальный размер отправки до 520 байтов и ограничив использование OP_RETURN до 40 байтов (позже расширенного до 80 байтов). Действительно, это рассматривается как вектор атаки, который может привести к тому, что «раздувание блокчейна» выйдет из-под контроля и вытеснит чисто денежное использование. В то время это казалось разумной защитной мерой.

В последние годы разработчики Биткойна эффективно вновь представили возможность хранить большие объемы произвольных данных, аналогично более ранним версиям Биткойна, представив обновления Segregated Witness (SegWit) и Taproot. Разработчики приложений быстро воспользовались этой возможностью, используя Биткойн как неизменный глобальный реестр для хранения ценных данных. Рынок цифровых активов Биткойна вырос в геометрической прогрессии, достигнув многомиллиардной рыночной капитализации и принеся майнерам сотни миллионов долларов сетевых комиссий за относительно короткий период времени.

3. Протокол наложения

Хэл Финни предложил и предсказал концепцию использования Биткойна в качестве глобальной, децентрализованной, согласованной базы данных для поддержки «наложения других протоколов». Основная идея заключается в создании наложенных активов посредством сигнализации и связывания этих активов с конкретной торговой историей. Этот механизм добавляет новое измерение Биткойну как денежной системе, поскольку сами результаты транзакций могут представлять собой любой другой тип цифровых активов, таких как токены, баллы, цифровые носители или даже доверенные права на физические активы.

«В обсуждении темы BitDNS я высказал идею наложения других протоколов на Биткойн. С определенной точки зрения, Биткойн — это глобальная, децентрализованная, но последовательная база данных.

Эта база данных в основном используется для регистрации передачи монет, но ее можно использовать и для многих других целей. Многие приложения могут извлечь выгоду из глобально согласованной базы данных. Согласно моему описанию BitDNS, этот механизм будет реализован с использованием загадочной и сложной системы «скриптов» для добавления дополнительных данных в обычные транзакции Биткойн. Эти данные будут отображаться как NOP (нет инструкции по эксплуатации) для текущего клиента и будут игнорироваться, но клиенты, поддерживающие протокол оверлея, будут проверять дополнительные данные в этих блоках NOP и интерпретировать их в соответствии с протоколом оверлея.

В частности, я мог бы представить себе использование OP_NOP1 для маркировки данных наложения, затем использование OP_PUSHDATA для отправки определенных данных, затем использование OP_DROP для удаления данных из стека и, наконец, выполнение обычного кода операции транзакции. Это не оказывает никакого влияния на обычных клиентов и выглядит как обычная транзакция (это может быть виртуальная транзакция, например, перевод 0,01 биткойна самому себе), но код, распознающий протокол наложения, распознает, что это транзакция по соглашению.

Например, Биткойн можно использовать в качестве дешевой службы временных меток, позволяющей доказать, что документ существовал до определенной даты. Все, что вам нужно сделать, это создать для себя фиктивную транзакцию и модифицировать клиент для выполнения операции OP_PUSHDATA, вставить в нее хэш документа, а затем удалить его из стека с помощью OP_DROP. Этот хэш будет постоянно храниться в блокчейне и служить доказательством существования документа на тот момент. »—— Хэл Финни[3]

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

В 2023 году разработчики поняли, что существует необходимость в едином стандарте токенов Биткойна, поэтому они разработали BRC20. BRC20 использует теорию порядковых номеров для построения модели оверлейной учетной записи, связанной с адресом кошелька, что позволяет отправлять и получать единицы токенов. Фактически, он создает многоуровневый протокол наложения на основе порядковых номеров, который сам по себе является протоколом наложения на основе биткойнов.

К началу 2024 года в ответ на продолжающийся рост рынка стандартов токенов и технологий индексации появился новый протокол под названием Atomics Protocol Digital Objects. Как описано в руководстве по Atomics, протокол Atomics — это простой, но гибкий протокол для создания, передачи и обновления цифровых объектов (широко известных как неизрасходованные транзакции) в блокчейнах, таких как Биткойн, которые используют качественные токены неизрасходованных транзакций (UTXO). ). Атомный (или «атомарный») — это способ организации цепочки цифровой собственности по нескольким простым правилам. Протокол Atomics также включает в себя стандарт взаимозаменяемых токенов под названием ARC20, где каждая единица токена поддерживается как минимум одной единицей сатоши и работает с использованием той же архитектуры UTXO, что и сам Биткойн.

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

4. Государственная машина

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

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

Основная идея состоит в том, чтобы позволить разработчикам хранить код своего смарт-контракта в блокчейне, что делает его читаемым и интерпретируемым всеми участвующими сторонами. Сохраняя код в цепочке, вы гарантируете, что логика выполняется одинаково на всех распределенных и отключенных сторонах, что облегчает синхронизацию состояния. Язык программирования смарт-контрактов должен обладать следующими важными атрибутами:

  • Детерминированное и предсказуемое время выполнения.

  • Допускает произвольную гибкость (полнота по Тьюрингу) [4].

  • и способность эффективно работать в системах с ограниченными ресурсами.

Как видно из этих требований, Bitcoin Script хорошо подходит для использования в качестве набора инструкций, определяющего правила создания и передачи цифровых активов. Ключевым моментом является то, что он должен поддерживать любые переходы между состояниями, одновременно ограничивая время выполнения, чтобы предотвратить атаки типа «отказ в обслуживании» и бесконечные программные циклы. Биткойн-скрипт является полным по Тьюрингу, это двухстековый автомат с выталкиванием вниз (2-Stack PDA). Благодаря использованию технологии развертывания циклов циклы не допускаются, поэтому он имеет предсказуемое время работы и линейную зависимость от длины программы. . Функции.

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

5. Консенсус по статусу

Синхронизация состояний может быть достигнута посредством хеширования состояния (statehash), механизма, который передает внутреннее состояние индексатора протокола наложения внешним наблюдателям. Раскрывая хэши состояний, распределенные стороны могут легко определить, следуют ли они одним и тем же правилам и синхронизируются ли они друг с другом.

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

6. Виртуальные цифровые активы

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

В BRC20 баланс токена представляет собой абстрактное представление учетной записи и может быть описан как виртуальный цифровой актив, то есть цифровой актив поверх другого цифрового актива (Биткойн). Токены Atomics ARC20 — это абстракции, которые сохраняют связь с базовыми единицами сатоши, но они также являются виртуальным цифровым активом. Точнее, их называют «виртуальными цифровыми активами», поскольку они существуют как абстракция поверх другого цифрового актива (Биткойна).

Продолжая эту аналогию, мы можем определить конечный автомат, который позволяет вносить в контракт любой тип токена, а затем изымать его, аналогично тому, как язык программирования Solidity блокчейна Ethereum позволяет помечать методы как подлежащие оплате, указывая на то, что Ether. можно оплатить этим методом и получить позже в соответствии с правилами программы смарт-контрактов. Отслеживание и управление этими цифровыми активами может осуществляться с помощью специальных кодов операций, таких как OP_FT_WITHDRAW и OP_NFT_WITHDRAW, а также механизма, который позволяет платным методам в состоянии смарт-контракта принимать токены.

7. Архитектура системы

Чтобы обеспечить согласованное выполнение сценариев, интерпретатор сценариев настраивается в хорошо ограниченной изолированной среде со статическими или динамическими привязками. Эта настройка позволяет различным языкам программирования и средам вызывать песочницу и получать согласованные результаты, обеспечивая согласованное выполнение.

Интерпретатор песочницы — это упрощенная версия интерпретатора сценариев Биткойн, которая отличается некоторыми ключевыми моментами, например тем, что он может напрямую принимать сценарии блокировки выполнения (scriptPubKey) и параметры сценария разблокировки (scriptSig), а также некоторые другие, которые помогают виртуализировать Полезные параметры для управления цифровыми активами. Они предназначены для упрощения и улучшения обработки и управления виртуальными цифровыми активами, чтобы они могли работать в сети Биткойн более эффективно и безопасно.

8. Заключение

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

Исходный набор инструкций Bitcoin Script очень мощный, поскольку он реализует двухстековый автомат с выталкиванием вниз (2-Stack PDA), который, как было доказано, является полным по Тьюрингу. Наша система использует хэши состояний, чтобы все участники могли легко проверить правильность синхронизации состояния их индексатора. Эта система спроектирована как чрезвычайно гибкая и не только является естественным расширением существующих протоколов наложения, но также демонстрирует огромный потенциал оригинального языка сценариев Биткойн. Этот подход обеспечивает более расширенную функциональность для наложения протоколов в экосистеме Биткойн, что позволяет поддерживать более сложные приложения смарт-контрактов.

Рекомендации

[1] Сатоши Накамото, «Биткойн: одноранговая электронная денежная система» https://bitcoin.org/bitcoin.pdf, 2008 г.

[2] Сатоши Накамото, «Природа Биткойна такова, что как только была выпущена версия 0.1, основной дизайн был заложен в камень на всю оставшуюся жизнь...», https://satoshi.nakamotoinstitute.org/posts/ биткойнталк/126/, 2010.

[3] Хэл Финни, «При обсуждении темы BitDNS мне пришла в голову идея наложения других протоколов на Биткойн...», https://bitcointalk.org/index.php?topic=2077.msg26888, 2010.

[4] Авторы Википедии. «Тьюринговая полнота». Википедия, свободная энциклопедия. Википедия, Свободная энциклопедия, https://en.wikipedia.org/wiki/Turing_completeness, 2024 г.


#atomicals #AVM #比特币生态 #Quark #atomarc