Введение
Впервые смарт-контракты были описаны в 1990-х годах Ником Сабо. Он определил смарт-контракт как инструмент, который формализует и защищает компьютерные сети, комбинируя протоколы с пользовательским интерфейсом.
Сабо рассматривал использование смарт-контрактов в различных областях, связанных, например, с договорными соглашениями, кредитными системами, обработкой платежей и правообладанием на контент.
Смарт-контракты позволяют создавать протоколы, не требующие доверия. Это означает, что обе стороны могут взаимодействовать через блокчейн без необходимости доверять друг другу. Участники процесса могут быть уверены, что несоблюдение условий контракта приведет к его аннулированию. Также использование смарт-контрактов избавляет от необходимости в посредниках, значительно снижая расходы на операции.
В центре внимания этой статьи смарт-контракты, работающие на виртуальной машине Ethereum (EVM), которая является важнейшей частью блокчейна Ethereum.
Как это работает?
Простыми словами, смарт-контракт работает как детерминированная программа. Она выполняет определённые действия, когда соблюдены заданные условия. Исходя из этого, система смарт-контрактов часто использует выражения «если… то…». Несмотря на общепринятую терминологию, смарт-контракты не являются ни контрактами в юридическом смысле, ни «умными» (от англ. smart). Это всего лишь фрагменты кода, запущенного в распределенной системе (в блокчейне).
В сети Ethereum смарт-контракты отвечают за выполнение операций между пользователями (адресами). Любой адрес, не являющийся смарт-контрактом, называется личным аккаунтом (EOA). Таким образом, смарт-контракты управляются программным кодом, а личные аккаунты — пользователями.
По существу, смарт-контракты Ethereum состоят из кода контракта (содержащего условия выполнения) и двух публичных ключей. Первый публичный ключ предоставлен создателем контракта. Другой ключ представляет собой сам контракт, являясь цифровым идентификатором, уникальным для каждого смарт-контракта.
Выполнение любого смарт-контракта происходит при блокчейн-транзакции, и они могут быть активированы при инициации личным аккаунтом (или другим смарт-контрактом). Однако запускается последовательность смарт-контрактов всегда с личного аккаунта (т. е. пользователем).
Основные характеристики
Смарт-контракт Ethereum зачастую имеет следующие характеристики:
Распределенность. Смарт-контракты воспроизведены и распределены по всем узлам сети Ethereum. Это одно из их главных отличий от других решений, использующих централизованные сервера.
Детерминированность. Смарт-контракты выполняют действия, для которых они предназначены, при достижении установленных требований. Кроме того, результат всегда будет одинаковым вне зависимости от того, кто выполняет требования.
Автономность. Смарт-контракты могут автоматизировать все виды задач, работая как самоисполняемая программа. В большинстве случаев, если смарт-контракт не инициирован, он находится «в бездействии» и не выполняет каких-либо действий.
Неизменность. Нельзя изменить процесс работы смарт-контракта после его разработки и активации. Изменения могут быть внесены только в том случае, если разработчики до этого реализовали определенную функцию. Таким образом, мы можем сказать, что смарт-контракты могут обеспечить защиту от взлома кода посредством доказательства подлинности.
Отсутствие доверия. Две или более стороны могут взаимодействовать с помощью смарт-контрактов, без знания друг друга и доверия. Помимо этого, технология блокчейн обеспечивает точность и учет всех данных.
Прозрачность. Поскольку смарт-контракты основаны на публичном блокчейне, их исходный код доступен для каждого.
Могу ли я изменить или удалить смарт-контракт?
Пользователи Ethereum не могут добавлять новые функции после активации смарт-контракта. Однако если разработчик включает в код контракта функцию под названием SELFDESTRUCT, то в дальнейшем он сможет удалить его и заменить на новый. Без этой функции удалить смарт-контракт будет невозможно.
Примечательно, что так называемые обновляемые смарт-контракты обеспечивают разработчикам доступ к изменениям кода, тем самым предоставляя большую гибкость по сравнению с неизменными контрактами. Существует множество способов создания подобного вида смарт-контрактов различной степени сложности.
Рассмотрим это на простом примере. Давайте представим, что смарт-контракт делится на несколько небольших контрактов. Некоторые из них нельзя изменить, в то время как другие можно удалить, благодаря вышеупомянутой функции. Это означает, что часть кода (определенное количество смарт-контрактов) можно удалить и заменить на другой, в то время как остальные функциональные возможности остаются неизменными.
Преимущества и варианты использования
Поскольку это программируемый код, смарт-контракты легко настраиваются и могут разрабатываться разными способами, предлагая различные виды услуг и решений.
В качестве децентрализованной и самореализующейся программы, смарт-контракты могут обеспечить повышенную прозрачность и снизить эксплуатационные расходы. В зависимости от направления деятельности, они также могут повысить эффективность и снизить бюрократические издержки.
Преимущества смарт-контрактов в особенности проявляются, когда речь идет о денежных переводах или обмене средств между двумя или более сторонами.
ERC-20
Недостатки
Смарт-контракты состоят из компьютерного кода, написанного людьми. Это является причиной многочисленных рисков, поскольку код подвержен уязвимостям и ошибкам. В идеале, разработка должна осуществляться опытными программистами, особенно когда речь идет о конфиденциальной информации или больших суммах денег.
Считается, что централизованные системы могут обеспечить большинство решений и функций смарт-контрактов. Основное отличие заключается в том, что смарт-контракты исполняются в распределенной одноранговой P2P-сети, а не на централизованном сервере. И поскольку смарт-контракты основаны на блокчейне, обычно они неизменны или слишком сложны для внесения изменений.
Иногда неизменность бывает полезна, но не всегда. Например, в 2016 году хакеры взломали децентрализованную автономную организацию The DAO и украли миллионы долларов эфира (ETH), воспользовавшись уязвимостями в коде смарт-контракта.
Следует заметить, что проблема возникла не из-за работы блокчейна Ethereum. Вместо этого, ошибка была вызвана неправильной реализацией смарт-контракта.
Еще один недостаток смарт-контрактов связан с их неопределенным юридическим статусом. И это связано не только с тем, что в большинстве стран данная технология находится в «серой зоне», но и по причине того, что смарт-контракты не соответствуют их текущей нормативно-правовой базе.
К примеру, основным требованием множества договоров и контрактов является строгая идентификация участников и возраст от 18 лет. Анонимность, обеспечиваемая технологией блокчейн, в сочетании с отсутствием посредников, может выступить помехой для соответствия таким требованиям. Несмотря на то, что существуют потенциальные решения данного вопроса, юридическая составляющая смарт-контрактов является одной из главных проблем, особенно когда речь идет о всемирном масштабе и распределенных сетях.
Критика
Некоторые блокчейн-энтузиасты видят в смарт-контрактах решение, которое может заменить и автоматизировать большую часть существующих коммерческих и бюрократических систем. В то время как это вполне реально сделать, смарт-контракты далеки от того, чтобы их использование в данной сфере стало нормой.
Смарт-контракты безусловно интересная технология. Но распределенный и детерминированный характер, а также прозрачность и частичная неизменность делают ее менее привлекательной для использования в некоторых ситуациях.
По существу, вся критика опирается на то, что смарт-контракты не являются подходящим решением для множества реальных проблем. И по факту, некоторым организациям проще и лучше использовать обычные альтернативные сервера.
По сравнению со смарт-контрактами, централизованные сервера проще и дешевле в обслуживании. Помимо этого, они также могут обеспечить более высокую эффективность с точки зрения скорости работы и взаимодействия с другими сетями (функциональной совместимости).
Резюме
Без сомнений, смарт-контракты оказали большое влияние на мир криптовалют и безусловно произвели революцию в области блокчейн-технологий. Поскольку конечные пользователи могут не взаимодействовать напрямую со смарт-контрактами, возможно в будущем они послужат основой для широкого спектра приложений: от финансовых услуг до управления цепочками поставок.
Совместный потенциал смарт-контрактов и блокчейна может оказать значительное влияние практически на все сферы жизни общества. Но только время покажет, смогут ли эти инновационные технологии преодолеть барьеры на пути к широкомасштабному внедрению.