Переслать оригинальное название '小学生也能看懂!Solana 的编程模型,究竟和 ETH 有啥区别?'
Solana — это высокопроизводительная блокчейн-платформа, предназначенная для поддержки децентрализованных приложений. Он известен своей скоростью и масштабируемостью, достигаемыми благодаря уникальному механизму консенсуса и архитектурному дизайну. В этой статье Ethereum используется в качестве объекта сравнения, чтобы кратко представить характеристики модели программирования смарт-контрактов Solana.
Программы, работающие на Ethereum, называются смарт-контракты, серией кодов (функций), расположенных по определенному адресу на Ethereum и data(state). (О, код и данные связаны) Смарт-контракты также являются учетными записями Ethereum, которые называются контрактными учетными записями. У них есть балансы, и они могут стать объектами транзакций, но они не могут контролироваться человеком и развертываются в сети для запуска в качестве программ.
Исполняемые коды, работающие на Solana, называются программами в блокчейне, и они могут интерпретировать инструкции, отправленные в каждой транзакции. Эти программы могут быть развернуты непосредственно в ядре сети как собственные программы или опубликованы кем угодно как программы 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 фокусируется на высокой пропускной способности, низкой стоимости и масштабируемости, что делает ее идеальным выбором для разработчиков, которые в настоящее время хотят создавать высокопроизводительные децентрализованные приложения.
Переслать оригинальное название '小学生也能看懂!Solana 的编程模型,究竟和 ETH 有啥区别?'
Solana — это высокопроизводительная блокчейн-платформа, предназначенная для поддержки децентрализованных приложений. Он известен своей скоростью и масштабируемостью, достигаемыми благодаря уникальному механизму консенсуса и архитектурному дизайну. В этой статье Ethereum используется в качестве объекта сравнения, чтобы кратко представить характеристики модели программирования смарт-контрактов Solana.
Программы, работающие на Ethereum, называются смарт-контракты, серией кодов (функций), расположенных по определенному адресу на Ethereum и data(state). (О, код и данные связаны) Смарт-контракты также являются учетными записями Ethereum, которые называются контрактными учетными записями. У них есть балансы, и они могут стать объектами транзакций, но они не могут контролироваться человеком и развертываются в сети для запуска в качестве программ.
Исполняемые коды, работающие на Solana, называются программами в блокчейне, и они могут интерпретировать инструкции, отправленные в каждой транзакции. Эти программы могут быть развернуты непосредственно в ядре сети как собственные программы или опубликованы кем угодно как программы 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 фокусируется на высокой пропускной способности, низкой стоимости и масштабируемости, что делает ее идеальным выбором для разработчиков, которые в настоящее время хотят создавать высокопроизводительные децентрализованные приложения.