August 25, 2022

Як працює мова програмування Move

Розуміння програмного забезпечення Diem

Минулого місяця Meta оголосила про продаж свого стейблкоїна Diem Silvergate, провідному банку в сфері криптовалют . (Щоб детально ознайомитися з цим продажем і Silvergate, ознайомтеся з нашим нещодавнім звітом .) Silvergate керує Silvergate Exchange Network (SEN), цілодобовою системою передачі активів, яка використовується багатьма провідними криптовалютними біржами . Silvergate планує використати інфраструктуру Diem, яку вони придбали, щоб представити стейблкоїн із доларовою підтримкою для SEN .

Важливою частиною пакету Diem, за який Silvergate заплатив майже 200 мільйонів доларів, є мова програмування Move. Основною причиною, чому проект Diem (раніше Libra) тривав у Meta так довго, було створення власної мови програмування для криптовалюти. У цій статті ми розглянемо основні моменти Move і його майбутнє використання, оскільки Silvergate планує майбутнє Diem.

Ключові терміни

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

Мова програмування – « Набір команд, інструкцій та іншого синтаксису для створення програмного забезпечення» . Move — це мова програмування для Diem, яка дає змогу використовувати як базові функції криптовалюти, так і створювати майбутні програми для Diem.

Blockchain – « Цифрова база даних, що містить інформацію (наприклад, записи про фінансові операції), яку можна одночасно використовувати та спільно використовувати у великій децентралізованій загальнодоступній мережі. Блокчейни живлять криптовалюти, створюючи незмінні книги транзакцій, які відбуваються. Консенсус має бути досягнутий перед тим, як транзакції будуть внесені до запису.

Трилема блокчейну – труднощі в досягненні безпеки (стійкості до атак), масштабованості (здатності до зростання) і децентралізації (розподіленої по географії та користувачам) для мереж блокчейну. Досі блокчейни намагалися досягти всіх трьох цих цілей. Багато найкращих блокчейнів сьогодні, наприклад Ethereum, є безпечними та децентралізованими. Однак це спричиняє повільну швидкість і високі комісії за транзакції, що негативно впливає на їх масштабованість. Diem, як і більшість блокчейнів, прагне вирішити цю трилему. Переміщення є значною частиною цього рішення

Лінійна логіка – система математичної логіки, створена Жаном-Івом Жірадом у 1987 році, яка наголошує на формулах як на ресурсах, а не на повних істинах або необхідності повних доказів . Ключова зміна полягає в тому, що ресурси можна використовувати лише один раз, а не розглядати їх як постійно істинні. (тобто «Якщо ви дасте мені один раз, я дам вам один раз B» замість «A можна обміняти на B».) Це робить лінійну логіку корисною в інформатиці, де обмеження формули ресурсом замість лікування це як універсальна істина дозволяє створювати більш різноманітні системи.

Ресурс - базова одиниця систем лінійної логіки. У Move « ресурс ніколи не можна скопіювати чи неявно відкинути, лише переміщувати між місцями зберігання програми. Потреба в тому, щоб токени, книги та інші елементи блокчейну були постійними, ось чому лінійна логіка, зокрема ресурси, використовувалася для створення мови Move.

Що таке Move?

Move — це мова програмування, розроблена для Diem Blockchain. І Move, і Diem були створені Diem Association, технічним консорціумом, який підтримує Meta . Нещодавно проект Diem, включаючи мову Move, був проданий Silvergate .

Формат виконуваного файлу Move — це « байт-код, який має вищий рівень, ніж асемблер, але нижчий, ніж вихідна мова. Байт-код перевіряється в ланцюжку на безпеку ресурсів, типу та пам’яті верифікатором байт-коду, а потім виконується безпосередньо інтерпретатором байт-коду. Цей механізм був розроблений для максимального підвищення безпеки, не додаючи витрат на компіляцію до транзакцій, мінімізуючи комісію за газ порівняно з Ethereum. Це приклад того, як Move намагається вирішити трилему через свій дизайн.

