Відмінність між моделями програмування Solana та ETH

Розширений5/22/2024, 7:43:04 PM
У цій статті порівнюються моделі програмування розумних контрактів Solana та Ethereum. Програми на ланцюжку Solana схожі на розумні контракти Ethereum, але Solana пропонує інше середовище виконання через свою унікальну модель облікового запису та підхід до відокремлення даних. Модель облікового запису Solana розділяє код та зберігання даних, підвищуючи безпеку. Solana в основному використовує мову Rust для розробки розумних контрактів, яка пропонує високу продуктивність та безпеку, але має крутий криву вивчення. Ethereum, з іншого боку, головним чином використовує Solidity, надаючи простіший та більш зрілий досвід розробки. Незважаючи на виклики розробки з Solana, його висока пропускна здатність, низькі витрати та масштабованість роблять його ідеальним вибором для розробки високопродуктивних додатків DApps.

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

Розумні контракти та програми на ланцюзі блоків:

Програми, що працюють на Ethereum, відомі як смарт-контракти, які представляють собою набір коду (функцій) та даних (стану), розташованих за певною адресою в мережі Ethereum. Смарт-контракти також є обліковими записами Ethereum, відомими як контрактні рахунки. Вони мають баланси, можуть бути об'єктом транзакцій, але не можуть бути контрольовані особами. Вони розгортаються в мережі для виконання як програми.

Натомість, виконуваний код, що працює на Solana, називається програмами на ланцюжку, які інтерпретують інструкції, відправлені разом з кожною транзакцією. Ці програми можуть бути розгорнуті безпосередньо у ядрі мережі як власні програми або опубліковані будь-ким як програми SPL.

Інструкції: Інструкції - це унікальні терміни для програм на ланцюжку Solana. Вони складаються з інструкцій, що виконують конкретні операції, утворюючи найменшу одиницю виконання для транзакцій на Solana. Кожна транзакція на Solana містить одну або кілька інструкцій, що вказують операції, які повинні бути виконані, включаючи виклик конкретних програм на ланцюжку, передачу рахунків, списки введення та надання байтових масивів. У інструкціях є обмеження обчислень, тому програми на ланцюжку повинні бути оптимізовані для використання меншої кількості обчислювальних одиниць або розбиття дорогих операцій на кілька інструкцій.

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

Програми SPL: Вони визначають серію дій на ланцюжку, включаючи створення токенів, обмін, позику, створення стейкінг-пулів, підтримку послуг резолюції доменних імен на ланцюжку та інше. Серед них Програма токенів SPL використовується для операцій з токенами, в той час як програми, як от Програма пов'язаного токен-рахунку, часто використовуються для написання інших налаштованих програм.

Ви називаєте це смарт-контрактами, а я називаю це програмами, що працюють на ланцюгу. Різні назви, але обидва посилаються на код, що виконується на блокчейні. Точно так само, як Чжан Сан, Лі Сі та Ван Ма Цзи - це всі імена, якісність однієї з них також слід оцінювати за іншими аспектами.

Модель облікового запису, роз'єднання даних:

Так само, як Ethereum, Solana також є блокчейном на основі моделі рахунку, але Solana надає іншу модель рахунку від Ethereum, зберігаючи дані по-різному.

У Solana облікові записи можуть містити інформацію про гаманець та інші дані. Поля, визначені обліковим записом, включають Lamports (баланс облікового запису), Owner (власник облікового запису), Executable (чи є він виконавчим обліковим записом) та Data (дані, збережені в обліковому записі). Кожен обліковий запис вказує програму як свого власника, щоб відрізнити, який стан програми він зберігає. Ці програми на ланцюжку є тільки для читання або безстанними: програмні облікові записи (виконавчі облікові записи) лише зберігають байткод BPF і не зберігають жодного стану. Програми зберігають свій стан у інших незалежних облікових записах (не виконавчих облікових записах). Програмна модель Solana роз'єднує код і дані.

З іншого боку, облікові записи Ethereum в основному служать посиланнями на стан EVM (Ethereum Virtual Machine). Розумні контракти на Ethereum містять як логіку коду, так і потребу зберігання користувацьких даних. Це часто вважається недоліком дизайну, успадкованого з історії EVM.

Не недооцінюйте цю відмінність! Смарт-контракти Solana фундаментально складніше атакувати, ніж блокчейни з зв'язаними моделями програмування, такі як Ethereum:

