Определение умных контрактов
В юридическом смысле сущность смарт-контракта состоит в выполнении договора между двумя или более сторонами согласно заранее прописанным условиям. Смарт-контракт работает без непосредственного участия этих сторон путем автоматического проведения финансовых транзакций или других действий, которые могут быть выполнены с помощью программных средств. Результатом работы смарт-контракта может быть не только перевод денег (токенов) от одной стороны контракта другой, но и действия с какими-либо связанными с ним приложениями – например, регистрация (или отказ в регистрации) документа в цифровом реестре или предоставление доступа к объекту виртуального или реального мира, от покупки контента до аренды автомобиля.
Для соответствия требованиям действующего законодательства контракт и документы, свидетельствующие о его исполнении, могут быть продублированы на бумаге. Но в этом случае теряются практически все преимущества умных контрактов, кроме надежного хранения в блокчейне информации о договоре и его исполнении. Поэтому в ряде стран разрабатываются законопроекты о признании юридической силы смарт-контрактов и записей в распределенном реестре (блокчейне).
Легализация выполнения договоров без участия людей открывает широкие перспективы автоматизации многих процессов (от производственных и экономических до повседневных бытовых), но и порождает ряд проблем. В первую очередь это проблемы безопасности – при повсеместном распространении смарт-контрактов технический сбой в программном обеспечении или хакерская атака могут нарушить работу общественных организаций и даже создать угрозу для жизни людей. Поэтому как регулирование, так и внедрение децентрализованных приложений в реальную жизнь будут происходить медленно – возможно, это займет десятки лет.
Основная идея жизнеспособного умного контракта заключается в автоматизации многих простых операций, в том числе договоров и сделок между людьми или организациями, с участием двух и более сторон. Для этого операции необходимо представить в виде алгоритма, а объекты смарт-контракта должны быть доступны для прямого воздействия контракта, то есть исполняться без вмешательства человека. Каждый шаг алгоритма логически описывается и привязывается к выполнению определенных действий.
С технической точки зрения смарт-контракт представляет собой подписанный с помощью криптографических средств или других электронных удостоверений договор между произвольным количеством участников, реализованный в виде программного кода и полностью выполняемый в виртуальной среде распределенной вычислительной сети.
По сравнению с традиционными договорами смарт-контракт имеет следующие преимущества:
1. Автоматическое выполнение договора без вмешательства сторон или третьих лиц при наступлении записанных в алгоритме событий.
2. Условия контракта не могут быть изменены какой-либо из сторон и всегда исполняются в соответствии с заложенным алгоритмом.
3. Условия контракта общедоступны и могут быть верифицированы в любой момент.
4. Для заключения и выполнения смарт-контракта не требуются свидетели или посредники.
5. Автоматизация выполнения договоров и контроля процессов при массовом применении позволяет экономить значительные человеческие и материальные ресурсы.
Смарт-контракт состоит из хранящегося в блокчейне кода и оракулов – исходной информации из внешних источников.
Необходимое отступление
Теоретически любые транзакции в блокчейнах криптовалют, в том числе в Bitcoin, можно считать простыми смарт-контрактами. Они отправляются не конкретному получателю, а в децентрализованную сеть. Получить транзакцию и воспользоваться отправленными в ней биткоинами может любой, кто выполнит заложенные в транзакции условия.
Самый распространенный сейчас тип транзакций (P2PKH – pay to public key hash) основан на предъявлении получателем закрытого ключа, соответствующего отправленному в транзакции в виде хеша открытому ключу. Проверка выполняется любым узлом сети и представляет собой несколько типовых криптографических преобразований (на основе закрытого ключа по соответствующему алгоритму создается открытый ключ, который хешируется и сравнивается с хешем в транзакции). Есть и другие типы транзакций:
● P2IP, то есть платеж на IP-адрес (существовал в первых версиях протокола, но был удален из-за очевидной ненадежности). При использовании этого метода биткоины мог получить узел, прослушивающий сеть с определенного в транзакции IP-адреса.
● P2SH, или платеж по хешу скрипта (pay to script hash), – наиболее гибкий тип транзакций, формально и фактически представляющий собой платежный смарт-контракт. Для получения биткоинов по этому методу могут быть заданы уже более сложные условия: требование нескольких ключей (мультиподпись), пароля, наступление определенного момента времени (timelock) или другие условия, предусмотренные протоколом.
Язык скриптов Bitcoin достаточно примитивен и предназначен только для проведения платежей с набором условий, в то время как на специализированных платформах, где применяются полноценные языки программирования, смарт-контракты могут производить гораздо более сложные действия и даже обеспечивать выполнение многошаговых или интерактивных алгоритмов.
С появлением работающих блокчейн-платформ, осуществляющих работу смарт-контрактов для большого количества пользователей, и с накоплением опыта их эксплуатации концепция умного контракта была расширена и преобразована в концепцию децентрализованного приложения (decentralized application, DApp). Это более широкое понятие, которое включает не только сам код контракта и входящие данные, но и интерфейсы для его взаимодействия с пользователями, другими приложениями и информационными системами.
То есть децентрализованное приложение – это не только некий код, по мере наступления заложенных алгоритмом условий выполняющий определенные действия. Правильно разработанное децентрализованное приложение, как и любое другое, – это законченный программный продукт, сопровождающий пользователей на всем протяжении бизнес-процесса, от максимально удобного получения вводных данных до предоставления развернутой отчетности по результатам работы.
По мере интеграции в современные информационные системы децентрализованные приложения должны стать серверными узлами для локальных приложений и пользователей, обращающихся к ним через толстые клиенты или веб-интерфейсы.