Ресурси: What Makes Move Move

Головним фактором, який відрізняє Move від інших мов програмування, є використання ресурсів, які базуються на математичній ідеї лінійної логіки. У лінійній логіці формули розглядаються як фундаментальні ресурси, які можна використовувати лише один раз . Після цього в Move « ресурс ніколи не можна скопіювати чи неявно відкинути, лише переміщувати між місцями зберігання програми ». Move дозволяє розробникам кодувати власні типи ресурсів, які розглядаються як «першокласні» і не можуть бути дубльовані або стерті.

Це можливо за допомогою системи статичних типів Move . Це означає, що змінні в мові програмування повинні бути визначені як певний тип (тобто число або слово) . У Move ця система захищає першокласний характер ресурсів. Однак ресурси все ще можна використовувати так само, як і будь-який інший, менш захищений елемент. Вони можуть зберігатися в структурах даних або передаватись як аргументи процедурам (надаються як значення, які будуть використовуватися для обчислення).

Все це означає, що ресурси в Move мають високий рівень як безпеки, так і виразності. Вони захищені кодом, але також можуть вільно використовуватися для всіх видів операцій. Ця комбінація ідеально підходить для блокчейн-програмування, оскільки вона розглядає як аспекти безпеки, так і масштабованість трилеми. Наразі « монета Diem, обробка транзакцій і керування валідатором » закодовані як ресурси за допомогою Move.

Амбіції Move

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

Вони зазначають головним чином, що Diem (Libra) має бути «відкритою системою», де будь-хто може переглядати стан блокчейну та надсилати транзакції. Це кардинально відрізняється від традиційного програмного забезпечення для управління активами, такого як цифровий банківський сервіс, оскільки це глибоко закриті системи. Доступ можливий лише зі спеціальними дозволами (яких існує багато рівнів), а прозорість щодо інших користувачів дуже обмежена.

Але в блокчейні «всі учасники знаходяться в рівних умовах». Це створює низку проблем. Основним з них є запобігання подачі недійсних транзакцій, наприклад спроби одного користувача передати активи іншого. Крім того, блокчейни повинні охоплювати два аспекти традиційної валюти, які важко реалізувати в програмному забезпеченні. По-перше, це дефіцит; дублювання активів має бути заборонено, а створення нових активів має бути привілейованим. (Реалізація цього привілею в егалітарній, відкритій системі особливо складна і значно обмежує децентралізацію такої системи.) По-друге, доступ; Здатність користувача контролювати та захищати свої активи є надзвичайно важливою. Використання захищених першокласних ресурсів у Move значною мірою є спробою вирішити ці проблеми дефіциту та доступу.

Команда інженерів перерахувала три ключові проблеми, які вони виявили в існуючих мовах блокчейну, зокрема Bitcoin Script і віртуальній машині Ethereum (основні мови програмування для Bitcoin і Ethereum відповідно).

1. Indirect Encoding of Assets

Оскільки програмування виконується математично, багато різних елементів представлено у вигляді цілих чисел. Це включає блокчейн-активи, такі як криптовалюта, як у випадку з біткойнами та ефіріумом. Інженери Move відчули, що це робить «незручним і схильним до помилок» написання програм на основі криптоактивів. Ось чому Move представляє Diem як ресурс.

2.Inextensible Scarcity

Мова біткойна та Ethereum добре захищає дефіцит основної криптовалюти. Однак мови недостатньо добре створені для створення нових ресурсів із обмеженими якостями. Це особлива проблема для віртуальної машини Ethereum, яка дозволяє створювати токени ERC-20 на основі блокчейну Ethereum. У цих випадках розробники повинні розробляти дефіцит самостійно без підтримки з боку languae. Move прагнув це змінити.

3.Inflexible Access Control

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