У Ethereum «власником» смарт-контракту є глобальна змінна, яка безпосередньо відповідає кожному смарт-контракту. Тому виклик певної функції може безпосередньо змінити «власника» контракту.

У Solana, однак, "власником" смарт-контракту є дані, пов'язані з обліковим записом, а не глобальна змінна. У обліковому записі може бути кілька власників, а не одне до одного. Для атакування вразливості безпеки в смарт-контракті зловмиснику необхідно не лише визначити проблемну функцію, але й підготувати "правильні" облікові записи для виклику цієї функції. Цей крок не є легким, оскільки смарт-контракти Solana зазвичай включають кілька вхідних облікових записів і управляють їхніми відносинами через обмеження (такі, як account1.owner==account2.keyПроцес від «підготовки правильних облікових записів» до «запуску атаки» достатній для того, щоб системи безпеки заздалегідь виявляли підозрілі транзакції, пов'язані з створенням «фальшивих» облікових записів, що стосуються смарт-контрактів, перед тим як відбудеться атака.

Смарт-контракти Ethereum схожі з сейфом із єдиним унікальним паролем. Якщо у вас є цей пароль, ви отримуєте повну власність. У випадку з Solana, вони схожі на сейф із багатьма паролями. Щоб отримати доступ, вам необхідно не лише отримати паролі, але й розуміти відповідні ідентифікатори, перш ніж ви зможете відчинити двері.

Мова програмування

Rust - основна мова програмування для розробки смарт-контрактів на Solana. Її продуктивність та функції безпеки роблять її відповідною для високоризикового середовища блокчейну та смарт-контрактів. Solana також підтримує C, C++ та інші мови (хоча менш поширені). Офіційні Rust та C SDK надаються для підтримки розробки on-chain програм. Розробники можуть використовувати інструменти для компіляції програм у байткод Berkeley Packet Filter (файли з розширенням .so) та розгортання їх на блокчейн Solana. Логіка смарт-контрактів потім виконується через рантайм паралельних смарт-контрактів Sealevel.

Проте через високий поріг вивчення мови Rust та його відсутність налаштувань для розробки блокчейн багато вимог призводять до зайвого коду та перетворення колеса. Для спрощення розробки багато проектів у виробництві використовують фреймворк Anchor, створений у співпраці з Backpack та Armani. Крім того, декілька нових мов програмування, спеціально розроблених для розробки блокчейн, таких як Cairo (Starknet) та Move (Sui, Aptos), базуються на Rust.

Багато проектів у виробництві використовують фреймворк Anchor.

Смарт-контракти Ethereum в основному розробляються за допомогою мови Solidity, яка має синтаксис, схожий на JavaScript, з файлами коду, що мають розширення .sol. Завдяки своєму відносно простому синтаксису та більш зрілим інструментам розробки (таким як фреймворк Hardhat та середовище розробки Remix), Ethereum, як правило, вважається більш простим і приємним для розробки порівняно з Solana, яка має вищу криву навчання. Незважаючи на поточну популярність Solana, кількість розробників на Ethereum залишається набагато більшою, ніж на Solana.

У певних обставинах гоночний автомобіль вищого рівня перевершить модифікований автомобіль. Ржавчина, як гоночний автомобіль вищого рівня, ефективно забезпечує продуктивність та безпеку Solana. Однак вона не ґрунтується на природньому проектуванні для розробки програм на ланцюгу, що фактично ускладнює рівень складності водіння (розробки). Публічні ланцюги, які приймають мови на основі Rust та спеціально налаштовані для розробки на ланцюгу, можна прирівняти до модифікації цього гоночного автомобіля для кращої адаптації до дорожніх умов. У цьому відношенні Solana має певний недолік.

Висновок

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

Заява:

  1. Цю статтю відтворено з [panews], оригінальний заголовок «Моя бабуся також може зрозуміти: Яка різниця між моделлю програмування Solana та ETH?», авторське право належить оригінальному автору [Foresight News, Alex Liu], якщо у вас є які-небудь зауваження стосовно репринту, будь ласка, зв'яжіться Команда Gate LearnКоманда якнайшвидше вирішить це відповідно до відповідних процедур.

  2. Відмова від відповідальності: Погляди та думки, висловлені в цій статті, представляють лише особисті погляди автора і не становлять жодної інвестиційної поради.

  3. Інші мовні версії статті перекладені командою Gate Learn, яка не згадана вGate, перекладена стаття не може бути відтворена, поширена або списана.

Відмінність між моделями програмування Solana та ETH

