Установка и использование платформы
Общая настройка платформы: настройка исполнения смарт-контрактов¶
Для работы со смарт-контрактами нода использует два типа соединения, для каждого из которых необходимо обеспечить защиту канала с помощью 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.