Что такое язык программирования Move?
Что из себя представляет программное обеспечение, лежащее в основе Diem
В феврале 2022 компания Meta объявила о продаже своего стейблкоина Diem ведущему криптобанку Silvergate (подробнее об этом читайте в нашем недавнем отчете). Silvergate управляет системой переводов активов Silvergate Exchange Network (SEN), которую используют многие ведущие криптовалютные биржи. Silvergate планирует использовать приобретенную инфраструктуру Diem для создания обеспеченного долларами стейблкоина для SEN.
Важнейшей частью пакета Diem, за который Silvergate заплатил почти 200 миллионов долларов, является язык программирования Move. Во многом именно необходимость разработки этого языка стала причиной того, что реализация проекта Diem (ранее Libra) так затянулась. В этой статье мы рассмотрим основные характеристики Move и его потенциальное использование в рамках инфраструктуры Silvergate.
Основные термины
Прежде чем мы продолжим, необходимо определиться с рядом ключевых терминов. Имейте в виду, что эта статья будет довольно технической.
Язык программирования: "набор команд, правил и иного синтаксиса, используемых для создания программы". Move - это язык программирования для Diem, который обеспечивает как базовую функциональность криптовалюты, так и создание будущих приложений для Diem.
Блокчейн: "цифровая база данных, содержащая информацию (например, записи о финансовых транзакциях), которая может одновременно использоваться и передаваться внутри большой децентрализованной, общедоступной сети". Блокчейн обеспечивает работу криптовалют, создавая неизменяемые записи о происходящих транзакциях. Прежде чем транзакции будут внесены в реестр, должен быть достигнут консенсус.
Трилемма блокчейна: сложность обеспечения безопасности (устойчивости к атакам), масштабируемости (способности к росту) и децентрализации (распределения по всем географическим регионам и пользователям) для сетей блокчейна. До сих пор ни одному крупному блокчейну не удалось в полной мере достичь всех трех этих целей. Так, например, Ethereum безопасен и децентрализован. Однако расплата за это - низкая скорость и высокие комиссии за транзакции, что негативно сказывается на их масштабируемости. Diem, как и большинство блокчейнов, стремится решить эту трилемму, и Move играет в этом важную роль.
Линейная логика: система математической логики, созданная Жан-Ивом Жирадом в 1987 году, в которой формулы представлены как ресурсы, а не как абсолютные истины или выражения, требующие полных доказательств. Ключевым изменением является то, что ресурсы могут быть использованы только единожды, а не рассматриваются как постоянные (например, "Если вы дадите мне A один раз, я дам вам B один раз" вместо того, чтобы "A можно обменять на B"). Это делает линейную логику полезной в информатике, поскольку определение формулы как ресурса, а не универсальной истины, позволяет создавать более гибкие системы. Ресурс: базовая единица линейных логических систем. В Move "ресурс никогда не может быть скопирован или косвенно выброшен, его можно только перемещать между местами хранения программы". Токены, реестры и другие элементы блокчейна должны быть постоянными, - вот почему линейная логика (прежде всего ресурсы) была использована для создания языка Move.
Что такое Move?
Move - это язык программирования, разработанный для блокчейна Diem. И Move, и Diem были созданы Diem Association - технологическим консорциумом, поддерживаемым Meta. Недавно проект Diem, включая язык Move, был продан компании Silvergate.
Исполняемый формат Move - это "байткод, который является более высокоуровневым, чем ассемблер, но более низкоуровневым, чем исходный язык”. Специальный верификатор проверяет байткод на безопасность ресурсов, типов и памяти, после чего байткод выполняется интерпретатором. Этот механизм был разработан для обеспечения максимальной безопасности, а также для минимизации платы за газ по сравнению с Ethereum, поскольку к транзакциям не добавляется стоимость компиляции, Это пример того, как Move пытается решить трилемму блокчейна.
Ресурсы: важнейший элемент Move
Основной фактор, который отличает Move от других языков программирования, - это использование ресурсов, которые взяты из математической идеи линейной логики. В линейной логике формулы рассматриваются в качестве основных ресурсов, которые могут быть использованы единожды. Вслед за этим в Move "ресурс никогда не может быть скопирован или косвенно выброшен, его можно только перемещать между местами хранения программы". Move позволяет разработчикам кодировать индивидуальные типы ресурсов, которые рассматриваются как "первоклассные" и не могут быть продублированы или стерты.
Это возможно благодаря системе статических типов Move. Это означает, что переменные в языке программирования должны быть определены как конкретный тип (например, число или слово). В Move эта система защищает первоклассную суть ресурсов. Однако ресурсы можно использовать так же, как и любой другой, менее защищенный элемент. Их можно хранить в структурах данных или передавать как аргументы операций (поставлять в качестве значений, которые будут использоваться для расчета).
Все это означает, что ресурсы в Move обладают высоким уровнем как безопасности, так и выразительности. Они защищены внутри кода, но при этом могут свободно использоваться для всевозможных операций. Такая комбинация идеально подходит для программирования блокчейна, поскольку она решает сразу две проблемы трилеммы: безопасность и масштабируемость. В настоящее время "монета Diem, обработка транзакций и управление валидаторами" закодированы как ресурсы в Move.
Амбиции Move
В White Paper языка Move приводится четкий перечень принципов, которые легли в основу его разработки. Разработчики также отмечают проблемы создания публичных блокчейн-систем, которые затрагивают не только Move, но и все языки программирования блокчейнов.
Они отмечают, что Diem (Libra) должен быть "открытой системой", где каждый может просматривать состояние блокчейна и отправлять транзакции. Это радикально отличается от традиционного программного обеспечения для управления активами, такого как цифровые банковские услуги, поскольку это глубоко закрытые системы. Доступ к ним возможен только при наличии специальных разрешений (которых существует множество), а прозрачность по отношению к другим пользователям крайне ограничена.
Но в блокчейне "все участники находятся в равных условиях". Это создает ряд проблем, главная из которых - предотвращение недействительных транзакций например, в случае, если один пользователь пытается перевести активы, принадлежащие другому).
Кроме того, блокчейн должен учитывать два аспекта традиционной валюты, которые трудно реализовать в программном обеспечении. Во-первых, это дефицит: дублирование активов должно быть запрещено, а создание новых активов должно требовать специальных привилегий. (Реализовать эту привилегию в равноправной, открытой системе особенно сложно, и это сильно ограничивает децентрализацию такой системы). Второе - это доступ; способность пользователя контролировать и защищать свои активы имеет первостепенное значение. Использование защищенных первоклассных ресурсов в Move в значительной степени является попыткой решить эти вопросы дефицита и доступа.
Команда инженеров также перечислила три ключевые проблемы, которые они обнаружили в существующих языках блокчейна, в частности в Bitcoin Script и Solidity (основные языки программирования для Bitcoin и Ethereum соответственно).
1. Непрямое кодирование активов
Поскольку программирование выполняется математически, многие элементы представлены в виде целых чисел. Это относится и к блокчейн-активам, таким как криптовалюта, что характерно для Bitcoin и Ethereum. Инженеры Move посчитали, что это делает написание программ на основе криптоактивов "неудобным и чреватым ошибками". Именно поэтому Move представляет Diem в качестве ресурса.
2. Неисчерпаемый дефицит
Языки Bitcoin и Ethereum хорошо справляются с защитой дефицита своей основной криптовалюты. Однако эти языки плохо приспособлены для создания новых активов с дефицитными свойствами. Это особенно актуально для Solidity и Ethereum Virtual Machine, которые позволяют создавать токены ERC-20 на основе блокчейна Ethereum. В таких случаях разработчикам приходится создавать дефицитные активы самостоятельно, без поддержки языка. Move стремится изменить эту ситуацию.
3. Строгий контроль доступа
Как и в случае с дефицитом, Bitcoin и Ethereum жестко контролируют доступ к своим основным криптовалютам, чтобы владение и передача не могли быть подделаны. Однако это нелегко распространить на другие элементы, а также настроить уровень или способы доступа. Как и в случае с дефицитом, инженеры Move стремились сделать эти функции более расширяемыми и настраиваемыми, чтобы сделать язык более универсальным и масштабируемым.
О Pontem
Pontem Network - это студия разработки блокчейн-продуктов, цель которых - вовлечь как можно больше людей в новую финансовую систему на базе блокчейна. В сотрудничестве с проектом Aptos мы создаем фундаментальные децентрализованные приложения, инструменты для создания ПО, децентрализованные биржи и т.д. product studio working toward global financial inclusion powered by blockchains. We are partnered with Aptos to build foundational dApps, development tools,, AMMs, and more.The Move IntelliJ IDE is just the beginning."
Чтобы быть в курсе нашей работы, обязательно следите за Pontem в Twitter, подписывайтесь на Medium и подключайтесь к нам в Telegram.