Розширений5/22/2024, 7:43:04 PM
У цій статті порівнюються моделі програмування розумних контрактів Solana та Ethereum. Програми на ланцюжку Solana схожі на розумні контракти Ethereum, але Solana пропонує інше середовище виконання через свою унікальну модель облікового запису та підхід до відокремлення даних. Модель облікового запису Solana розділяє код та зберігання даних, підвищуючи безпеку. Solana в основному використовує мову Rust для розробки розумних контрактів, яка пропонує високу продуктивність та безпеку, але має крутий криву вивчення. Ethereum, з іншого боку, головним чином використовує Solidity, надаючи простіший та більш зрілий досвід розробки. Незважаючи на виклики розробки з Solana, його висока пропускна здатність, низькі витрати та масштабованість роблять його ідеальним вибором для розробки високопродуктивних додатків DApps.

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

Розумні контракти та програми на ланцюзі блоків:

Програми, що працюють на Ethereum, відомі як смарт-контракти, які представляють собою набір коду (функцій) та даних (стану), розташованих за певною адресою в мережі Ethereum. Смарт-контракти також є обліковими записами Ethereum, відомими як контрактні рахунки. Вони мають баланси, можуть бути об'єктом транзакцій, але не можуть бути контрольовані особами. Вони розгортаються в мережі для виконання як програми.

Натомість, виконуваний код, що працює на Solana, називається програмами на ланцюжку, які інтерпретують інструкції, відправлені разом з кожною транзакцією. Ці програми можуть бути розгорнуті безпосередньо у ядрі мережі як власні програми або опубліковані будь-ким як програми SPL.

Інструкції: Інструкції - це унікальні терміни для програм на ланцюжку Solana. Вони складаються з інструкцій, що виконують конкретні операції, утворюючи найменшу одиницю виконання для транзакцій на Solana. Кожна транзакція на Solana містить одну або кілька інструкцій, що вказують операції, які повинні бути виконані, включаючи виклик конкретних програм на ланцюжку, передачу рахунків, списки введення та надання байтових масивів. У інструкціях є обмеження обчислень, тому програми на ланцюжку повинні бути оптимізовані для використання меншої кількості обчислювальних одиниць або розбиття дорогих операцій на кілька інструкцій.

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

Програми SPL: Вони визначають серію дій на ланцюжку, включаючи створення токенів, обмін, позику, створення стейкінг-пулів, підтримку послуг резолюції доменних імен на ланцюжку та інше. Серед них Програма токенів SPL використовується для операцій з токенами, в той час як програми, як от Програма пов'язаного токен-рахунку, часто використовуються для написання інших налаштованих програм.

Ви називаєте це смарт-контрактами, а я називаю це програмами, що працюють на ланцюгу. Різні назви, але обидва посилаються на код, що виконується на блокчейні. Точно так само, як Чжан Сан, Лі Сі та Ван Ма Цзи - це всі імена, якісність однієї з них також слід оцінювати за іншими аспектами.

Модель облікового запису, роз'єднання даних:

Так само, як Ethereum, Solana також є блокчейном на основі моделі рахунку, але Solana надає іншу модель рахунку від Ethereum, зберігаючи дані по-різному.

У Solana облікові записи можуть містити інформацію про гаманець та інші дані. Поля, визначені обліковим записом, включають Lamports (баланс облікового запису), Owner (власник облікового запису), Executable (чи є він виконавчим обліковим записом) та Data (дані, збережені в обліковому записі). Кожен обліковий запис вказує програму як свого власника, щоб відрізнити, який стан програми він зберігає. Ці програми на ланцюжку є тільки для читання або безстанними: програмні облікові записи (виконавчі облікові записи) лише зберігають байткод BPF і не зберігають жодного стану. Програми зберігають свій стан у інших незалежних облікових записах (не виконавчих облікових записах). Програмна модель Solana роз'єднує код і дані.

З іншого боку, облікові записи Ethereum в основному служать посиланнями на стан EVM (Ethereum Virtual Machine). Розумні контракти на Ethereum містять як логіку коду, так і потребу зберігання користувацьких даних. Це часто вважається недоліком дизайну, успадкованого з історії EVM.

Не недооцінюйте цю відмінність! Смарт-контракти Solana фундаментально складніше атакувати, ніж блокчейни з зв'язаними моделями програмування, такі як Ethereum:

