Установка и использование платформы
Общая настройка платформы: настройка исполнения смарт-контрактов¶
Для работы со смарт-контрактами нода использует два типа соединения, для каждого из которых необходимо обеспечить защиту канала с помощью TLS:
Соединение с docker-хостом – удалённой машиной, на которой запускаются смарт-контракты. На этой машине используется docker-библиотека, которая обращается на сокет по своим протоколам. Для неё можно включить опцию безопасного соединения, которое в этой документации обозначается как «docker-TLS». Соединение docker-TLS настраивается в секции
node.docker-engine.docker-tls
конфигурационного файла ноды; эта настройка описана ниже в этом разделе;Соединение, которое открывает запущенный смарт-контракт в сторону ноды по протоколу gRPC.
Примечание
Допустимо использовать только методы из перечня функций gRPC интерфейса блокчейн-платформы Конфидент, доступных только смарт-контрактам.
Это подключение по API, так как точка подключения смарт-контракта к ноде такая же, как и для любого другого пользователя или приложения. Этот API настраивается в секции
node.api.grpc
, в частности для него необходимо обеспечить защиту канала TLS. Пример такой настройки дан в разделе Примеры конфигурационных файлов ноды.
Если вы планируете разработку и исполнение смарт-контрактов в вашем блокчейне, настройте параметры их исполнения в секции docker-engine
конфигурационного файла ноды:
docker-engine {
enable = yes
integration-tests-mode-enable = no
# docker-host = "unix:///var/run/docker.sock"
execution-limits {
startup-timeout = 10s
timeout = 10s
memory = 512
memory-swap = 0
}
reuse-containers = yes
remove-container-after = 10m
allow-net-access = yes
remote-registries = [
{
domain = "myregistry.com:5000"
username = "user"
password = "password"
}
]
check-registry-auth-on-startup = no
# default-registry-domain = "registry.yourdomain.com"
contract-execution-messages-cache {
expire-after = 60m
max-buffer-size = 10
max-buffer-time = 100ms
utx-cleanup-interval = 1m
contract-error-quorum = 2
}
contract-auth-expires-in = 1m
grpc-server {
# host = "192.168.97.3"
port = 6865
}
remove-container-on-fail = yes
docker-tls {
tls-verify = yes
cert-path = "/node/certificates"
}
contracts-parallelism = 8
}
enable
– включение обработки транзакций для Docker-контрактов.integration-tests-mode-enable
– режим тестирования Docker-контрактов. При включении этой опции смарт-контракты исполняются локально в контейнере.docker-host
– адрес демона docker (опционально). Если это поле закомментировано, адрес демона для исполнения смарт-контрактов будет взят из системного окружения.startup-timeout
– время, отводимое на создание контейнера контракта и его регистрацию в ноде (в секундах).timeout
– время, отводимое на выполнение контракта (в секундах).memory
– ограничение по памяти для контейнера контракта (в мегабайтах).memory-swap
– выделяемый объем виртуальной памяти для контейнера контракта (в мегабайтах).reuse-containers
– использование одного контейнера для нескольких контрактов, использующих один и тот же Docker-образ. Включение опции -yes
, отключение -no
.remove-container-after
– промежуток времени бездействия контейнера, по прошествии которого он будет удален.allow-net-access
– разрешение доступа к сети.remote-registries
– адреса Docker-репозиториев и настройки авторизации к ним.check-registry-auth-on-startup
– проверка авторизации для Docker-репозиториев при запуске ноды. Включение опции -yes
, отключение -no
.default-registry-domain
– адрес Docker-репозитория по умолчанию (опционально). Этот параметр используется, если в имени образа контракта не указан репозиторий.contract-execution-messages-cache
– секция настроек кэша со статусами исполнения транзакций по docker контрактам;expire-after
– время хранения статуса смарт-контракта.max-buffer-size
иmax-buffer-time
– настройки объема и времени хранения кэша статусов.utx-cleanup-interval
– интервал, по прошествии которого невалидные транзакции (со статусом Error) удаляются из UTX-пула ноды, которая не является майнером. Значение по умолчанию –1m
.contract-error-quorum
– минимальное количество полученных от разных нод-майнеров сообщений, в которых статус транзакции по вызову смарт-контракта содержит бизнес-ошибку (Error); когда указанное в параметре количество сообщений получено, транзакция удаляется из UTX-пула ноды, которая не является майнером. Значение по умолчанию –2
.contract-auth-expires-in
– время жизни токена авторизации, используемого смарт-контрактами для вызовов к ноде.grpc-server
– секция настроек gRPC сервера для работы Docker-контрактов с gRPC API.host
– сетевой адрес ноды (опционально).port
– порт gRPC-сервера. Укажите порт прослушивания gRPC-запросов, использующийся платформой.remove-container-on-fail
– удаление контейнера, если при его старте произошла ошибка. Включение опции –yes
, отключение –no
.
tls-verify
– флаг включения или отключения канала связи по протоколу TLS; если установлено значениеyes
, то выполняется поиск сертификатов в директории, указанной в параметреcerts-path
; если указано значениеno
, то поиск сертификатов не выполняется.Важно
При использовании алгоритмов ГОСТ криптографии взаимодействие должно осуществляться по каналу связи по протоколу TLS, то есть параметр
tls-verify
должен иметь значениеyes
.certs-path
– путь до директории с сертификатами для TLS; по умолчанию параметр имеет значение{node.directory}/certificates
.contracts-parallelism
– параметр определяет количество параллельно выполняемых транзакций всех контейнеризированных смарт-контрактов. По умолчанию параметр имеет значение8
.