Спеціальний Блокчейн програми
Last updated
Last updated
Однією з парадигм розвитку в світі блокчейнів сьогодні є блокчейни віртуальних машин, такі як Ethereum, де розробка зазвичай обертається навколо створення децентралізованих програм на основі існуючого блокчейну як набору смарт-контрактів. Хоча смарт-контракти можуть бути дуже хорошими для деяких випадків використання, як-от одноразові програми, вони часто не підходять для створення складних децентралізованих платформ. Загалом розумні контракти можуть обмежувати гнучкість, суверенітет і продуктивність.
Блокчейни для конкретних програм пропонують радикально іншу парадигму розробки, ніж блокчейни віртуальних машин. Спеціальний блокчейн програми — це блокчейн, налаштований для роботи однієї програми: розробники мають повну свободу приймати дизайнерські рішення, необхідні для оптимальної роботи програми. Вони також можуть забезпечити кращий суверенітет, безпеку та продуктивність.
Блокчейни віртуальних машин, такі як Ethereum, задовольнили потребу в більшій програмованості ще в 2014 році. У той час варіанти, доступні для створення децентралізованих програм, були досить обмеженими. Більшість розробників будували б на основі складної та обмеженої мови сценаріїв біткойн або розгалужували кодову базу біткойн, з якою було важко працювати та налаштовувати.
Блокчейни віртуальних машин прийшли з новою ціннісною пропозицією. Їхня державна машина містить віртуальну машину, яка здатна інтерпретувати повні за Тьюрингом програми під назвою Smart Contracts. Ці смарт-контракти дуже хороші для таких випадків використання, як одноразові події (наприклад, ICO), але вони можуть не підійти для створення складних децентралізованих платформ. Ось чому:
Смарт-контракти, як правило, розробляються за допомогою спеціальних мов програмування, які можуть інтерпретуватися базовою віртуальною машиною. Ці мови програмування часто незрілі та за своєю суттю обмежені обмеженнями самої віртуальної машини. Наприклад, віртуальна машина Ethereum не дозволяє розробникам реалізувати автоматичне виконання коду. Розробники також обмежені системою EVM на основі облікових записів, і вони можуть вибирати лише з обмеженого набору функцій для своїх криптографічних операцій. Це приклади, але вони вказують на відсутність гнучкості, яку часто передбачає середовище смарт-контрактів.
Всі смарт-контракти працюють на одній віртуальній машині. Це означає, що вони конкурують за ресурси, що може серйозно обмежити продуктивність. І навіть якби кінцеву машину було розділено на кілька підмножин (наприклад, за допомогою шардингу), розумні контракти все одно повинні були б інтерпретуватися віртуальною машиною, що обмежувало б продуктивність порівняно з рідною програмою, реалізованою на рівні кінцевої машини (наша контрольні тести показують покращення продуктивності порядку 10 разів після видалення віртуальної машини).
Іншою проблемою, пов’язаною з тим фактом, що смарт-контракти мають одне базове середовище, є результуюче обмеження суверенітету. Децентралізована програма — це екосистема, яка включає кількох гравців. Якщо додаток побудовано на блокчейні віртуальної машини загального призначення, зацікавлені сторони мають дуже обмежений суверенітет над своїм додатком і, зрештою, замінені управлінням базового блокчейну. Якщо в додатку є помилка, мало що можна з цим зробити.
Спеціальні для додатків блокчейни розроблені для усунення цих недоліків.
Спеціальні для додатків блокчейни надають розробникам максимальну гнучкість:
У блокчейнах Cosmos кінцевий автомат зазвичай підключається до основного механізму консенсусу через інтерфейс під назвою ABCI (відкриється нове вікно). Цей інтерфейс може бути загорнутий у будь-яку мову програмування, тобто розробники можуть створювати свій кінцевий автомат на мові програмування на свій вибір.
Розробники можуть вибирати серед кількох фреймворків для створення своєї кінцевої машини. Найпоширенішим сьогодні є Cosmos SDK, але існують і інші (наприклад, Lotion (відкривається нове вікно), Weave (відкривається нове вікно), ...). Вибір у більшості випадків буде зроблено на основі мови програмування, яку вони хочуть використовувати (Cosmos SDK і Weave на Golang, Lotion на Javascript, ...).
ABCI також дозволяє розробникам змінювати консенсусний механізм блокчейну для конкретної програми. Сьогодні тільки Tendermint готовий до виробництва, але в майбутньому очікується поява інших консенсусних механізмів.
Навіть коли вони погоджуються на структуру та механізм консенсусу, розробники все ще мають свободу налаштовувати їх, якщо вони не ідеально відповідають їхнім вимогам у своїх первісних формах.
Розробники можуть вільно досліджувати повний спектр компромісів (наприклад, кількість валідаторів проти пропускної здатності транзакцій, безпека проти доступності в асинхронному режимі, ...) і вибору дизайну (DB або дерево IAVL для зберігання, UTXO або модель облікового запису, ...).
Розробники можуть реалізувати автоматичне виконання коду. У Cosmos SDK логіка може автоматично запускатися на початку та в кінці кожного блоку. Вони також можуть вільно вибирати криптографічну бібліотеку, яка використовується в їхній програмі, на відміну від обмежень того, що робить доступним базове середовище у випадку блокчейнів віртуальних машин.
The list above contains a few examples that show how much flexibility application-specific blockchains give to developers. The goal of Cosmos and the Cosmos SDK is to make developer tooling as generic and composable as possible, so that each part of the stack can be forked, tweaked and improved without losing compatibility. As the community grows, more alternatives for each of the core building blocks will emerge, giving more options to developers.
Продуктивність децентралізованих програм, створених за допомогою смарт-контрактів, обмежена базовим середовищем. Щоб децентралізована програма оптимізувала продуктивність, вона має бути створена як блокчейн для конкретної програми. Далі наведено деякі з переваг блокчейну для конкретної програми з точки зору продуктивності:
Розробники блокчейнів для конкретних програм можуть працювати з новим механізмом консенсусу, таким як Tendermint BFT. У порівнянні з технологією Proof-of-Work (яка сьогодні використовується більшістю блокчейнів віртуальних машин) вона забезпечує значне збільшення пропускної здатності.
Спеціальний блокчейн програми працює лише з однією програмою, тому програма не конкурує з іншими за обчислення та зберігання. Це протилежність більшості нерозрізнених блокчейнів віртуальних машин сьогодні, де розумні контракти конкурують за обчислення та зберігання.
Навіть якби блокчейн віртуальної машини пропонував шардинг на основі додатків у поєднанні з ефективним алгоритмом консенсусу, продуктивність все одно була б обмежена самою віртуальною машиною. Справжнім вузьким місцем пропускної здатності є кінцевий автомат, і вимога, щоб транзакції інтерпретувалися віртуальною машиною, значно збільшує обчислювальну складність їх обробки.
Безпеку важко оцінити кількісно, і вона сильно відрізняється від платформи до платформи. Тим не менш, ось деякі важливі переваги, які блокчейн для конкретної програми може принести з точки зору безпеки:
Розробники можуть обирати перевірені мови програмування, як-от Golang, під час створення блокчейнів для конкретних програм, на відміну від мов програмування смарт-контрактів, які часто є більш незрілими.
Розробники не обмежені криптографічними функціями, доступними базовими віртуальними машинами. Вони можуть використовувати власну спеціальну криптографію та покладатися на добре перевірені криптобібліотеки.
Розробникам не потрібно турбуватися про потенційні помилки або механізми, які можна використовувати у базовій віртуальній машині, що полегшує міркування про безпеку програми.
Однією з головних переваг блокчейнів для окремих програм є суверенітет. Децентралізована програма — це екосистема, яка включає багато учасників: користувачів, розробників, сторонні служби тощо. Коли розробники будують блокчейн віртуальної машини, де співіснують багато децентралізованих програм, спільнота програми відрізняється від спільноти основного блокчейну, і остання замінює першу в процесі управління. Якщо є помилка або потрібна нова функція, зацікавлені сторони програми мають дуже мало свободи для оновлення коду. Якщо спільнота основного блокчейну відмовляється діяти, нічого не може статися.
Фундаментальна проблема тут полягає в тому, що керування додатком і керування мережею не узгоджуються. Цю проблему вирішують блокчейни для окремих програм. Оскільки блокчейни для конкретної програми спеціалізуються на управлінні однією програмою, зацікавлені сторони програми мають повний контроль над усім ланцюжком. Це гарантує, що спільнота не застрягне, якщо буде виявлено помилку, і що вона матиме повну свободу вибирати, як вона розвиватиметься.