Одна из самых многообещающих разработок в области блокчейна – концепция "умных контрактов" (смарт-контрактов). Впервые идея была описана криптографом Ником Сабо (Nick Szabo) в 1994 году в документе «Умные контракты», в котором Сабо описывал концепцию как «компьютеризированный протокол транзакций, выполняющий условия контракта». Сегодня расцвет Эфириума способствует упрощению разработки и развертывания этой концепции в открытой среде.

Тем не менее, бурное развитие умных контрактов привело к возникновению ореола путаницы вокруг идеи. Многие компании и представители индустрии по-прежнему пытаются разобраться в том, что же такое смарт-контракты, как они работают и что они могут делать. В статье мы рассмотрим три неверных суждения, которые чаще всего встречаются, когда речь заходит об умных контрактах.

1. Умные контракты – просто код, а не контракты

Распространенная фраза, которую часто цитируют – «умные контракты – вовсе не умные и не являются контрактами, это просто тупой код». В некоторых случаях это утверждение можно считать правдивым, например, когда вы создаете децентрализованное приложение, которое не подразумевает передачу ценностей. Однако в других случаях смарт-контракты имеют гораздо больше характеристик, чем обычные контракты.

Если рассматривать обычные контракты, то их семантика обычно подразумевает наличие двух элементов:

  1. Операционная семантика – операциональная интерпретация контракта. Она описывает рассмотрение конкретных согласованных действий, которые должны быть приняты участниками контракта. Как правило, именно эти условия могут быть запрограммированы в смарт-контракте.

  2. Денотационная семантика – неоперациональная юридическая интерпретация всего контракта, включающая любые связи с другими документами, компетенциями и т.п. Это та интерпретация контракта, которая ему дается с юридической точки зрения. Этот элемент в большинстве случаев не является частью умных контрактов, хотя связи с другими документами могут быть добавлены в код как комментарии.

Почему люди в принципе создают контракты? В большинстве случае – из-за того, что полностью не уверены друг в друге, когда речь заходит об исполнении обязательств, или же для того, чтобы иметь доказательства законной силы сделки. Имея в виду это, а также операционный элемент семантики контракта, можно сказать, что умный контракт – результат соглашения между двумя или более сторонами, «подписанный» ими всеми, что можно рассматривать как составляющую операционной семантики традиционного контракта, хоть и написанного на незнакомом языке.

Урегулирование конфликтов умных контрактов вполне может происходить так же, как и в случае с традиционными контрактами – через суды, переговоры и т. п. Основным отличием процесса будет то, что в большинстве случаев передача ценностей – результат автоматического исполнения контракта, которое уже произошло.

2. Умные контракты могут работать автономно

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

Блокчейн, по сути, работает благодаря транзакциям. Этот принцип также действует и для умных контрактов – они работают по реактивному принципу. Код смарт-контракта начинается исполняться только тогда, когда он активируется транзакцией или сообщением, отправленным напрямую контракту. Это может быть сделано при помощи внешнего аккаунта (которым владеет реальный человек или компания), который посылает транзакцию умному контракту, или при участии другого умного контракта, который посылает сообщение.

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

Имеющиеся данные – это те данные, которые посылаются контракту в транзакции или сообщении, а также данные в хранилище и памяти контракта. В то время, как контракты могут обращаться к другим смарт-контрактам (например, для считывания их баланса), различные эксперты не рекомендуют повторный вход, так как подобное действие можно совершать только в крайнем случае. Помимо этого, умные контракты могут производить только базовые вычисления, такие как сложение, вычитание и деление. Они не способны анализировать большие объемы данных.

Так что, когда речь заходит о разработке процессов, включающих умные контракты, стоит помнить о том, что они реактивны, имеют ограниченные способности в области обработки данных, могут совершать только базовые вычисления, а также имеют ограниченные возможности взаимодействия. Все описанные примеры, по сути, относятся только к умным контрактам Эфириума, что приводит нас к третьему и последнему пункту.

3. Типовой умный контракт

Не существует такого понятия, как типовой умный контракт. Зачастую люди делают ту же ошибку, говоря о "типичном блокчейне", вместо того, чтобы вести речь о конкретной сети (например, Биткоин, Эфириум и т. д.).

Большинство блокчейнов не могут создавать умные контракты, а если и производят их, то только в ограниченной форме или при помощи побочных сетей. Возможности умного контракта могут значительно разниться, в зависимости от блокчейна.

Поэтому, когда речь идет о разработке решений, которым нужны умные контракты, помните, что не существует такой вещи, как "типовой смарт-контракт". Чтобы создать умный контракт, удовлетворяющий вашим требованиям, внимательно и тщательно выбирайте блокчейн.