Вивчення Solana Смарт-контракт моделі програмування

Початківець6/11/2024, 5:47:31 AM
Solana — це високопродуктивна блокчейн-платформа, призначена для підтримка dApps. Він відомий своєю швидкістю та масштабованістю, що досягається завдяки унікальному механізму консенсусу та архітектурному дизайну. У цій статті Ethereum використовується як об'єкт порівняння для короткого представлення характеристик моделі програмування смарт-контрактів Solana.

Вперед оригінальну назву '小学生也能看懂!Solana 的编程模型,究竟和 ETH 有啥区别?'

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

Смарт-контракти та у блокчейні програми:

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

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

  1. Інструкції: Інструкції – це унікальні терміни для програм у ланцюжку Solana. Ончейн-програми складаються з інструкцій. Це найменші одиниці, які виконують конкретні операції: одна або кілька інструкцій включаються в кожну Solana транзакцію. Інструкції визначають дії, які потрібно виконати, включаючи виклик певної у блокчейні програми, передачу рахунок, список вхідних даних і надання масиву байтів. Інструкції мають обчислювальні обмеження, тому у блокчейні програми повинні бути оптимізовані для використання невеликої кількості обчислювальних одиниць або для розбиття дорогих операцій на кілька інструкцій.

  1. Нативні програми: це програми, які надають необхідні функціональні можливості для перевірки вузлів. Найпомітнішою з них є Системна програма, яка відповідає за управління створенням нових облікових записів і передачу SOL між двома обліковими записами.
  2. Програми SPL: Вони визначають низку у блокчейні видів діяльності, включаючи створення, біржа та кредитування токенів, а також створення пулів стейкінгу та обслуговування у блокчейні послуг з вирішення доменних імен. Серед них програма SPL Токен використовується для операцій з токенами, тоді як програма Associated Токен Account зазвичай використовується для написання інших спеціальних програм.

Ви називаєте їх смартконтракти, я називаю їх у блокчейні програмами. Різні терміни, але обидва вони стосуються коду, що працює на блокчейні. Так само, як і Аліса, Боб і Джон – це імена, і їх справжні якості потрібно оцінювати за іншими аспектами.

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

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

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

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

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

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

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

Ethereum смартконтракти схожі на сховище, яке використовує унікальний пароль; як тільки ви отримуєте цей пароль, ви отримуєте повне право власності. На противагу цьому, смартконтракти Solana схожі на сховище з безліччю паролів. Щоб отримати доступ, потрібно не тільки отримати паролі, а й з'ясувати, який пароль відповідає якому замку, щоб його відкрити.

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

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

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

У багатьох проектах у виробництві використовується фреймворк Anchor

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

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

Резюме

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

Відмова від відповідальності:

  1. Цю статтю передруковано з [Foresight News]. Усі авторські права належать оригінальному автору [Alex Liu]. Якщо є заперечення проти цього передруку, будь ласка, зв'яжіться з командою Gate Learn, і вони оперативно впораються з цим.
  2. Відмова від відповідальності: Погляди та думки, висловлені в цій статті, належать виключно автору і не є жодною інвестиційною порадою.
  3. Переклад статті на інші мови здійснює команда Gate Learn. Якщо не зазначено, копіювання, розповсюдження або плагіат перекладених статей заборонено.

Вивчення Solana Смарт-контракт моделі програмування

Початківець6/11/2024, 5:47:31 AM
Solana — це високопродуктивна блокчейн-платформа, призначена для підтримка dApps. Він відомий своєю швидкістю та масштабованістю, що досягається завдяки унікальному механізму консенсусу та архітектурному дизайну. У цій статті Ethereum використовується як об'єкт порівняння для короткого представлення характеристик моделі програмування смарт-контрактів Solana.

Вперед оригінальну назву '小学生也能看懂!Solana 的编程模型,究竟和 ETH 有啥区别?'

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

Смарт-контракти та у блокчейні програми:

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

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

  1. Інструкції: Інструкції – це унікальні терміни для програм у ланцюжку Solana. Ончейн-програми складаються з інструкцій. Це найменші одиниці, які виконують конкретні операції: одна або кілька інструкцій включаються в кожну Solana транзакцію. Інструкції визначають дії, які потрібно виконати, включаючи виклик певної у блокчейні програми, передачу рахунок, список вхідних даних і надання масиву байтів. Інструкції мають обчислювальні обмеження, тому у блокчейні програми повинні бути оптимізовані для використання невеликої кількості обчислювальних одиниць або для розбиття дорогих операцій на кілька інструкцій.

  1. Нативні програми: це програми, які надають необхідні функціональні можливості для перевірки вузлів. Найпомітнішою з них є Системна програма, яка відповідає за управління створенням нових облікових записів і передачу SOL між двома обліковими записами.
  2. Програми SPL: Вони визначають низку у блокчейні видів діяльності, включаючи створення, біржа та кредитування токенів, а також створення пулів стейкінгу та обслуговування у блокчейні послуг з вирішення доменних імен. Серед них програма SPL Токен використовується для операцій з токенами, тоді як програма Associated Токен Account зазвичай використовується для написання інших спеціальних програм.

Ви називаєте їх смартконтракти, я називаю їх у блокчейні програмами. Різні терміни, але обидва вони стосуються коду, що працює на блокчейні. Так само, як і Аліса, Боб і Джон – це імена, і їх справжні якості потрібно оцінювати за іншими аспектами.

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

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

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

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

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

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

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

Ethereum смартконтракти схожі на сховище, яке використовує унікальний пароль; як тільки ви отримуєте цей пароль, ви отримуєте повне право власності. На противагу цьому, смартконтракти Solana схожі на сховище з безліччю паролів. Щоб отримати доступ, потрібно не тільки отримати паролі, а й з'ясувати, який пароль відповідає якому замку, щоб його відкрити.

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

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

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

У багатьох проектах у виробництві використовується фреймворк Anchor

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

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

Резюме

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

Відмова від відповідальності:

  1. Цю статтю передруковано з [Foresight News]. Усі авторські права належать оригінальному автору [Alex Liu]. Якщо є заперечення проти цього передруку, будь ласка, зв'яжіться з командою Gate Learn, і вони оперативно впораються з цим.
  2. Відмова від відповідальності: Погляди та думки, висловлені в цій статті, належать виключно автору і не є жодною інвестиційною порадою.
  3. Переклад статті на інші мови здійснює команда Gate Learn. Якщо не зазначено, копіювання, розповсюдження або плагіат перекладених статей заборонено.
Розпочати зараз
Зареєструйтеся та отримайте ваучер на
$100
!