Установка и использование платформы
Пример смарт-контракта с использованием REST API¶
Описание и листинг программы¶
В разделе рассматривается пример создания и запуска простого смарт-контракта. Контракт выполняет инкремент переданного на вход числа при каждом вызове.
Листинг программы:
Пошаговое описание работы:
Программа ожидает получить структуру данных в формате json с полем
params
;считывает значение поля
а
;возвращает результат в виде значения поля «{a}+1» в формате json.
Пример входящих параметров:
"params":[
{
"key":"a",
"type":"integer",
"value":1
}
]
Авторизация смарт-контракта c REST API¶
Для работы с REST API ноды смарт-контракту необходима авторизация. Чтобы смарт-контракт корректно работал с методами API, выполните следующие действия:
В переменных окружения смарт-контракта должны быть определены следующие параметры:
NODE_API
– URL-адрес к REST API ноды ;API_TOKEN
– токен авторизации для смарт-контракта;COMMAND
– команды для создания и вызова смарт-контракта;TX
– транзакция, необходимая Docker-контракту для работы (103 - 107).
Разработчик Docker-контракта присваивает значение переменной
API_TOKEN
заголовку запросаX-Contract-Api-Token
. В переменнуюAPI_TOKEN
нода прописывает JWT-токен авторизации при создании и выполнении контракта.Код контракта должен передавать полученный токен в заголовке запроса (
X-Contract-Api-Token
) при каждом обращении к API ноды.
Создание смарт-контракта¶
1. Поместите файл contract.py с кодом в директорию, которая будет содержать файлы вашего смарт-контракта.
2. Создайте shell-скрипт run.sh, который будет запускать код смарт-контракта в контейнере:
#!/bin/sh
python contract.py
Поместите файл run.sh в корневую директорию вашего смарт-контракта.
3. Создайте сценарный файл Dockerfile для сборки и управления запуском смарт-контракта.
При разработке на Python основой образа вашего смарт-контракта может служить официальный образ Python на основе Alpine Linux python:alpine3.8
.
Пример Dockerfile:
FROM python:alpine3.8
ADD contract.py /
ADD run.sh /
RUN chmod +x run.sh
CMD exec /bin/sh -c "trap : TERM INT; (while true; do sleep 1000; done) & wait"
Поместите Dockerfile в корневую директорию вашего смарт-контракта.
4. Свяжитесь со службой технической поддержки Waves Enterprise для помещения вашего смарт-контракта в открытый репозиторий, если вы работаете в Waves Enterprise Mainnet.
Если вы работаете в частной сети, соберите смарт-контракт самостоятельно и разместите его в собственном репозитории.