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

НовичокJun 11, 2024
Solana — это высокопроизводительная блокчейн-платформа, предназначенная для поддержки децентрализованных приложений. Он известен своей скоростью и масштабируемостью, достигаемыми благодаря уникальному механизму консенсуса и архитектурному дизайну. В этой статье Ethereum используется в качестве объекта сравнения, чтобы кратко представить характеристики модели программирования смарт-контрактов Solana.
Изучение Solana Смарт-контракт модели программирования

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

Solana — это высокопроизводительная блокчейн-платформа, предназначенная для поддержки децентрализованных приложений. Он известен своей скоростью и масштабируемостью, достигаемыми благодаря уникальному механизму консенсуса и архитектурному дизайну. В этой статье Ethereum используется в качестве объекта сравнения, чтобы кратко представить характеристики модели программирования смарт-контрактов Solana.

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

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

Исполняемые коды, работающие на Solana, называются программами в блокчейне, и они могут интерпретировать инструкции, отправленные в каждой транзакции. Эти программы могут быть развернуты непосредственно в ядре сети как собственные программы или опубликованы кем угодно как программы SPL.

  1. Инструкция: Инструкции — это уникальные термины для программ в цепочке Solana. Ончейн-программы состоят из инструкций. Это самые маленькие единицы, которые выполняют определенные операции: одна или несколько инструкций включаются в каждую транзакцию Solana. В инструкциях указываются действия, которые необходимо выполнить, включая вызов определенной программы в блокчейне, передачу счета, списка входных данных и предоставление массива байтов. Инструкции имеют вычислительные ограничения, поэтому программы в блокчейне должны быть оптимизированы для использования небольшого количества вычислительных единиц или для разделения дорогостоящих операций на несколько инструкций.

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

Вы называете их смарт-контрактами, я называю их программами в блокчейне. Это разные термины, но оба они относятся к коду, работающему в блокчейне. Так же, как и Алиса, Боб и Джон — это все имена, и их реальные качества должны оцениваться другими аспектами.

Модель учетной записи, разделение данных:

Как и Ethereum, Solana также является блокчейном, основанным на модели счет, но Solana предоставляет другую модель счет, чем Ethereum, и хранит данные другими способами.

В Solana учетные записи могут сохранять информацию о кошельке и другие данные. К полям, определяемым учетной записью, относятся Lamports (баланс счета), Owner (владелец счета), Executable (является ли это исполняемым счетом) и Data (данные, хранящиеся в счете). Каждый счет назначает программу в качестве ее владельца, чтобы определить, для какой программы счет используется в качестве хранилища состояний. Эти в блокчейне программы доступны только для чтения или не имеют состояния: программа счет (исполняемая счет) хранит только bytecode BPF и не хранит никаких состояний. Программа будет хранить состояние в других независимых учетных записях (неисполняемых учетных записях). То есть модель программирования Solana разделяет код и данные.

Ethereum счет в основном является отсылкой к EVM государству. Его смарт-контракт не только имеет логику кода, но и должен хранить пользовательские данные. Это часто считается недостатком конструкции, оставшимся от истории EVM.

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

В Ethereum «владелец» смарт-контракта — это глобальная переменная, которая соответствует смарт-контракту один к одному. Таким образом, вызов функции может напрямую изменить "владельца" контракта.

Однако в Solana «владельцем» смарт-контракта являются данные, связанные со счетом, а не глобальная переменная. Счет может иметь несколько владельцев, а не ассоциацию один к одному. Чтобы злоумышленник мог воспользоваться уязвимостью безопасности в смарт-контракте, ему нужно не только найти проблемную функцию, но и подготовить «правильные» учетные записи для вызова этой функции. Этот шаг непрост, так как Solana смарт-контракты обычно включает в себя несколько входных учетных записей и управляет их отношениями с помощью ограничений (например, account1.owner == account2.key). Процесс от «подготовки правильных учетных записей» до «запуска атаки» дает персоналу по мониторингу безопасности достаточно времени для упреждающего обнаружения подозрительных транзакций, связанных с созданием «поддельных» учетных записей, связанных со смарт-контрактом, до того, как произойдет атака.

Ethereum смарт-контракты похожи на хранилище, которое использует уникальный пароль; как только вы получаете этот пароль, вы становитесь его полным владельцем. Напротив, смарт-контракты Solana похожи на хранилище с множеством паролей. Чтобы получить доступ, нужно не только получить пароли, но и выяснить, какой пароль какому замку соответствует, чтобы его открыть.

Язык программирования

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

Поскольку язык Rust сам по себе сложен для начала работы и не заточен под разработку блокчейна, многие требования требуют переосмысления колеса и избыточного кода. (Многие проекты в продакшене используют фреймворк Anchor, созданный одним из создателей рюкзака Армани для упрощения разработки) Многие недавно созданные языки программирования, посвященные блокчейн-разработке, основаны на 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 фокусируется на высокой пропускной способности, низкой стоимости и масштабируемости, что делает ее идеальным выбором для разработчиков, которые в настоящее время хотят создавать высокопроизводительные децентрализованные приложения.

Отказ от ответственности:

  1. Эта статья перепечатана с [Foresight News]. Все авторские права принадлежат оригинальному автору [Алексу Лю]. Если у вас есть возражения против этой перепечатки, пожалуйста, свяжитесь с командой Gate Learn, и они оперативно разберутся с этим.
  2. Отказ от ответственности: Взгляды и мнения, выраженные в этой статье, принадлежат исключительно автору и не являются какими-либо инвестиционными рекомендациями.
  3. Переводом статьи на другие языки занимается команда Gate Learn. Если не указано иное, копирование, распространение или плагиат переведенных статей запрещены.

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

