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

Язык программирования Move изначально был создан компанией Meta (ранее известной как Facebook) для запуска блокчейна Diem. Тем не менее, после того, как Meta отказалась от Diem, другие проекты использовали этот язык в своих программах. Наиболее известными примерами являются Aptos и Sui.

В этой статье мы представим обзор языка программирования Move в сравнении с наиболее часто используемыми языками (Solidity и Rust) и объясним, почему Move может стать следующей тенденцией в развитии блокчейна Layer 1.

Введение

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

Язык программирования Move разработан на основе оставшегося языка программирования Libra. Популярность этого языка программирования указывает на то, что ландшафт цепей уровня 1 начинает рассматривать новые языки как источник конкуренции.

Но зачем нужен новый язык программирования?

Было несколько инцидентов безопасности, связанных с языками программирования. Согласно SlowMist Hacked, только в 2021 году было обнародовано около 200 событий безопасности в экосистеме блокчейна, что привело к убыткам на сумму более 9,8 миллиардов долларов США. В то время как в первой половине 2022 года произошло 187 инцидентов безопасности, общий ущерб от которых составил 1,976 миллиарда долларов США. Недостатки в смарт-контрактах приводят к нескольким из этих инцидентов безопасности.

Move уделяет первостепенное внимание безопасности активов как одной из основных целей своего дизайна, учитывая, что амбиции Libra заключались в том, чтобы стать финансовой основой глобальной валютной системы. Перенесите инновации на три уровня, чтобы повысить безопасность активов: языковой дизайн, виртуальная машина и инструменты проверки. Move first представляет совершенно новый тип ресурсов для цифровых активов и абстрагируется от двух основных требований: ресурсы должны соответствовать требованиям контроля доступа и ограниченности. Во-вторых, Move использует модульную систему с надежной абстракцией данных для реализации контроля доступа к учетной записи. В-третьих, для передачи права собственности Move наследует систему владения Rust. Кроме того, такие методы, как проверка байт-кода, формальная проверка и статический вызов, работают вместе, чтобы обеспечить многочисленные гарантии безопасности цифровых активов.

Язык программирования Move также предназначен для снижения планки безопасности для разработчиков, чтобы разработчики контрактов могли сосредоточиться на бизнес-логике. Это очень удобно для разработчиков. Запуск прост, и затраты, связанные с перемещением разработчиков, невелики. С точки зрения экосистемы реальный сценарий приложения Move все еще находится на ранней стадии, и экосистеме приложений есть куда расти. Финансовые качества и зрелость Move будут способствовать развитию будущих экономических инфраструктур, таких как DEX, DeFi и кошелек, а затем последуют финансовые приложения, такие как SocialFi и GameFi.

Переместить VS Solidity и Rust

Solidity и Rust — два самых доминирующих языка программирования в области технологии блокчейн. В этом разделе мы рассмотрим краткое введение в эти два языка программирования и предложим вариант выбора Move вместо них.

Solidity считается первым языком, разработанным с единственной целью разрешить использование смарт-контрактов. Solidity — это объектно-ориентированный язык программирования высокого уровня, используемый для создания и реализации смарт-контрактов на Ethereum и других платформах, совместимых с виртуальной машиной Ethereum («EVM»). Основные участники Ethereum создали Solidity, а первоначальное предложение было сделано в 2014 году Гэвином Вудом и запущено в 2015 году. Solidity также является основным языком смарт-контрактов, используемым в BNB Chain и Avalanche.

С другой стороны, Rust — мультипарадигмальный низкоуровневый язык программирования общего назначения, впервые созданный компанией-разработчиком программного обеспечения Mozilla. Rust создает децентрализованные приложения (dApps) на блокчейне Solana и других блокчейнах, таких как NEAR Protocol.

В отличие от Solidity, которая была разработана в основном для создания смарт-контрактов, Rust уже существовал за несколько лет до выпуска Solana. С технической точки зрения разработчики не создают смарт-контракты на Rust, потому что это не исполняемый язык; вместо этого они делают это с помощью SDK (Software Development Kit).

Белая книга Биткойн была опубликована 31 октября 2008 года. В то время как введение смарт-контрактов произошло только в 2015 году, с выпуском Ethereum и Solidity. С другой стороны, язык программирования Rust дебютировал в 2010 году (разработка началась в 2006 году). В то время развивающаяся криптоиндустрия не знала о смарт-контрактах и ​​их потенциале.

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

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

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

Язык программирования, разработанный для блокчейнов

