Смарт-контракт — это алгоритм, созданный для контроля выполнения участниками транзакций взаимных обязательств. Когда люди покупают квартиру, они передают деньги продавцу в присутствии нотариуса — чтобы не «кинули». В этом случае роль «смарт-контракта», который проверит документы и, убедившись, что всё в порядке, передаст деньги покупателя продавцу, выполняет юрист. Проблема в том, что посреднические услуги юриста стоят довольно дорого. А чем больше документов и участвующих сторон — тем дороже и дольше. Настоящему смарт-контракту, алгоритму то бишь, кушать не нужно, поэтому пользование программой обойдется дешевле.
Итак, смарт-контракт — это алгоритм, призванный обеспечить соблюдение прав участников сделки. Если условия не соблюдаются, сделка не финализируется. Мысль о том, что пользователей, вступающих в ситуацию появления взаимных обязательств можно контролировать с помощью криптографического алгоритма, впервые пришла в голову американскому криптографу и специалисту в области права Нику Сабо в середине 1990-х.
Ник решил применить методы договорного права в протоколах электронной коммерции в Интернете. Сабо утверждал, что минимальный размер микроплатежей определяется не столько технологией, сколько умственными усилиями, необходимыми для оценки продукта и принятия решения, или, «умственной стоимостью транзакций».
Первой блокчейн-сетью со смарт-контрактами стала Ethereum. В 2013 году создатель Ethereum Виталик Бутерин понял, что блокчейн может использоваться не только как сервис для обмена криптовалютой: эта технология дает возможность хранить и обрабатывать информацию. Главное, чтобы условия осуществления сделок были описаны как математические алгоритмы, ведь математика не врет. «Код — это закон», — сказал Лоуренс Лессиг — американский профессор права, успешно боровшийся за изменение законодательства в области авторского права в интернете.
И поскольку код — это закон, пользователи могут быть уверены в том, что программа будет относиться к участникам сделки одинаково — соблюдать все условия контракта без возможности принять чью-либо сторону. Но у этого принципа есть и недостаток, как доказал случай с проектом The DAO, когда злоумышленник нашел в коде смарт-контракта лазейку и перевел на свои счета 3,6 млн ETH, формально не нарушив контракт.
Cовременные платформы, поддерживающие смарт-контракты, можно разделить на две группы: тьюринг-полные и тьюринг-неполные. «Полнота по Тьюрингу» означает, что язык программирования предоставляет возможности решать любые вычисляемые задачи, тогда как тьюринг-неполные смарт-контракты предлагают только более простые инструменты с использованием операторов if-then-else, например, мультиподпись или транзакции с отложенным исполнением.
Сравнение четырех блокчейн-платформ, поддерживающих смарт-контракты
Ethereum |
Hyperledger Fabric |
R3 Corda |
Waves |
|
Тип |
• Универсальная блокчейн-платформа | • Модульная блокчейн-платформа | • Специализированная платформа с распределенным реестром для финансовой индустрии | • Универсальная блокчейн-платформа |
Доступность |
• Открытый, публичный или частный | • Закрытый, частный | • Закрытый, частный | • Открытый, публичный или частный |
Консенсус |
• Майнинг на основе proof-of-work) • Уровень реестра |
• Несколько вариантов на выбор клиента • Транзакционный уровень |
• Особый (узлы «нотариального типа») • Транзакционный уровень |
• Proof-of-stake • Уровень реестра |
Смарт-контракты |
• Язык программирования Solidity | • Языки программирования Go, Java | • Языки программирования Kotlin, Java | • Тьюринг-неполные (облегченные) смарт-контракты • Язык программирования Ride |
Валюта |
• Ethereum • Токены на основе Ethereum |
• Нет | • Нет | • Waves • Токены на основе Waves |
Принцип работы смарт-контрактов Бутерин описывает следующим образом. К примеру вы хотите купить что-то в Сети. Вы совершаете транзакцию, во время которой смарт-контракт следит за выполнением условий. Если условия не выполнены — транзакция не подтверждается, если выполнены — мерчант получает средства, а покупатель товар. И никаких нотариусов!