Если вы хоть немного погружены в блокчейн и криптовалюты, то наверняка не раз слышали слово смарт-контракт.
Первое, что приходит на ум, — это что-то из области юриспруденции, какие-то умные договоры, за исполнением которых следит алгоритм и которые, вероятно, нельзя нарушать. Второе — это будущее сделок, скоро все они будут заключаться только через смарт-контракты. Разберёмся, так ли это в действительности.
Смарт-контракт (smart contract — умный контракт) — компьютерный алгоритм, предназначенный для заключения договора, контроля выполнения условий и самоисполнения обязательств. Он записывается в виде кода и выполняется только в блокчейне — распределённом реестре, которым управляет децентрализованная сеть из равноправных узлов.
Как вы уже поняли, никакого отношения к сделкам в реальном мире это не имеет. То есть с помощью смарт-контракта не получится купить машину или сделать безопасной поставку вагона пшеницы. А вот обменять один токен на другой без посредников или вложить его под проценты в криптобанк — пожалуйста.
В реальном мире договоры заключаются на бумаге или в электронном виде с использованием ЭЦП. Их соблюдение контролирует государство, а споры решаются в судах. В Сети есть упоминания, как кто-то продал квартиру или какой-то другой актив с помощью смарт-контракта, но всё это лукавство.
Как и в офлайне, где договоры регулируются конкретными странами и юрисдикциями, смарт-контракт действует только в той сети, в которой он написан и развёрнут.
Понять суть проще на примере торгового автомата. Один пользователь засовывает в автомат марки, другой — ракушки. В автомате установлен курс обмена — 2 марки за 1 ракушку. Оба пользователя доверяют автомату, потому что его исходный код открыт, каждый может с ним ознакомиться.
Идею и термин «умный контракт» придумал Ник Сабо в 1994 году. Он описал его как криптографический протокол, который самостоятельно проводит сделки и контролирует их выполнение на основе алгоритмов.
Умные контракты стали широко применяться на практике, когда появился Эфириум. В 2013 году будущий основатель проекта Виталик Бутерин понял, что протокол Биткоина не пригоден для смарт-контрактов, поскольку проектировался не для этого. Тогда он решил создать с нуля свой протокол, более подходящий для такой задачи.
Смарт-контракты позволяют заключать сделки и проводить операции по заранее установленным правилам без посредников. Благодаря блокчейну такие операции прозрачны, прослеживаемы и необратимы.
Приложения на основе смарт-контрактов, размещённых в блокчейн-сетях, называются dApps (decentralized apps — децентрализованные приложения). Смарт-контракты с блокчейном обеспечивают исполнение обязательств по криптовалютным продуктам, делают их надёжными, предоставляют защищённую платёжную систему для криптовалют. Оракулы играют ключевую роль в создании смарт-контрактов нового поколения, которые предоставляют финтех-продукты и монетарные инструменты, например, те, что основаны на рыночных данных.
Разберём создание смарт-контракта на примере Ethereum, самой распространённой блокчейн-платформы для них.
Сначала нужно проработать логику смарт-контракта и написать исходный код. Для этого используется язык программирования Solidity, который в чём-то похож на JavaScript. Код можно писать в любой среде разработки, но наибольшее распространение получила веб-среда Remix Online IDE. В ней можно разработать смарт-контракт, скомпилировать и разместить его в сети.
После компиляции нужно развернуть код в сети. Для этого делается специальная транзакция, а размещающий адрес платит комиссию сети, в нашем случае в ETH. Чем сложнее смарт-контракт, тем выше комиссия.
Если всё прошло успешно, то транзакция на размещение будет проведена в одном из блоков и смарт-контракт окажется в блокчейне под уникальным адресом. После этого он сможет принимать разные команды.
Стоимость смарт-контракта напрямую зависит от его сложности. Например, создание простого смарт-контракта по выпуску токенов стоит 1000–5000 USD, а разработка сложных dApps начинается от 10 000 USD и может стоить более 100 000 USD.
Мы в Polygant занимаемся блокчейн-разработкой 10 лет и за это время создали почти сотню умных контрактов разной сложности. Напишите нам в Telegram, чтобы обсудить, насколько сложный нужен вашему криптопроекту.
Аудит безопасности — независимое изучение кода смарт-контракта, который проекты обычно размещают в GitHub. Аудит необходим DeFi-проектам и dApps, чьи многочисленные пользователи проводят транзакции на миллионы долларов. Как правило, аудит включает 4 этапа:
Аудит — стандартная процедура, которую заказывают масштабные криптопроекты. Многие инвесторы учитывают аудит, когда изучают новые DeFi-проекты. Причём они больше доверяют отчётам, составленным авторитетными аудиторскими фирмами.
Через смарт-контракты переводятся или блокируются огромные суммы криптовалют, что часто привлекает хакеров. Из-за малейших ошибок в коде проект может лишиться миллионов пользовательских средств. Например, взлом The DAO привёл к краже ETH на 50 миллионов долларов и расколу Эфириума.
Команде проекта нужна независимая проверка безопасности контракта, ведь его транзакции необратимы. Особенности технологии блокчейн не позволят вернуть криптовалюту и решить проблемы после взлома, поэтому любые уязвимости надо выявлять заранее.
Аудит помогает достичь разных целей, например:
Нахождение и закрытие уязвимостей
Аудиторы проверяют смарт-контракты на уязвимости. Некоторые обнаруживаются сразу, но большинство выявляется только с помощью специальных техник и инструментов. Например, при рыночной манипуляции уязвимый смарт-контракт может быть атакован с использованием мгновенных займов. Чтобы обнаружить такие слабые места, аудиторы пробуют взломать смарт-контракт. Вот самые распространённые атаки, которые они имитируют:
Устранение ошибок безопасности
Аудиторы также исследуют сеть с размещёнными в ней смарт-контрактами и программный интерфейс приложения (API), который используется для взаимодействия с dApp. Если окажется, что проект не выдерживает DDoS-атаку или его API скомпрометирован, то пользователям небезопасно подключать криптокошельки к потенциально вредоносным блокчейн-приложениям.
Оптимизация затрат газа
Помимо проверки безопасности блокчейна, аудиторы изучают, насколько оптимизированы и эффективны смарт-контракты. Профессиональные блокчейн-разработчики стараются оптимизировать их производительность. Но если над проектом трудились неопытные разработчики, то они могли пренебречь оптимизацией.
Некоторым смарт-контрактам для исполнения необходимо отправить серию транзакций. Учитывая, что в блокчейн-сетях вроде Эфириума плата за газ высока, эффективные смарт-контракты позволили бы экономить на комиссиях за транзакции. А если они неэффективны, то дорогой газ может даже нарушить их работу.
Аудит безопасности — распространённая услуга. И хотя методы аудиторских фирм могут различаться, типичный аудит проводится так:
Отчёт предоставляется после проведения аудита. Во многих отчётах проблемам присваивается степень строгости: критическая, серьёзная, существенная, тривиальная. Также указывается статус проблемы, который сменяется, если команда проекта успела устранить её до составления финального отчёта.
Кроме общих выводов отчёт содержит анализ ошибок в коде, примеры неэффективного кода, рекомендации по исправлению. Когда команда проекта получит финальный отчёт, она может опубликовать его целиком или только результаты на сайте и в сообществе.
Стоимость зависит от количества смарт-контрактов, аудит которых заказывает криптопроект. В среднем аудит стоит 2000–3000 USD. Аудит сложного проекта может стоить более 10 000 USD. На стоимость услуги ещё может влиять репутация аудиторской фирмы.
У Polygant высокая репутация, но мы не считаем это поводом завышать стоимость аудита. Отправьте нам запрос, чтобы узнать, во сколько обойдётся аудит в вашем случае.