Сэм Блэкшир, создатель Move, описывает Move как язык для программирования с дефицитом. Язык программирования Move — это независимый от платформы язык программирования на основе Rust для создания безопасных и адаптируемых смарт-контрактов и настраиваемых транзакций. Изначально он был разработан для проекта Meta’s Diem (ранее Libra).

Когда Сэм и его команда работали в Meta, они тщательно рассмотрели варианты, которые им пришлось использовать для разработки блокчейна Diem, и пришли к нескольким важным выводам.

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

Они также заметили, что когда разработчики строят с использованием, например, Solidity/EVM, они наследуют многие внутренние ограничения и работают относительно аналогично EVM из-за функций, естественно встроенных в языки, таких как формат транзакций или формат адреса. Команда разработчиков Move стремилась создать гораздо более простую, независимую от платформы и базовую виртуальную машину («ВМ»). Команда понимала, что, поскольку это быстро развивающаяся область работы и технологий, разработчики должны иметь больше свободы действий и иметь возможность опробовать кроссплатформенные идеи.

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

Переместить ключевые функции

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

Первоклассные ресурсы

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

Для этого Move был создан с учетом цифровых активов. Способность Move создавать собственные типы ресурсов, черпая вдохновение из линейной логики и представления о том, что «ресурс никогда не может быть скопирован или неявно отброшен, его можно просто перемещать между местами хранения программ», — это одна из его новых функций. Эта функция позволяет разработчикам кодировать сложные, но настраиваемые активы (такие как монеты, токены, NFT и т.

Это позволяет разработчикам определять любую переменную, используя комбинации четырех качеств: копирование, индексный ключ, сохранение и удаление (отбрасывание). После объявления переменной как ресурса для ее обновления можно использовать только языковой ключ и хранилище Move. Copy and Drop не сможет редактировать ресурс. Один только синтаксис гарантирует, что ресурса недостаточно.

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

Безопасность

  • Верификатор байт-кода Move: байт-код проверяется перед выполнением в верификаторе байт-кода Move. Сюда включены тесты на общие характеристики безопасности, включая безопасность типов, безопасность памяти и безопасность ресурсов. Это набор быстрых тестов, выполняемых в сети, и он устанавливает общие требования безопасности для любого правильно сформированного приложения Move. Никакая программа Move или смарт-контракт не могут быть запущены до проверки байт-кодом. Аналогичные проверки выполняются и в компиляторе исходного кода. В результате компилятор фактически удаляется из доверенной вычислительной базы. Это означает, что разработчики Move не будут беспокоиться о возможных ошибках компилятора или взломах. Это может значительно уменьшить площадь поверхности атаки, потому что компилятор намного больше, чем средство проверки байт-кода.
  • Move Prover (MVP): это формальный инструмент проверки смарт-контрактов. Этот инструмент проверяет, соблюдает ли программа формальные спецификации надежности и правильности. MVP позволяет разработчикам автоматически и эффективно проверять свой код математически. MVP работает вне сети и проверяет свойства безопасности, определенные пользователем и приложением. MVP похож на поставщика байт-кода, но обеспечивает более сложные и межпроцедурные межмодульные проверки.
  • Отсутствие динамической отправки. Это означает, что логика выполнения кода определяется в момент завершения (статически), а не во время выполнения (динамически). Подробно объясняя, что когда контракт A вызывает функцию контракта B, контракт B может выполнять код, который разработчик контракта A не намеревался запускать, что может привести к проблемам с повторным входом, поскольку функции выполняются во время выполнения кода. Из-за статической природы Move такой эксплойт с повторным входом невозможен. Это также позволяет инструментам проверки более точно учитывать последствия вызова процедуры без необходимости выполнять сложный анализ создания графа вызовов.

Гибкость

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

Сэм Блэкшир и его команда рассматривали криптопространство как новую технологию. Они стремились обеспечить гибкость, необходимую разработчикам, чтобы позволить им находить лучшие решения для своего видения.

Заключить

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

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

Кроме того, помните, что в двух самых разрекламированных проектах, созданных с использованием языка программирования Move, Aptos и Sui, FTX была крупнейшим инвестором, обращая внимание на то, как будут управляться активы и что будет делаться с этими активами во время процесса банкротства FTX. является обязательным условием для оптимальной инвестиционной стратегии.

~ Джордано М. З. ~

~ Эта статья не подразумевает поддержку какой-либо криптовалюты или обмена, перечисленных выше; они были перечислены только в образовательных целях. Инвесторы должны провести собственное исследование, прежде чем инвестировать. Инвесторы делают это на свой страх и риск. ~