Ранее мы разбирали, как создать Certificado – приложение, которое использует блокчейн Waves как базу данных. Теперь пишем для Certificado смарт-контракт, который расширяет функционал приложения.
Что такое смарт-контракт?
Смарт-контракт – это программный код, который хранится и исполняется внутри блокчейна. С помощью смарт-контракта создают прозрачные и автоматизированные приложения.
Смарт-контракт – ключевой инструмент создания децентрализованных приложений, потому что в дополнение к хранению данных в блокчейне позволяет зафиксировать алгоритм и логику.
Применение смарт-контракта
В туториале по созданию web-приложения, который хранит данные в блокчейне, мы разобрали пример Certificado – сервиса, который позволяет сохранить сертификат в децентрализованном реестре и провалидировать его любому пользователю Интернета.
Для разработки первой версии приложения нам не нужно было разбираться в смарт-контрактах. Для реализации функционала достаточно было обратиться к блокчейну с помощью Data-транзакций и GET-запросов к API.
С помощью смарт-контракта добавим в Certificado новый функционал – запрос о выдаче сертификата. Организатору – владельцу аккаунта мероприятия – не придется вручную создавать сертификаты всем участникам. Теперь пользователи смогут отправлять запрос на сертификат. После этого организатор сможет подтверждать этот запрос и закреплять подлинность сертификата в блокчейне.
Зафиксируем логику в коде смарт-контракта, который включает две функции: request и approve certificate. В туториале не будем углубляться в синтаксис написания контракта на языке Ride.
Рассмотрим шаги, из которых состоит создание смарт-контракта. Изучим, как подключить вызов функций смарт-контракта к веб-приложению на JavaScript. Проще говоря, как сделать смарт-контракт доступным любому пользователю, особенно тем, кто не знаком с устройством блокчейна.
Как создают смарт-контракты?
Создание кода
Код на Ride пишут где угодно, даже в блокноте. Для удобства разработчиков Waves создали два инструмента написания кода: плагин для Visual Studio Code и среда разработки Online IDE. Для небольших контрактов и экспериментов с платформой больше подойдет IDE. Чтобы начать, перейдите на страницу.
Продолжаем разрабатывать логику приложения Certificado. В качестве примера рассмотрим простой смарт-контракт: certificado.ride.
По комментариям, отмеченным зеленым цветом, можно понять его логику. Функционал простой:
Функция request(name) может быть вызвана кем угодно и добавляет в state аккаунта запись о том, что диплом для человека с именем name был запрошен
Функция approve(name, id) может быть запрошена только владельцем dApp, что проверяется в строке 22, и добавляет в state id сертификата для человека name, подтверждая его подлинность
Как видно из примера, код на Ride интуитивно понятен и прост к написанию. Кроме того, язык обладает интересными особенностями – например, в нем отсутствуют циклы и рекурсии, что делает его неполным по Тьюрингу. Ознакомьтесь с синтаксисом и основами Ride в туториале Ride introduction Инала Карданова.
Загрузка контракта в блокчейн
После написания корректного контракта в IDE загрузите его в блокчейн. Авторизуйтесь через аккаунт Waves и нажмите кнопку «Deploy».