НовичокJun 11, 2024
Solana — это высокопроизводительная блокчейн-платформа, предназначенная для поддержки децентрализованных приложений. Он известен своей скоростью и масштабируемостью, достигаемыми благодаря уникальному механизму консенсуса и архитектурному дизайну. В этой статье Ethereum используется в качестве объекта сравнения, чтобы кратко представить характеристики модели программирования смарт-контрактов Solana.
Изучение Solana Смарт-контракт модели программирования

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

Solana — это высокопроизводительная блокчейн-платформа, предназначенная для поддержки децентрализованных приложений. Он известен своей скоростью и масштабируемостью, достигаемыми благодаря уникальному механизму консенсуса и архитектурному дизайну. В этой статье Ethereum используется в качестве объекта сравнения, чтобы кратко представить характеристики модели программирования смарт-контрактов Solana.

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

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

Исполняемые коды, работающие на Solana, называются программами в блокчейне, и они могут интерпретировать инструкции, отправленные в каждой транзакции. Эти программы могут быть развернуты непосредственно в ядре сети как собственные программы или опубликованы кем угодно как программы SPL.

  1. Инструкция: Инструкции — это уникальные термины для программ в цепочке Solana. Ончейн-программы состоят из инструкций. Это самые маленькие единицы, которые выполняют определенные операции: одна или несколько инструкций включаются в каждую транзакцию Solana. В инструкциях указываются действия, которые необходимо выполнить, включая вызов определенной программы в блокчейне, передачу счета, списка входных данных и предоставление массива байтов. Инструкции имеют вычислительные ограничения, поэтому программы в блокчейне должны быть оптимизированы для использования небольшого количества вычислительных единиц или для разделения дорогостоящих операций на несколько инструкций.

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

Вы называете их смарт-контрактами, я называю их программами в блокчейне. Это разные термины, но оба они относятся к коду, работающему в блокчейне. Так же, как и Алиса, Боб и Джон — это все имена, и их реальные качества должны оцениваться другими аспектами.

Модель учетной записи, разделение данных:

Как и Ethereum, Solana также является блокчейном, основанным на модели счет, но Solana предоставляет другую модель счет, чем Ethereum, и хранит данные другими способами.

В Solana учетные записи могут сохранять информацию о кошельке и другие данные. К полям, определяемым учетной записью, относятся Lamports (баланс счета), Owner (владелец счета), Executable (является ли это исполняемым счетом) и Data (данные, хранящиеся в счете). Каждый счет назначает программу в качестве ее владельца, чтобы определить, для какой программы счет используется в качестве хранилища состояний. Эти в блокчейне программы доступны только для чтения или не имеют состояния: программа счет (исполняемая счет) хранит только bytecode BPF и не хранит никаких состояний. Программа будет хранить состояние в других независимых учетных записях (неисполняемых учетных записях). То есть модель программирования Solana разделяет код и данные.

Ethereum счет в основном является отсылкой к EVM государству. Его смарт-контракт не только имеет логику кода, но и должен хранить пользовательские данные. Это часто считается недостатком конструкции, оставшимся от истории EVM.

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

В Ethereum «владелец» смарт-контракта — это глобальная переменная, которая соответствует смарт-контракту один к одному. Таким образом, вызов функции может напрямую изменить "владельца" контракта.

Однако в Solana «владельцем» смарт-контракта являются данные, связанные со счетом, а не глобальная переменная. Счет может иметь несколько владельцев, а не ассоциацию один к одному. Чтобы злоумышленник мог воспользоваться уязвимостью безопасности в смарт-контракте, ему нужно не только найти проблемную функцию, но и подготовить «правильные» учетные записи для вызова этой функции. Этот шаг непрост, так как Solana смарт-контракты обычно включает в себя несколько входных учетных записей и управляет их отношениями с помощью ограничений (например, account1.owner == account2.key). Процесс от «подготовки правильных учетных записей» до «запуска атаки» дает персоналу по мониторингу безопасности достаточно времени для упреждающего обнаружения подозрительных транзакций, связанных с созданием «поддельных» учетных записей, связанных со смарт-контрактом, до того, как произойдет атака.

Ethereum смарт-контракты похожи на хранилище, которое использует уникальный пароль; как только вы получаете этот пароль, вы становитесь его полным владельцем. Напротив, смарт-контракты Solana похожи на хранилище с множеством паролей. Чтобы получить доступ, нужно не только получить пароли, но и выяснить, какой пароль какому замку соответствует, чтобы его открыть.

Язык программирования

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

Поскольку язык Rust сам по себе сложен для начала работы и не заточен под разработку блокчейна, многие требования требуют переосмысления колеса и избыточного кода. (Многие проекты в продакшене используют фреймворк Anchor, созданный одним из создателей рюкзака Армани для упрощения разработки) Многие недавно созданные языки программирования, посвященные блокчейн-разработке, основаны на 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 фокусируется на высокой пропускной способности, низкой стоимости и масштабируемости, что делает ее идеальным выбором для разработчиков, которые в настоящее время хотят создавать высокопроизводительные децентрализованные приложения.

Отказ от ответственности:

  1. Эта статья перепечатана с [Foresight News]. Все авторские права принадлежат оригинальному автору [Алексу Лю]. Если у вас есть возражения против этой перепечатки, пожалуйста, свяжитесь с командой Gate Learn, и они оперативно разберутся с этим.
  2. Отказ от ответственности: Взгляды и мнения, выраженные в этой статье, принадлежат исключительно автору и не являются какими-либо инвестиционными рекомендациями.
  3. Переводом статьи на другие языки занимается команда Gate Learn. Если не указано иное, копирование, распространение или плагиат переведенных статей запрещены.
Начните торговать сейчас
Зарегистрируйтесь сейчас и получите ваучер на
$100
!