У Ethereum «власником» смарт-контракту є глобальна змінна, яка безпосередньо відповідає кожному смарт-контракту. Тому виклик певної функції може безпосередньо змінити «власника» контракту.

У Solana, однак, "власником" смарт-контракту є дані, пов'язані з обліковим записом, а не глобальна змінна. У обліковому записі може бути кілька власників, а не одне до одного. Для атакування вразливості безпеки в смарт-контракті зловмиснику необхідно не лише визначити проблемну функцію, але й підготувати "правильні" облікові записи для виклику цієї функції. Цей крок не є легким, оскільки смарт-контракти Solana зазвичай включають кілька вхідних облікових записів і управляють їхніми відносинами через обмеження (такі, як account1.owner==account2.keyПроцес від «підготовки правильних облікових записів» до «запуску атаки» достатній для того, щоб системи безпеки заздалегідь виявляли підозрілі транзакції, пов'язані з створенням «фальшивих» облікових записів, що стосуються смарт-контрактів, перед тим як відбудеться атака.

Смарт-контракти Ethereum схожі з сейфом із єдиним унікальним паролем. Якщо у вас є цей пароль, ви отримуєте повну власність. У випадку з Solana, вони схожі на сейф із багатьма паролями. Щоб отримати доступ, вам необхідно не лише отримати паролі, але й розуміти відповідні ідентифікатори, перш ніж ви зможете відчинити двері.

Мова програмування

Rust - основна мова програмування для розробки смарт-контрактів на Solana. Її продуктивність та функції безпеки роблять її відповідною для високоризикового середовища блокчейну та смарт-контрактів. Solana також підтримує C, C++ та інші мови (хоча менш поширені). Офіційні Rust та C SDK надаються для підтримки розробки on-chain програм. Розробники можуть використовувати інструменти для компіляції програм у байткод Berkeley Packet Filter (файли з розширенням .so) та розгортання їх на блокчейн Solana. Логіка смарт-контрактів потім виконується через рантайм паралельних смарт-контрактів Sealevel.

Проте через високий поріг вивчення мови Rust та його відсутність налаштувань для розробки блокчейн багато вимог призводять до зайвого коду та перетворення колеса. Для спрощення розробки багато проектів у виробництві використовують фреймворк Anchor, створений у співпраці з Backpack та Armani. Крім того, декілька нових мов програмування, спеціально розроблених для розробки блокчейн, таких як Cairo (Starknet) та Move (Sui, Aptos), базуються на Rust.

Багато проектів у виробництві використовують фреймворк Anchor.

Смарт-контракти Ethereum в основному розробляються за допомогою мови Solidity, яка має синтаксис, схожий на JavaScript, з файлами коду, що мають розширення .sol. Завдяки своєму відносно простому синтаксису та більш зрілим інструментам розробки (таким як фреймворк Hardhat та середовище розробки Remix), Ethereum, як правило, вважається більш простим і приємним для розробки порівняно з Solana, яка має вищу криву навчання. Незважаючи на поточну популярність Solana, кількість розробників на Ethereum залишається набагато більшою, ніж на Solana.

У певних обставинах гоночний автомобіль вищого рівня перевершить модифікований автомобіль. Ржавчина, як гоночний автомобіль вищого рівня, ефективно забезпечує продуктивність та безпеку Solana. Однак вона не ґрунтується на природньому проектуванні для розробки програм на ланцюгу, що фактично ускладнює рівень складності водіння (розробки). Публічні ланцюги, які приймають мови на основі Rust та спеціально налаштовані для розробки на ланцюгу, можна прирівняти до модифікації цього гоночного автомобіля для кращої адаптації до дорожніх умов. У цьому відношенні Solana має певний недолік.

Висновок

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

Заява:

  1. Цю статтю відтворено з [panews], оригінальний заголовок «Моя бабуся також може зрозуміти: Яка різниця між моделлю програмування Solana та ETH?», авторське право належить оригінальному автору [Foresight News, Alex Liu], якщо у вас є які-небудь зауваження стосовно репринту, будь ласка, зв'яжіться Команда Gate LearnКоманда якнайшвидше вирішить це відповідно до відповідних процедур.

  2. Відмова від відповідальності: Погляди та думки, висловлені в цій статті, представляють лише особисті погляди автора і не становлять жодної інвестиційної поради.

  3. Інші мовні версії статті перекладені командою Gate Learn, яка не згадана вGate, перекладена стаття не може бути відтворена, поширена або списана.

Comece agora
Inscreva-se e ganhe um cupom de
$100
!