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

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

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

Не стоит недооценивать это различие! Solana смарт-контракты фундаментально сложнее атаковать по сравнению с блокчейнами со связанной моделью программирования, такой как Ethereum.
В Ethereum «владелец» смарт-контракта — это глобальная переменная, которая соответствует смарт-контракту один к одному. Таким образом, вызов функции может напрямую изменить "владельца" контракта.
Однако в Solana «владельцем» смарт-контракта являются данные, связанные со счетом, а не глобальная переменная. Счет может иметь несколько владельцев, а не ассоциацию один к одному. Чтобы злоумышленник мог воспользоваться уязвимостью безопасности в смарт-контракте, ему нужно не только найти проблемную функцию, но и подготовить «правильные» учетные записи для вызова этой функции. Этот шаг непрост, так как Solana смарт-контракты обычно включает в себя несколько входных учетных записей и управляет их отношениями с помощью ограничений (например, account1.owner == account2.key). Процесс от «подготовки правильных учетных записей» до «запуска атаки» дает персоналу по мониторингу безопасности достаточно времени для упреждающего обнаружения подозрительных транзакций, связанных с созданием «поддельных» учетных записей, связанных со смарт-контрактом, до того, как произойдет атака.
Ethereum смарт-контракты похожи на хранилище, которое использует уникальный пароль; как только вы получаете этот пароль, вы становитесь его полным владельцем. Напротив, смарт-контракты Solana похожи на хранилище с множеством паролей. Чтобы получить доступ, нужно не только получить пароли, но и выяснить, какой пароль какому замку соответствует, чтобы его открыть.
Поскольку язык 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 здесь находится в невыгодном положении.





