Что такое smart-контракты?
Основы
В 1990‑х Ник Сабо ввёл понятие умных контрактов. Он определял их как инструменты, объединяющие протоколы и пользовательские интерфейсы для защиты компьютерных сетей. Сабо предлагал применять smart-контракты в различных областях, связанных с заключением соглашений, включая кредитные системы, обработку платежей и управление правами на контент.
В сфере криптовалют смарт-контракты можно рассматривать как программы или приложения, выполняющиеся в блокчейне. Как правило, они функционируют как цифровые соглашения, обеспечиваемые заранее заданными правилами в виде компьютерного кода. Все узлы сети реплицируют и выполняют этот код.
Смарт-контракты в блокчейне позволяют создавать бездоверительные протоколы, давая возможность двум сторонам взаимодействовать через реестр без необходимости доверять друг другу. Они обеспечивают уверенность, что соглашение не выполнится, если условия не будут соблюдены. Кроме того, умные контракты устраняют необходимость в посредниках, что значительно снижает операционные расходы.
Хотя Биткойн поддерживает смарт-контракты уже давно, по-настоящему популярными их сделал основатель Ethereum Виталик Бутерин. Однако разные блокчейны могут иметь собственные методы реализации.
В этой статье внимание сосредоточено на смарт-контрактах, работающих в EVM, ключевом компоненте блокчейна Ethereum.
Как работают смарт-контракты?
Когда выполняются определённые условия, умный контракт выполняет заданное действие, работая как детерминированная программа. Система умных контрактов следует конструкции «если… то…». Однако, несмотря на название, умные контракты не являются ни умными, ни юридическими контрактами; это кусок кода, выполняющийся в распределённой системе, такой как блокчейн.
Смарт-контракты в сети Ethereum управляют операциями блокчейна, когда взаимодействуют пользователи. Адреса, которые не являются смарт-контрактами, — это внешние аккаунты, управляемые пользователями (EOA), в то время как smart-контракты контролируются компьютерным кодом.
Умные контракты Ethereum состоят из двух компонентов: кода контракта и двух публичных ключей. Первый ключ генерируется создателем контракта, а второй представляет сам контракт и служит уникальным цифровым идентификатором.
Умные контракты разворачиваются через транзакцию в блокчейне и активируются только при вызове со стороны EOA или других умных контрактов. Тем не менее, первичный запуск всегда инициируется EOA.
Ключевые особенности смарт-контрактов
Smart-контракты в сети Ethereum обладают следующими ключевыми характеристиками:
- Они распределены и реплицируются во всех узлах сети, в отличие от решений на основе централизованных серверов.
- Они детерминированы и выполняют только предусмотренные действия при соблюдении условий. Результат будет одинаковым вне зависимости от того, кто их выполняет.
- Они автономны и могут автоматизировать задачи как самовыполняющаяся программа. Однако если они не будут вызваны, то останутся неактивными.
- Они неизменяемы, то есть не могут быть модифицированы после развёртывания, но могут быть «удалены», если в коде была предусмотрена соответствующая функция. Это обеспечивает защиту от подделок.
- Они настраиваемы и могут быть закодированы различными способами перед развёртыванием, что делает их полезными для создания разных типов децентрализованных приложений (DApps). Это возможно благодаря тому, что Ethereum — тьюринг‑полный блокчейн.
- Они бездоверительные, позволяя двум или более сторонам взаимодействовать без предварительного знания или доверия. Технология блокчейн обеспечивает точность данных.
- Они прозрачны, поскольку базируются на публичном блокчейне, а их исходный код виден всем.
Можно ли изменить или удалить смарт-контракт?
Изменить или полностью удалить смарт-контракт Ethereum после развёртывания невозможно. Функция SELFDESTRUCT — единственный способ «удалить» контракт, но она должна быть включена в код при создании. Если такой функции нет, контракт неизменяем и не может быть удалён. Разработчики могут создавать обновляемые смарт-контракты, которые предлагают больше гибкости, разделяя код на более мелкие контракты. Некоторые из этих контрактов можно удалить и заменить, тогда как другие остаются неизменяемыми. Процесс создания обновляемых контрактов может варьироваться по сложности.
Сценарии применения и преимущества смарт-контрактов
Умные контракты предлагают различные преимущества и сценарии применения благодаря своей программируемости. Их можно проектировать по-разному, чтобы предоставлять разные сервисы и решения. Будучи децентрализованными и самовыполняющимися программами, smart-контракты повышают прозрачность и сокращают операционные расходы, одновременно повышая эффективность и уменьшая бюрократические издержки.
Особенно полезны smart-контракты в сценариях передачи или обмена средствами между несколькими сторонами. Их можно использовать для создания токенизированных активов, систем голосования, криптокошельков, децентрализованных бирж, игр и мобильных приложений. Кроме того, их можно внедрять вместе с другими блокчейн‑решениями в таких областях, как здравоохранение, благотворительность, цепочки поставок, управление и децентрализованные финансы (DeFi). В итоге умные контракты высоко настраиваемы и могут быть разработаны для решения множества задач.
Токены ERC‑20
Блокчейн Ethereum является основой для многих токенов, стандартизированных по спецификации ERC‑20. Такие токены часто называются ERC‑20 токенами и составляют значительную долю современного рынка криптовалют.
Множество стартапов и блокчейн‑компаний использовали smart-контракты для создания собственных токенов в сети Ethereum, при этом типичным методом распространения были Initial Coin Offering (ICO). Включив смарт-контракты в процесс ICO, компании могут эффективно и безопасно обрабатывать обмен средств и распределение токенов без необходимости доверия между сторонами.
Ограничения
Децентрализованный и программируемый характер смарт-контрактов даёт много преимуществ: повышенная прозрачность и эффективность, снижение затрат и широкий спектр применений. Тем не менее существуют и ограничения, о которых стоит помнить.
Одно из ограничений — риск уязвимостей и багов из‑за того, что код пишут люди. Чтобы минимизировать эти риски, рекомендуется привлекать опытных программистов для написания и развёртывания умных контрактов, особенно когда задействованы конфиденциальные данные или большие суммы денег.
Кроме того, централизованные системы могут предложить схожую функциональность. Главное отличие в том, что smart-контракты работают в распределённой P2P‑сети, что делает их неизменяемыми или по крайней мере сложно изменяемыми. Хотя неизменяемость полезна в некоторых ситуациях, в других она может быть вредна. Например, когда The DAO был взломан в 2016 году из‑за ошибок в коде умного контракта, были украдены миллионы ETH. Неизменяемость контракта помешала разработчикам исправить уязвимость, что привело к хард-форку и созданию второй цепочки Ethereum.
Ещё одно ограничение — неопределённый правовой статус. Контракты не всегда соответствуют действующим юридическим рамкам. Например, некоторые требуют надлежащей идентификации и проверки возраста обеих сторон, что может затронуть псевдонимность и отсутствие посредников в блокчейн‑технологии. Эта проблема принудительной правовой силы особенно актуальна для безграничных и распределённых сетей.
Критический взгляд на smart-контракты
Идея о том, что умные контракты смогут заменить и автоматизировать коммерческие и бюрократические системы, популярна среди энтузиастов блокчейна. Однако в реальности это может быть невыполнимо для многих задач из‑за ограничений.
Хотя smart-контракты — захватывающая технология, их распределённый, детерминированный, прозрачный и неизменяемый характер может сделать их менее подходящими в ряде ситуаций. В результате некоторые организации могут посчитать более эффективным использование традиционных альтернатив.
Одна из основных претензий к smart-контрактам — их неуниверсальность. Централизованные серверы — проще/дешевле в обслуживании и предлагают большую эффективность по скорости и межсетевому взаимодействию.
Заключение
Smart-контракты преобразили индустрию блокчейн и оказали значительное влияние на криптовалюты. Хотя пользователи обычно не взаимодействуют с контрактами напрямую, они способны обеспечить работу множества приложений — от финансовых услуг до управления цепочками поставок.
Умные контракты и блокчейн обладают потенциалом изменить общество, но остаётся открытым вопрос, смогут ли эти технологии преодолеть препятствия для широкого внедрения.