Аудит смарт-контрактов в крипте - читать онлайн бесплатно, автор Дмитрий Васильевич Подлужный, ЛитПортал
bannerbanner
На страницу:
2 из 2
Настройки чтения
Размер шрифта
Высота строк
Поля

И наконец: в крипте нельзя просто доверять – нужно проверять.

Глава 2

Глава 2. Смарт-контракт и как он живёт

Сначала – кратко: смарт-контракт – это программа, которая хранится и выполняется в блокчейне.

Он обладает тремя базовыми свойствами – автономность, неизменяемость и децентрализация – и именно они формируют уникальные требования к проектированию, тестированию и безопасности.

В этой главе мы подробно разберём, как смарт-контракт «жизнью живёт»:

среды исполнения,

языки и парадигмы,

частые ошибки новичков

и простую мини-практику, чтобы написать первый безопасный токен.

2.1. Принцип работы: автономность, неизменяемость, децентрализация

Автономность

Контракт исполняется автоматически, когда в сеть приходит транзакция, направленная на его адрес. Никто «не нажимает кнопку» вручную – выполнение инициирует подписанная транзакция. Код действует строго по заложенной логике, без сознания и интуиции. Это означает, что вы не можете вставить человеческую проверку «подумай ещё раз» в середине транзакции.

Последствия:

Все пограничные случаи должны быть обработаны заранее.

Любая ветка исполнения, допускающая неправильный результат, может быть использована злоумышленником.

Неизменяемость

После деплоя (если контракт не проектился с прокси/апгрейдом) код статичен. Это повышает доверие к контракту (публичность и гарантированность поведения), но делает критически важным преддеплойный контроль качества.

Последствия:

Ошибка в релизе остаётся навсегда (если нет механизма обновления).

Апгрейды добавляют гибкость, но создают дополнительные векторы атак.

Децентрализация

Код и транзакции реплицируются и исполняются тысячами узлов. Это даёт устойчивость, но также делает уязвимости видимыми и воспроизводимыми.

Последствие: Эксплойт однажды найден – выполнится везде одинаково.

2.2. Среды и языки: краткий обзор

Разные экосистемы используют разные виртуальные машины и языки – от этого зависят идиомы, уязвимости и инструменты.

EVM

Solidity – самый распространённый язык для Ethereum и EVM-совместимых цепочек. Поддерживает ООП-подход, модификаторы, интерфейсы, наследование. Версии языка эволюционируют – начиная с 0.8.x появились встроенные проверки переполнения.

Vyper – минималистичный язык, ориентированный на безопасность и простоту анализа; менее гибок, но проще в формальном анализе.

Типичные особенности EVM:

storage слоты (дорогие операции записи/чтения);

gas-модель, требующая оптимизаций;

распространены Reentrancy, unchecked calls, неправильная работа с modifier/visibility.

WASM-базированные

Rust (Solana, NEAR, Substrate/Polkadot) – компилируется в WASM; предлагает безопасность памяти и мощный типинг, но вводит свои нюансы: сериализация данных, управление памятью, account model отличается (например, Solana – account-centric).

AssemblyScript / TypeScript-похожие – в некоторых цепях используется для разработки смарт-контрактов, но реже в крупных DeFi.

Особенности WASM-сред:

Производительность выше, но контрактная модель и account handling – иные;

Возможны ошибки сериализации/десериализации, управление аллокациями.

2.3. Структура типичного контракта (строительные блоки)

State (storage) – persistентное состояние (балансы, параметры).

Constructor – начальная инициализация при деплое.

Functions – методы, изменяющие state (транзакции) или читающие его (view/pure).

Modifiers – переиспользуемые проверки доступа/условий.

Events – логи для off-chain индексации.

Fallback / receive – функции для принятия эфира или некорректных вызовов.

Конец ознакомительного фрагмента.

Текст предоставлен ООО «Литрес».

Прочитайте эту книгу целиком, купив полную легальную версию на Литрес.

Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.

Вы ознакомились с фрагментом книги.
Приобретайте полный текст книги у нашего партнера:
На страницу:
2 из 2