Установка и использование платформы

Тонкая настройка платформы: настройка групп доступа к конфиденциальным данным

Если вы используйте API-методы privacy для управления конфиденциальными данными, настройте параметры доступа к конфиденциальным данным, для которых предназначена секция privacy конфигурационного файла ноды (пример с использованием БД PostgreSQL и включенным периодическим удалением файлов, не попавших в блокчейн):

privacy {

storage {
  vendor = postgres
  schema = "public"
  migration-dir = "db/migration"
  profile = "slick.jdbc.PostgresProfile$"
  jdbc-config {
    url = "jdbc:postgresql://postgres:5432/node-1"
    driver = "org.postgresql.Driver"
    user = postgres
    password = wenterprise
    connectionPool = HikariCP
    connectionTimeout = 5000
    connectionTestQuery = "SELECT 1"
    queueSize = 10000
  numThreads = 20
}

cleaner {
  enabled: yes
  interval: 10m
  confirmation-blocks: 100
  pending-time: 72h
}
}

Перед его изменением определитесь с базой данных, которую вы планируете использовать для хранения конфиденциальных данных. Блокчейн-платформа Waves Enterprise поддерживает взаимодействие с БД PostgreSQL или Amazon S3.

При использовании СУБД PostgreSQL, потребуется установка JDBC-интерфейса. При использовании Amazon S3, информация должна храниться на сервере Minio.

После установки подходящей для вашего проекта СУБД, перейдите к настройке блока секции privacy. Укажите используемую вами СУБД в параметре vendor:

  • postgres - для PostgreSQL;

  • s3 - для Amazon S3.

Если вы не используете API-методы privacy, укажите none и закомментируйте или удалите остальные параметры.

vendor = postgres

При использовании СУБД PostgreSQL, блок storage секции privacy выглядит так:

storage {
vendor = postgres
schema = "public"
migration-dir = "db/migration"
profile = "slick.jdbc.PostgresProfile$"
jdbc-config {
   url = "jdbc:postgresql://postgres:5432/node-1"
   driver = "org.postgresql.Driver"
   user = postgres
   password = wenterprise
   connectionPool = HikariCP
   connectionTimeout = 5000
   connectionTestQuery = "SELECT 1"
   queueSize = 10000
   numThreads = 20
   }
}
  • schema - используемая схема взаимодействия между элементами в рамках БД. По умолчанию применяется схема public, однако если в вашей БД предусмотрена иная схема - укажите ее название.

  • migration-dir - директория для миграции данных.

  • profile - имя профиля для доступа к JDBC.

  • url - адрес БД PostgreSQL.

  • driver - имя драйвера JDBC (Java SataBase Connectivity), позволяющим Java-приложениям взаимодействовать с БД.

  • user - имя пользователя для доступа к БД.

  • password - пароль для доступа к БД.

  • connectionPool - имя пула соединений, по умолчанию HikariCP.

  • connectionTimeout - время бездействия соединения до его разрыва (в миллисекундах).

  • connectionTestQuery - тестовый запрос для проверки соединения с БД. Для PostgreSQL рекомендуется отправлять SELECT 1.

  • queueSize - размер очереди запросов.

  • numThreads - количество одновременных подключений к БД.

Во время установки БД под управлением PostgreSQL создайте аккаунт для доступа к БД. Затем введите указанный вами логин и пароль в поля user и password. При установке JDBC, задайте имя профиля, которое затем укажите в поле profile.

В поле url укажите адрес используемой вами БД в следующем формате:

jdbc:postgresql://<POSTGRES_ADDRESS>:<POSTGRES_PORT>/<POSTGRES_DB>
  • POSTGRES_ADDRESS - адрес хоста PostgreSQL.

  • POSTGRES_PORT - номер порта хоста PostgreSQL.

  • POSTGRES_DB - наименование БД PostgreSQL.

Вы можете указать адрес БД вместе с данными аккаунта, используя параметры user и password:

privacy {
  storage {
    ...
    url = "jdbc:postgresql://yourpostgres.com:5432/[email protected]&password=7nZL7Jr41qOWUHz5qKdypA&sslmode=require"
    ...
    }
}

В этом примере user_privacy_node_0@company - имя пользователя, 7nZL7Jr41qOWUHz5qKdypA - его пароль. Также вы можете использовать команду sslmode=require для требования пароля при авторизации.

vendor = s3

При использовании СУБД Amazon S3, блок storage секции privacy выглядит так:

storage {
vendor = s3
url = "http://localhost:9000/"
bucket = "privacy"
region = "aws-global"
access-key-id = "minio"
secret-access-key = "minio123"
path-style-access-enabled = true
connection-timeout = 30s
connection-acquisition-timeout = 10s
max-concurrency = 200
read-timeout = 0s
}
  • url - адрес сервера Minio для хранения данных. По умолчанию, Minio использует порт 9000.

  • bucket - имя таблицы БД S3 для хранения данных.

  • region - название региона S3, значение параметра - aws-global.

  • access-key-id - идентификатор ключа доступа к данным.

  • secret-access-key - ключ доступа к данным в хранилище S3.

  • path-style-access-enabled = true - неизменяемый параметр указания пути к таблице S3.

  • connection-timeout - период бездействия до разрыва соединения (в секундах).

  • connection-acquisition-timeout - период бездействия при установлении соединения (в секундах).

  • max-concurrency - число параллельных обращений к хранилищу.

  • read-timeout - период бездействия при чтении данных (в секундах).

В процессе установки сервера Minio вам будет предложено определить логин и пароль для доступа к данным. Введите логин в поле access-key-id, а пароль - в поле secret-access-key.

Секция cleaner

Секция cleaner предназначена для настройки периодического удаления конфиденциальных данных, которые хранятся в БД, но по тем или иным причинам не попали в блокчейн (например, в случае отката транзакции). Эта секция включает следующие параметры:

  • enabled - включение/отключение периодического удаления файлов, которые не попали в блокчейн.

  • interval - интервал очистки файлов.

  • confirmation-blocks - период времени в блоках, в течение которого который существует хэш-транзакция данных в блокчейне, после чего она удаляется.

  • pending-time - максимальный период времени, за который сохраняется файл с данными, не попадая в блокчейн.