Что такое смарт-контракт?

Завершено

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

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

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

Смарт-контракты чаще всего используются в сочетании с Ethereum. Платформа Ethereum — это первый в мире программируемый блокчейн. Она позволяет определять смарт-контракты для упрощения передачи цифровых активов, как, например, Ether.

Для написания контрактов используется язык программирования Solidity. Solidity является полным по Тьюрингу языком, а значит, позволяет создавать сложные контракты в формате четко определенного кода.

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

Смарт-контракты имеют следующие важные свойства и преимущества:

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

Варианты использования

Смарт-контракты можно использовать в множестве отраслей и процессов. Давайте рассмотрим несколько вариантов использования.

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

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

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

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

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

Средства для работы со смарт-контрактами

Многие средства помогут вам эффективно создавать смарт-контракты. В следующих разделах перечислены рекомендуемые к изучению средства, в том числе интегрированные среды разработки (IDE), расширения и платформы.

Интегрированные среды разработки

  • Visual Studio Code. Редактор кода, который переопределен и оптимизирован для создания и отладки современных облачных приложений и веб-приложений. В этом модуле мы используем для всех упражнений именно Visual Studio Code.
  • Remix. Браузерный компилятор и интегрированная среда разработки, которые позволяют создавать контракты Ethereum на языке Solidity, а также отлаживать транзакции. Remix дает отличную возможность изучить примеры контрактов. Кроме того, вы можете создать, протестировать и развернуть собственные контракты. Мы не используем Remix в этом модуле, но вы можете самостоятельно изучить его на примерах по контрактам.

Модули

  • Расширение Truffle for VS Code. Это расширение позволяет упростить создание, сборку и развертывание смарт-контрактов в реестрах Ethereum. Оно обеспечивает встроенную интеграцию с Truffle, Ganache и другими инструментами и службами. В этом модуле мы будем использовать это расширение, чтобы создавать и тестировать смарт-контракты.

Платформы

  • Пакет Truffle. Используйте пакет средств Truffle для тестирования контрактов Ethereum перед их развертыванием в общедоступных реестрах для работы с реальными деньгами. Чтобы упростить разработку, ее можно выполнять локально. В этот набор средств входят Truffle, Ganache и Drizzle. В этом модуле мы будем использовать Truffle.
  • OpenZeppelin. Используйте средства OpenZeppelin для создания, развертывания и эксплуатации децентрализованных приложений. OpenZeppelin включает два продукта: библиотеку контрактов и пакет SDK. Мы не используем OpenZeppelin в этом модуле, но вы сможете позднее применить его при создании безопасных приложений блокчейна.