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

Нативні програми: вони надають основні функціональні можливості, необхідні валідаторним вузлам. Найвідоміша з них - Системна програма, відповідальна за управління створенням нових рахунків та передачу SOL між двома рахунками.
Програми SPL: Вони визначають серію дій на ланцюжку, включаючи створення токенів, обмін, позику, створення стейкінг-пулів, підтримку послуг резолюції доменних імен на ланцюжку та інше. Серед них Програма токенів SPL використовується для операцій з токенами, в той час як програми, як от Програма пов'язаного токен-рахунку, часто використовуються для написання інших налаштованих програм.
Ви називаєте це смарт-контрактами, а я називаю це програмами, що працюють на ланцюгу. Різні назви, але обидва посилаються на код, що виконується на блокчейні. Точно так само, як Чжан Сан, Лі Сі та Ван Ма Цзи - це всі імена, якісність однієї з них також слід оцінювати за іншими аспектами.
У 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 та його відсутність налаштувань для розробки блокчейн багато вимог призводять до зайвого коду та перетворення колеса. Для спрощення розробки багато проектів у виробництві використовують фреймворк Anchor, створений у співпраці з Backpack та Armani. Крім того, декілька нових мов програмування, спеціально розроблених для розробки блокчейн, таких як Cairo (Starknet) та Move (Sui, Aptos), базуються на Rust.

Багато проектів у виробництві використовують фреймворк Anchor.
Смарт-контракти Ethereum в основному розробляються за допомогою мови Solidity, яка має синтаксис, схожий на JavaScript, з файлами коду, що мають розширення .sol. Завдяки своєму відносно простому синтаксису та більш зрілим інструментам розробки (таким як фреймворк Hardhat та середовище розробки Remix), Ethereum, як правило, вважається більш простим і приємним для розробки порівняно з Solana, яка має вищу криву навчання. Незважаючи на поточну популярність Solana, кількість розробників на Ethereum залишається набагато більшою, ніж на Solana.
У певних обставинах гоночний автомобіль вищого рівня перевершить модифікований автомобіль. Ржавчина, як гоночний автомобіль вищого рівня, ефективно забезпечує продуктивність та безпеку Solana. Однак вона не ґрунтується на природньому проектуванні для розробки програм на ланцюгу, що фактично ускладнює рівень складності водіння (розробки). Публічні ланцюги, які приймають мови на основі Rust та спеціально налаштовані для розробки на ланцюгу, можна прирівняти до модифікації цього гоночного автомобіля для кращої адаптації до дорожніх умов. У цьому відношенні Solana має певний недолік.
Відмова від відповідальності: Погляди та думки, висловлені в цій статті, представляють лише особисті погляди автора і не становлять жодної інвестиційної поради.
Інші мовні версії статті перекладені командою Gate Learn, яка не згадана в[](http://Gate.comGate, перекладена стаття не може бути відтворена, поширена або списана.





