Что такое смарт-контракт и как его применяют в жизни

Недостатки

На начало 2018 г. сама технология смарт-контрактов пока не готова к завоеванию рынка. Это доказал обсуждаемый провал Децентрализованной автономной организации (DAO): тогда плохо сформулированный алгоритм позволил ловкому пользователю популярной блокчейн-платформы Ethereum похитить миллионы долларов в цифровом эквиваленте. Смарт-контракты должны стать куда более надежным решением, чтобы достичь того уровня безопасности, который необходим для широкого применения в финансовой сфере.

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

Если же говорить о приватных (контролируемых) блокчейнах, то они по умолчанию позволяют предоставить два вида доступа: только для чтения (read-only) и чтение/запись (read/write). Кроме того, можно выдавать разрешения для майнинга, получения и выпуска активов. Однако реальные приложения, которые используются, например, на фондовых рынках, требуют более гибких и детализированных схем для управления доступом. Открытость данных по всем совершенным транзакциям, зарегистрированным в общедоступном реестре, вряд ли понравится участникам рынка. В идеальном варианте предприятия могли бы подключать с помощью блокчейн-платформы данные о своих пользователях и группах, созданных на LDAP. И это существенная проблема, для которой на 2017 г. пока не найдено решения.

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

Что не могут решать смарт-контракты

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

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

4.1. Как далёкие от технологий стороны могут обсуждать, составлять и корректировать смарт-контракты?

Главное препятствие на пути широкого внедрения смарт-контрактов: сторонам придётся полагаться на доверенных технических экспертов, которые будут реализовывать соглашения в коде или подтверждать точность кода, написанного третьей стороной. Если вам пришла в голову аналогия с наймом юриста, чтобы тот объяснил юридические термины в обычном текстовом контракте, то она некорректна. Люди без юридического образования способны понять и простые, короткие соглашения, и многочисленные положения более длинных соглашений, особенно тех, которые определяют условия ведения бизнеса. Но если вы не умеете программировать, то вообще не разберётесь даже в самом примитивном смарт-контракте. Поэтому значимость эксперта, способного объяснить, что «говорится» в коде, гораздо выше.

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

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

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

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

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

Наконец, по мере того как законность или действие смарт-контрактов всё чаще будет признаваться юридически, судам может потребоваться система назначаемых экспертов, которые станут помогать разбираться в компьютерном коде. Сегодня стороны прибегают к помощи своих экспертов, когда в центре дискуссии оказываются технические проблемы. Хотя у федеральных судов и судов штатов есть право назначать собственных экспертов, они редко им пользуются . Данный подход может потребовать изменений, если увеличится количество стандартных разбирательств вокруг интерпретации кода смарт-контрактов.

Практическое применение умных контрактов

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

Выборы

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

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

Менеджмент

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

Логистика и снабжение

Разработчик протокола Bitcoin Core Джефф Гарзик говорит:

«UPS может исполнять контракты, в которых будет сказано: “Если мы получим оплату за доставку товара, то его производитель, который в цепочке поставок находится на много звеньев выше, немедленно начнет создавать новый такой товар, поскольку этот уже доставлен по назначению”».

Снабжение слишком часто страдает из-за бюрократии, когда разные формы должны пройти утверждение в многочисленных инстанциях. Из-за этого мошенники получают возможность заработать, а компании несут убытки. Блокчейн позволяет избежать этих проблем, так как каждый участник цепочки поставок получает доступ к безопасной электронной системе, которая контролирует выполнение работ и платежи.

Так, банк Barclays Corporate Bank использует умные контракты для того, чтобы регистрировать переход права собственности и автоматически перечислять платежи в другие кредитно-финансовые учреждения.

Автомобили

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

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

Другие сферы

Другие индустрии, такие как эквайринг, кредитование и бухгалтерский учет, тоже будут использовать умные контракты — например, для оценки рисков и аудита в режиме реального времени. Юристы смогут перейти от составления традиционных контрактов к созданию типовых образцов умных контрактов. А на сайте Blockchain Technologies умные контракты превратились в электронно-бумажный гибрид: они подтверждаются блокчейном и получают материальное воплощение в виде бумажной копии.

