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

Завершено

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

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

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

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

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

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

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

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

Случаи использования

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

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

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

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

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

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

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

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

Интерфейсы IDE

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

Модули

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

Платформы

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