Что такое смарт контракт?
Впервые определение смарт-контракт было упомянуто в 1997 году в статье программиста Ника Сабо, который занимался его разработкой с 1994 года. Принято считать, что труды Ника Сабо вдохновили Сатоши Накомото на создание блокчейна и первой криптовалюты, где впервые и был реализован smart-контракт. Но Биткоин, как и большинство других криптовалют, не наделены полнотой по Тьюрингу, поэтому их умные контракты — простые конструкции и используются для мультиподписи или транзакций с отложенным исполнением.
Более практичное применение смарт контракты обрели только в 2014 году, благодаря разработке Виталика Бутерина. Разработчик взял идею создание блокчейна за основу, но дополнил ее новыми функциональными особенностями. В проект Эфириум был внедрен совершенно новый протокол, который сделал возможным применение смарт-контрактов не только для подтверждения валидности транзакций, но и для совершения правомерных автоматизированных сделок с любыми заданными условиями.
Умные контракты Эфириум (англ. Smart contract — умный контракт) — самоисполняемый компьютерный алгоритм, записывающийся в цепочку blockchain. Он позволяет исключить необходимость сотрудничества с посредниками для урегулирования прав сторон. Смарт-контракты платформы Эфириум содержат условия сделки и обязательства сторон. Если стороны их выполняют, то автоматически получают желаемое.
Как работает смарт контракт?
Ethereum smart contract имеют полноту по Тьюрингу, позволяют включать в них любые условия сделки, создавать децентрализованные приложения и обмениваться активами.
Блокчейн Ethereum представляет собой классический блокчейн, с подключенной виртуальной машиной EVM (Ethereum Virtual Machine), позволяющей отслеживать состояния на основе указанного первоисточника и выполнять код смарт-контракта на любом компьютере майнера.
Участникам сделки следует оцифровать актив и внести его в систему, после чего она самостоятельно отслеживает состояния условий и производит обмен, если условия соблюдены.
Смарт-контракт содержит:
- математически подтвержденное описание условий договора, при достижении которых контракт будет исполнен;
- электронные подписи или мультиподписи всех участников;
- доступ к продуктам договора, которые обязательно должны находится в системе.
Смарт-контракт самостоятельно:
- отслеживает выполнение заложенных в него условий;
- принимает решение о правомерности сделки;
- завершает сделку и обменивает активы между участниками договора;
- накладывает санкции на участников, если условия были нарушены.
Каждый контракт составляется и подписывается участниками. Ему присваивается индивидуальный номер, Gas Limit — количество вычислений, которые необходимы для выполнения. Стороны оплачивают работу майнеров Газом и информация о новом контракте транслируется в сеть. Майнеры проверяют состояние условий контракта, счетов пользователей и если все условия соблюдены, то исполняют вторую часть условий, обновляя счета участников сделки, выписывают receipt (чеки) на каждую транзакцию по контракту и включают сделку в новый блок цепи, подбором подписи.
Наиболее простой пример работы смарт контракта — обмен криптовалюты на токены. Создается контракт с условием: если мне будет перечислено 10 ETH, то с моего счета будет списано 100 токенов. Отправляя транзакцию на контракт, пользователь делает запрос, майнеры проверяют состояние счетов отправителя и получателя, и если баланс позволяет, то производят обмен.
Для более сложного примера можно рассмотреть использование умного контракта в аренде недвижимости. Владелец и арендатор не доверяют друг другу и боятся быть обманутыми. Для избежания эксцессов им требуется составить и нотариально заверить бумажный договор, прописав все условия соглашения или пойти более легким путем и составить смарт-контракт на аренду. Для них создают хранилище — умный контракт, куда арендатор ложит деньги, а владелец – код от двери жилья. Арендатору выдается код, владельцу – арендная плата. В программный код контракта вносятся условия, что контракт считается завершенным:
- когда арендатор заселяется и вводит код, при этом второй стороне перечисляется предоплата, а после окончания срока аренды вся сумма;
- если код оказался подделкой, то сделка аннулируется и внесенные средства возвращаются;
- если арендатор передумал, то в пользу владельца вписывается энная сумма за неустойку, а остаток перечисляется арендатору.
По итогу обе стороны полностью защищены, при этом они сумели договориться без посредников благодаря защите сделки умным контрактом.
Виды смарт контрактов
На данный момент смарт-контракты находятся только на стадии внедрения, технологии применения еще тестируются и дорабатываются. Фактически умные контракты сейчас представлены в виде договора, где условия соглашения частично записаны на бумаге и цифровом коде. По степени автоматизации smart-контракты разделяют на:
- автоматизированные;
- подкрепленные бумажным соглашением;
- зафиксированные преимущественно на бумаге, с частичной автоматизацией на цифровом коде.
В зависимости от инициации их можно разделить на коллективные и частные. К первой группе относятся контракты, которые могут совершаться неоднократно любым пользователем. Например, продажа токенов в рамках проведения ICO. Вторая группа — контракты заключенные между конкретными пользователями.
Ключевые преимущества смарт контрактов
Преимущество | Особенности |
---|---|
Совершение защищенных сделок без привлечения регулирующей стороны. | Если две стороны сделки не доверяют друг другу, то для безопасности следует обратиться к третьему лицу, выступающим гарантом соблюдения условий. Смарт-контракты исключают эту необходимость, поскольку правомерность сделки будет проверяется математическими вычислениями и обмен будет совершен только при достижении прописанных условий. |
Безопасность и конфиденциальность. | Смарт контракт — это зашифрованная сделка, внесенная в блокчейн. Ее невозможно подделать или изменить, при этом стороны могут и условия сделки остаются конфиденциальными. |
Минимизированные издержки за проведение сделок. | За заключение бумажного договора потребуется оплатить услуги юриста, а в случае несоблюдения условий потребуется доказывать правоту в судебном порядке, оплачивать судебные издержки и налоги. В случае с смарт-контрактом, потребуется оплатить только стоимость вычислений, а если условия договора будут нарушены, то сделка не состоится. При этом может быть предусмотрено автоматическое списание неустойки с виновника, в пользу второй стороны. |
Быстрота заключение сделки. | Составление бумажного договора требует времени на поиск регулирующей стороны. Следует также учитывать очереди в суды на случай нарушения условий договора. Для создания смарт-контракта потребуется только время для записи условий сделки, а сама сделка будет произведена автоматически, сразу же после их соблюдения. |
Сферы использования смарт контрактов
Технически смарт контракты Ethereum могут быть задействованы в любых целях, начиная от простого обмена активами и заканчивая сложными контрактами с множеством сопутствующих условий.
Смарт контракт для ICO
ICO — классический пример использования смарт-контрактов. Для привлечения инвестиций в проект компанией инициируется разработка собственного токена. Для этого можно воспользоваться шаблонным контрактом ERC20 или создать собственный. Следующим шагом прописывается смарт-контракт для обмена токенов на криптовалюту. В нем закладывается условия продажи токенов на ICO:
- дата начала и завершения проведения ICO;
- стоимость токена;
- ограничения на покупки.
Инвесторы высылают деньги на контракт и средства автоматически обменивают на токены по условиям заложенным в договор.
Таким контрактом гарантируется честность проведения ICO, поскольку условия контракта не могут быть изменены. Контракт работает только в прописанные в нем сроки. Аналогичным принципом создается pre-sale и другие распродажи.
Именно на основе смарт контракта, платформы Эфириум были запущены криптовалюты Nem, Cardano, Tron, EOS, Dao. Последняя, к слову, согласована с создателями Эфириума и призвана сделать проведение ICO более легким и эффективным.
Смарт контракты в реальной жизни
В реальной жизни смарт контракты повсеместно. Экспертами выделяется несколько перспективных сфер для внедрения умных контрактов, где они смогут существенно упростить механизм совершения сделок:
- банковская система;
- логистика;
- страхование;
- операции с недвижимостью;
- регистрация прав собственности.
На основе смарт-контракта может быть зафиксированы любые договора. Например, коллективная покупка, где прописываются условия, что каждый покупатель перечисляет энную сумму на счет продавца, в обмен на это продавец отправляет товар или передает право собственности на объект.
В области страхования можно создавать контракт с условием, что в случае, если в указанный период времени произойдут определенные изменения, связанные с природными катаклизмами, то автоматически будет перечислена установленная сумма.
Не так давно, на основе смарт-контракта был осуществлен договор купли-продажи недвижимости в Киеве, при этом продавец на момент сделки находился в Нью-Йорке. Для этого был создан контракт, где в обмен на перевод денег, покупателю передавались права на собственность квартиры.
Еще смарт-контракт позволяет в рамках определенной общественной организации проводить голосование.
Как использовать смарт контракты?
Для того, чтобы использовать функционал платформы Ethereum, следует обзавестись аккаунтом. В сети Эфириума существует два типа аккаунтов:
- аккаунт пользователя (externally owned account) — кошелек, с приватным и публичным ключом, владелец может хранить коины и совершать транзакции подписывая их приватным ключом;
- аккаунт контракта (contract account)— смарт-контракт, баланс которого управляется на основе заложенного в него кода, а исходящие транзакции генерируются в ответ на входящие.
Все действия в сети основывают на транзакциях между аккаунтами. Транзакции на кошелек пользователя — перевод средств, транзакция на аккаунт контракта — механизм приводящий условия контракта в действие, в нее дополнительно включаются параметры Газа и вызова контракта.
С чего начать?
Зарегистрировать официальный кошелек Эфириум можно официальном сайте www.ethereum.org.
Для этого нужно:
- Перейти на сайт.
- Перейти в раздел “Ethereum Wallet” и выбрать подходящую к используемой операционной системе версию кошелька. Дождаться загрузки и установить программное обеспечение.
- Следовать указаниям инструкции и зарегистрировать кошелек.
- Сохранить приватный ключ и электронную подпись в надежном месте.
Во вкладке “Create transaction” пользователь получает возможность создать смарт-контракт на основе транзакции. Помимо стандартных полей с адресом отправителя, получателя и суммы в нем также содержится поле для записи кода смарт-контракта.
Транзакция без указания получателя — создание аккаунта транзакции, алгоритм которого будет приводиться в действие согласно прописанным условиям.
Транзакция Эфириума состоит из:
- Адреса получателя;
- Суммы перевода, при создании контракта — первоначальный баланс аккаунта;
- Gas Limit Gas Price — стоимость выполнения кода и цена за выполнения одной транзакции по нему;
- Байт-код контракта — условия сделки, прописанные в цифровом коде, при достижении которых договор будет приведен в исполнение;
- Данные для проверки подписи.
Использовать готовые шаблоны
Разработчики Эфириума сделали все возможное для легкого запуска контрактов. Достаточно выбрать подходящий шаблон и подтвердить сделку, после чего встроенный алгоритм автоматически переведет ее на используемый в сети язык программирования Solidity.
Создать свой смарт контракт на Эфире
Другой путь — пишем смарт контракт самостоятельно. Для этого необходимо хорошо разбираться в языках программирования. Написание кода можно поручить профессиональному программисту или воспользоваться компиляторами.
Написанный код рекомендуется изначально запустить в тестовую сеть, для выявления уязвимостей и багов.
Ресурс etherscan.io в открытом доступе содержит не один смарт контракт, пример которого можно взять за основу. Изучив логику и принципы работы, написать смарт контракт будет значительно легче. В 2017 году также была разработана платформа Etherparty, которая призвана упростить создание умных контрактов, но пока находится в стадии разработки.
Преимущества и недостатки смарт контрактов
Преимущества | Недостатки |
---|---|
исключение из сделки посредников | самостоятельное создание контракта требует знания основ программирования |
лишены бюрократической возни | при допущении ошибки в байт-коде он может нарушать интересы сторон и быть уязвимыми для хакеров |
минимальные расходы на совершения сделок | информация, входящая в блок, не подлежит изменениям, соответственно условия сделки невозможно пересмотреть |
возможность вписывать любые условия и применять в любой сфере | для оплаты контракта используется криптовалюта, обиход которой в большинстве стран еще не регулируется законодательством, а значит в случае ошибки в коде потерпевшей стороне не стоит ожидать компенсации даже через суд |
правомерность сделки проверяется независимыми узлами связи | недостаточная распространенность пока не позволяет в полной мере пользоваться всеми преимуществами смарт-контрактов |
код контракта не может быть подделан или изменен | |
создать контракт может любой желающий |
Выводы
Ethereum часто сравнивают с нефтью, поскольку он является продуктом, благодаря которому можно решать реальные прикладные задачи и приводить в действие сложные алгоритмы. Функциональные особенности смарт-контрактов позволяют задействовать их в большинстве сфер жизнедеятельности, но их полноценное внедрение пока еще тестируется и дорабатывается.