1.1. Как работают смарт-контракты

Термин «смарт-контракт» описывает компьютерный код, который автоматически исполняет всё соглашение или его части. Код хранится на платформе, построенной на основе блокчейна. Как мы увидим ниже, код бывает единственным объявлением о соглашении между сторонами либо дополняет традиционный текстовый контракт и исполняет лишь определённые положения, такие как перевод денег стороной А стороне Б. Сам код реплицируется на несколько узлов блокчейна, а значит, пользуется преимуществами блокчейна: это безопасность, сохранность и неизменяемость. Реплицирование также означает, что по мере добавления в блокчейн каждого нового блока код, по сути, может исполниться. Если стороны инициировали транзакцию и тем самым показали, что условия соблюдены, это станет триггером, и код выполнит какие-то действия. Если же транзакция не инициирована, то и код ничего не делает. Большинство смарт-контрактов написаны на одном из языков программирования, созданных именно для этих целей (например, Solidity).

Необходимо, чтобы входные параметры и этапы выполнения смарт-контракта были конкретными и объективными. Иными словами, «если произойдёт Х — тогда сделать Y». Следовательно, смарт-контракты выполняют простейшие задачи, например автоматически переводят криптовалюту с кошелька одной стороны на кошелёк другой, если соблюдены нужные условия. По мере распространения блокчейна и увеличения средств, вкладываемых в токены или отправляемых в рамках блокчейна (on-chain), смарт-контракты будут усложняться и получать возможность обрабатывать сложные транзакции. Многие разработчики уже создают более сложные смарт-контракты, объединяя в них несколько этапов транзакций. Тем не менее нам придётся ждать ещё много лет, пока код сможет определять субъективные юридические критерии, такие как «соответствуют ли действия стороны критериям коммерчески оправданных усилий (commercially reasonable efforts)» или «стоит ли выполнить пункт о возмещении и выплатить компенсацию».

Прежде чем скомпилированный смарт-контракт будет исполнен, требуется оплатить транзакционную комиссию за добавление контракта в блокчейн. Например, в блокчейне Ethereum смарт-контракты исполняются в виртуальной машине Ethereum Virtual Machine (EVM), а комиссия в криптовалюте ether (эфир) называется газом (gas, хотя более корректный перевод — «топливо») . Чем сложнее смарт-контракт, тем больше газа нужно заплатить. То есть газ — это своеобразный шлюз, защищающий EVM от исполнения слишком сложных или многочисленных смарт-контрактов .

Пока что смарт-контракты лучше всего подходят для автоматического исполнения транзакций двух типов:

  • оплата, инициируемая определёнными событиями,
  • наложение финансовых санкций при невыполнении объективных условий.

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

Например, смарт-контракты могут избавить вас от так называемых кассовых разрывов (procure-to-pay gap). Как только товар прибыл на склад и зарегистрирован, смарт-контракт способен мгновенно отправить запросы на подтверждения. Получив их, он сразу же переведёт средства от покупателя продавцу. При этом продавцы получат оплату быстрее, им не придётся напоминать клиентам о необходимости заплатить, а покупатели сэкономят на банковских операциях. Всё это может снизить требования к оборотному капиталу и упростить финансовые операции для обеих сторон. Что касается обязательности исполнения, то смарт-контракт можно запрограммировать таким образом, чтобы он закрывал доступ к подключённым через интернет активам (например, к контенту), пока не получена оплата.

Проблемы безопасности смарт-контрактов

Речь пойдёт о проблемах, с которыми в итоге сталкиваются разработчики смарт-контрактов, а не о безопасности самой платформы (хотя немного и о ней). Условно разделим эти проблемы на следующие типы:

  1. проблемы в коде смарт-контракта;
  2. проблемы в процессе разработки;
  3. проблемы в языке;
  4. проблемы в концепции.

1. Проблемы в коде смарт-контракта

