Настройка Docker

Установка и исполнение docker-контрактов задается секцией docker-engine в конфигурационном файле ноды.

  # Docker smart contracts settings
  docker-engine {
  # Docker smart contracts enabled flag
  enable = no
  # Basic auth credentials for docker host
   docker-auth {
     username = "some user"
     password = "some password"
   }
  # Optional connection string to docker host
  # docker-host = "unix:///var/run/docker.sock"
  # Optional string to node REST API if we use remote docker host
  # node-rest-api = "https://clinton.wavesenterprise.com/node-0"
  # Run for integration tests
  integration-tests-mode-enable = no
  # Execution settings
  execution-limits {
    # gRPC contract startup timeout
    startup-timeout = 10s
    # Contract execution timeout
    timeout = 60s
    # Memory limit in Megabytes
    memory = 512
    # Memory swap value in Megabytes (see https://docs.docker.com/config/containers/resource_constraints/)
    memory-swap = 0
  }
  # Reuse once created container on subsequent executions
  reuse-containers = yes
  # Remove container with contract after specified duration passed
  remove-container-after = 10m
  # Allows net access for all contracts
  allow-net-access = no
  # Remote registries auth information
  remote-registries = [
   {
     domain = "myregistry.com:5000"
     username = "user"
     password = "password"
   }
   ]
  # Check registry auth on node startup
  check-registry-auth-on-startup = yes
  #Authorization timeout for the contract
  contract-auth-expires-in = 1m
  # Contract execution messages cache settings
  contract-execution-messages-cache {
    # Time to expire for messages in cache
    expire-after = 60m
    # Max number of messages in buffer. When the limit is reached, the node processes all messages in batch
    max-buffer-size = 10
    # Max time for buffer. When time is out, the node processes all messages in batch
    max-buffer-time = 100ms
  }
  remove-container-on-fail = yes
  grpc-server {
    # host = "192.168.65.2"
    port = 6865
    akka-http-settings {
      akka {
        http.server.idle-timeout = infinite
        http.client.idle-timeout = infinite
        http.host-connection-pool.idle-timeout = infinite
        http.host-connection-pool.client.idle-timeout = infinite
      }
    }
  }
}

Параметры:

  • enable - включение обработки транзакций для docker-контрактов (yes/no).

  • docker-auth - секция базовой авторизации по логину и паролю.

  • docker-host - URL-адрес Docker-хоста.

  • node-rest-api - URL-адрес к REST API ноды при использовании Docker-хоста.

  • integration-tests-mode-enable - режим тестирования Docker-контрактов (yes/no).

  • execution-limits - секция ограничений на выполнение Docker-контрактов:

    • startup-timeout - таймаут на создание контейнера gRPC контракта и его регистрацию в ноде (в секундах);

    • timeout - таймаут на выполнение контракта (в секундах);

    • memory - ограничение по памяти для контейнера контракта (в Мб);

    • memory-swap - файл подкачки памяти для контракта (в Мб).

  • reuse-containers - повторное использование существующего Docker-контракта.

  • remove-container-after - обязательность удаления контейнера после исполнения (yes/no).

  • allow-net-access - доступ к сети (yes/no).

  • remote-registries - адреса удаленных репозиториев и настройки авторизации к ним.

  • check-registry-auth-on-startup - обязательность проверки авторизации к репозиториям при запуске ноды (yes/no).

  • contract-auth-expires-in - таймаут токена авторизации для Docker-контракта.

  • contract-execution-messages-cache - секция настройки кеш-памяти Docker-контракта. При достижении лимита буфера нода обработает все сообщения в пакетном режиме:

    • expire-after - время жизни сообщений в кеш-памяти в минутах;

    • max-buffer-size - максимальное количество сообщений в буфере;

    • max-buffer-time - максимальное время для буфера в миллисекундах.

  • remove-container-on-fail – удалять ли контейнер, если при его старте произошла ошибка. Этот параметр может быть полезен при поиске ошибок при работе с контрактами (yes/no).

gRPC сервер

Секция настроек gRPC сервера для работы смарт контрактов с gRPC API.

  • host – сетевой адрес ноды (опциональный параметр).

  • port – порт gRPC сервера.

  • akka-http-settings – секция настроек Akka HTTP фреймворка, используемого для gRPC сервера.