Под проблемами в коде смарт-контракта здесь я подразумеваю такие проблемы, которые решаются редактированием .sol-файла. Это, в частности:

  • Известные уязвимые конструкции (например, ).Пример из жизни: re-entrancy, или, шире, нарушение паттерна Checks-Effects-Interactions — даже широко известные (и ранее проэксплуатированные) уязвимости продолжают встречаться в новых контрактах.
  • Авторские уязвимые конструкции (в частности, ошибки в логике кода).Пример из жизни: MultiSig-кошелёк, который на самом деле не MultiSig. Для того чтобы подписать транзакцию и перевести средства, необходимо количество подписей владельцев кошелька, равное . При этом для того чтобы поменять (например, на единицу, чтобы дальше самому подписывать транзакции), достаточно подписи только одного из владельцев:
  • Неудачная архитектура.Пример из жизни: попытка имплементировать в рамках одного контракта и токен, и кошелёк, и хранилище ключей. Контракт получается чрезмерно усложнённым, код сложно поддерживать, аудировать, модифицировать. В итоге страдает и безопасность.
  • Низкое качество кода.Пример из жизни: контракты с разными отступами, произвольными переходами на новую строку и пробелами. Код трудно читать, а значит, снова страдает безопасность. При том, что для Solidity уже есть линтеры (Solium, Solhit).

Проблемы в коде непосредственно приводят к атакам и потере средств. Хорошая новость в том, что проблемы в коде можно выявить в процессе аудита и устранить

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

2. Проблемы в процессе разработки

Проблемы в коде обусловлены в первую очередь неправильно выстроенным процессом разработки. Казалось бы, разработка ПО — дело давно изученное, с устоявшимися best practices. Тем не менее, молодость области смарт-контрактов, непропорционально большие деньги и хайп приводят к тому, что люди по тем или иным причинам пренебрегают стандартными процедурами, что часто приводит к серьёзным проблемам. Из самого типичного стоит упомянуть:

3. Проблемы в языке

Добавляет дёгтя сам язык Solidity. Изначально он был создан скорее для того, чтобы его могли быстро освоить большое количество людей, чем для того, чтобы на нём было удобно писать безопасные смарт-контракты. Вот лишь некоторые его особенности, которые мешают безопасности:

  • Множественное наследование, , / — всё это запускает код не из текущего исходника, а значит, снижает читаемость и, как следствие, безопасность кода.
  • Checks-Effects-Interactions pattern — если конструкции, нарушающие CEI, небезопасны, то почему не запретить их (и многие другие) просто на уровне языка?
  • Вызывая другой контракт, можно внезапно попасть в его fallback-функцию с неожиданными последствиями.

Понятно, что проект Ethereum развивается, и невозможно всё учесть заранее. Но в итоге разработчики вынуждены помнить о многих особенностях и пользоваться , чтобы сделать свой смарт-контракт безопасным.

4. Проблемы в концепции

Однако самая серьёзная проблема ещё глубже — в том, что многие недостаточно хорошо понимают, для чего смарт-контракты нужны, что они могут, чего не могут и как работают. В худшем случае это приводит к тому, что смарт-контракт:

  1. Не смарт:

    • Плохо написан — делает то, что написано, но не то, что задумано.
    • Сильно завязан на backend и/или frontend — а этот код уже не смарт-контракт, он выполняется обычным образом, и его выполнение полностью контролирует администратор сервера.
  2. Не контракт:

    • Не фиксирует обязательства сторон — например, ICO продаёт свои токены за ETH, но токены по сути являются фантиками, т.к. не налагают на того, кто их выпустил, никаких ограничений или обязательств.
    • Допускает односторонние изменения — и получается, что одна из сторон может менять контракт уже после его подписания.Пример из жизни: владелец контракта может произвольно менять капитализацию, курс и продолжительность продажи токена:
  3. Не нужен:

    • Смарт-контракт добавили не потому, что он был технически необходим, а в попытках придумать, что бы сделать на смарт-контрактах, и оседлать волну хайпа;
    • Пытались придумать, как к существующему продукту прикрутить смарт-контракты.

Смарт-контракт как угроза безопасности блокчейн-стартапа

Что же в итоге? Хотели модно, безопасно, блокчейн, а получаем дорогой неподдерживаемый код, который угрожает безопасности и вообще не нужен. Хотели, чтобы наши смарт-контракты выполнялись «в точности так, как запрограммированы, без какой-либо возможности простоя, цензуры, мошенничества или вмешательства третьей стороны», и в итоге они действительно выполняются так, как написаны — только написаны они с уязвимостью. И нам остаётся лишь помахать ручкой своим средствам. Ну или сделать хардфорк (тем самым вообще-то дискредитировав саму исходную идею), если из-за уязвимости потеряли деньги в том числе создатели Ethereum.

Turing-полнота

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

Система, которая работает на этом языке, получает автономию и независимость. Большинство существующих платформ, которые создают интеллектуальные контракты, являются неполными. Ethereum – одна из самых совершенных систем. Основатель платформы утверждает, что он не фокусируется на этой полноте, а скорее на сохранении статуса в блокчейне. Но для этого часто необходима такая особенность системы, как Turing-полнота, поскольку она обеспечивает наиболее приемлемую совместимость, а также простоту использования.

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

Языки программирования для Эфириума все-таки не абсолютно полны: вычислительный объем в Эфириуме ограничен комиссиями. Это необходимо, чтобы предотвратить бесконечное выполнение некачественного кода.

Плюсы и минусы смарт-контрактов

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

  1. Упростить время проведения различных контрактов;
  2. Постепенно сотрет географические, а за ними и бюрократические границы;
  3. Каждый человек сможет стать ее участником;
  4. Экономия на издержках, ведь не надо будет содержать посредников и платить им комиссии;
  5. Увеличение потенциальных возможностей для заработка.

Например, проводя ico криптовалют, контракт предусматривает сумму за токен, порядок перечисления денег, ответные условия со стороны админов проекта. Система обработает несколько заявок одновременно, что удобно и выгодно.

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

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

Говоря о появлении смарт-контрактов, и даже с учетом самого факта первого использования их авторами эфира, стоит учитывать, что сам блокчейн не появился бы, если не Сатоши Satoshi Накимото. О человеке-легенде, элементарной частице биткоина и о бренде — уже готов новый материал на моем блоге. Читайте и комментируйте.

И пусть бумажные и smart будут полностью реализованнными.

Профессиональный инвестор с опытом работы 5 лет с разными финансовыми инструментами, ведет свой блог и консультирует вкладчиков. Собственные эффективные методики и информационное сопровождение инвестиций.

Что такое смарт-контракт простыми словами

Смарт-контракт (от английского smart contract – умный контракт) — это самоисполняемый компьютерный код, который записывается в блокчейн — децентрализованную цепочку блоков, хранящуюся на множестве компьютеров.

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

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

Благодаря смарт-контрактам, решается проблема доверия между контрагентами и исключается участие посредников в сделках.

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

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

Умные договоры полностью безопасны для обеих сторон. Участники не рискуют быть обманутыми, неоднозначно трактуя условия документа.

Всё потому, что не привлекаются третьи лица – юристы, что также снижает материальные расходы. Плюс контакт основывается на криптографии. Что же касается  выполнений сделки, то это также происходит с минимальными затратами без посредников.

Участники, заключив умный контракт, могут обмениваться активами без третьих лиц. Требуемое они получают автоматически.

Виды

В настоящее время существует три вида умных контрактов:

  1. Полностью автоматизированные. В коде данного контракта прописаны все стадии исполнения, что автоматизирует весь процесс.
  2. Частично автоматизированные. Данный вид контракта по большей части представлен в классическом бумажном варианте, и только отдельные его элементы автоматизированы в системе блокчейн. Чаще всего автоматизируется расчётная часть контракта.
  3. Дублированные. К данному виду относятся полностью автоматизированные контракты, также юридически оформленные в классическом бумажном варианте.

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

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

Как работают смарт-контракты

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

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

Для эффективной работы смарт-контракта необходимы точно прописанные условия исполнения контракта, в противном случае будет невозможна автоматизация процесса.

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

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