Установка и использование платформы
Развертывание платформы в частной сети¶
Если ваш проект или решение требует независимого блокчейна, вы можете развернуть собственную блокчейн-сеть на базе платформы Waves Enterprise. Специалисты компании помогут вам сконфигурировать поставку платформы под нужды проекта.
Однако если вам потребуется изменить какие-либо параметры или настроить платформу самостоятельно, в данном разделе приведено пошаговое руководство по развертыванию и ручному конфигурированию платформы для работы в частной сети.
Примечание
Порядок создания аккаунтов нод, подписания genesis-блока и *** при использовании ГОСТ криптографии с PKI, описан в разделе Развертывание платформы в частной сети при использовании ГОСТ криптографии с PKI.
Создание аккаунта ноды¶
Создайте аккаунты для каждой ноды вашей будущей сети.
Аккаунт ноды включает в себя адрес и ключевую пару – публичный и приватный ключи.
Генерация ключей производится при помощи утилиты AccountsGeneratorApp, которая входит в пакет generators. Этот пакет вы можете скачать из официального репозитория Waves Enterprise в GitHub, выбрав используемую вами версию платформы.
Адрес и публичный ключ будут показаны в командной строке во время создания аккаунта при помощи утилиты generators. Приватный ключ ноды записывается в хранилище ключей – файл keystore.dat
, который размещается в директории ноды.
Примечание
При использовании ГОСТ криптографии генерация аккаунта ноды возможна только при наличии графического интерфейса в операционной системе и предварительно установленных компонент CryptoPro. Хранилище ключей в этом случае расположено в директории, которая по умолчанию находится в директории /var/opt/cprocsp/keys/root/{username}
в UNIX-подобных системах (Linux, OSX), где username
— имя пользователя, под которым запускался генератор.
Для создания аккаунта используется конфигурационный файл accounts.conf
, содержащий параметры генерации аккаунтов.
Этот файл находится в директории каждой ноды.
Чтобы создать аккаунт ноды, перейдите в ее директорию и разместите в ней скачанный файл generators.jar.
Затем запустите его, введя в качестве аргумента файл accounts.conf
:
java -jar generators-x.x.x.jar AccountsGeneratorApp accounts.conf
При создании пары ключей вы можете придумать свой пароль для защиты ключевой пары ноды. В дальнейшем вы сможете использовать его в ручном режиме при каждом старте вашей ноды, либо задать глобальные переменные для запроса пароля при старте системы. Подробная информация об использовании пароля для пары ключей ноды приведена в описании генератора аккаунтов.
Если вы не хотите использовать пароль для защиты ключевой пары, нажмите клавишу Enter
, оставив поле пустым.
В результате работы утилиты будут выведены следующие сообщения:
2021-02-09 16:03:18,940 INFO [main] c.w.g.AccountsGeneratorApp$ - 1 Address: 3Nu7MwQ1eSmDVwBzrN1nyzR8wqb2yzdUcyN; public key: F4ytnnS6H72ypCEpgNKYftGotpdX83ZxtWRX2dyGzDiA
2021-02-09 16:03:18,942 INFO [main] c.w.g.AccountsGeneratorApp$ - Generator done
В директории ноды будет создан файл keystore.dat
, содержащий публичный ключ аккаунта.
Настройка платформы для работы в частной сети¶
Для конфигурации платформы используются следующие файлы:
node.conf
– основной конфигурационный файл ноды, определяющий ее принципы работы и набор опций.api-key-hash.conf
– конфигурационный файл для генерации значений полейapi-key-hash
иprivacy-api-key-hash
, используется для настройки авторизации ноды при выборе метода авторизации по хэшу ключевой строкиapi-key
. Принципы работы с этим конфигурационным файлом будут рассмотрены при настройке метода авторизации ноды.
Примечание
Параметры конфигурации ноды можно записать в одном файле либо в нескольких файлах, включая один файл в другой, например:
include required(file("network.conf"))
include required(file("local.conf"))
Таким образом можно вынести в один файл общие для всех нод параметры, а уникальные параметры ноды (например, owner-address
) задать в отдельном файле для каждой ноды.
Ниже приведено пошаговое руководство по ручной конфигурации отдельной ноды для работы в частной сети. Если в вашей сети развернуто несколько нод, для каждой из них требуется выполнить аналогичные шаги по конфигурации.
Шаг 1. Общая настройка платформы
На этом этапе выполняется настройка криптографии, консенсуса, исполнения смарт-контрактов Docker и майнинга. Все необходимые для этого параметры располагаются в файле node.conf.
Шаг 2. Тонкая настройка платформы
На этом этапе выполняется настройка инструментария gRPC и REST API ноды, их авторизации, TLS и групп доступа к конфиденциальным данным. Эти настройки могут потребоваться вам в случае изменения предустановленных параметров для конфигурации вашего оборудования или ПО.
Все необходимые параметры также располагаются в файле конфигурации ноды node.conf. Для настройки авторизации также применяется файл api-key-hash.conf, необходимый при выборе метода авторизации по хэшу заданной строки api-key.
Также для настройки TLS вам потребуется утилита keytool, которая входит в состав Java SDK или JRE.
- Тонкая настройка платформы: настройка авторизации для gRPC и REST API
- Тонкая настройка платформы: настройка инструментов gRPC и REST API ноды
- Тонкая настройка платформы: настройка TLS
- Тонкая настройка платформы: настройка групп доступа к конфиденциальным данным
- Тонкая настройка платформы: настройка анкоринга
- Тонкая настройка платформы: настройка механизма создания снимка данных
- Тонкая настройка платформы: настройка ноды в режиме наблюдения
Полные примеры конфигурационных файлов для настройки каждой ноды приведены здесь.
Получение лицензии для работы в частной сети¶
Для развертывания платформы в частной сети вам необходимо получить вид лицензии, соответствующий вашим целям: пробную, коммерческую или некоммерческую.
Примечание
Opensource-версия блокчейн-платформы Waves Enterprise не требует лицензии.
Лицензия для запуска ноды привязана к ключу владельца ноды. В самой лицензии прописан адрес ноды, для которого лицензия выпущена.
Для обсуждения деталей вашей лицензии свяжитесь с отделом продаж Waves Enterprise по электронной почте: sales@wavesenterprise.com.
По результатам обсуждения вам будет прислан файл лицензии. Поместите этот файл в папку, путь к которой указан в параметре license-file
конфигурационного файла ноды.
Перед развертыванием ознакомьтесь с системными требованиями к блокчейн-платформе.
Подписание genesis-блока и запуск сети¶
После выполнения конфигурации нод вашей сети необходимо создать genesis-блок – первый блок приватного блокчейна, содержащий транзакции, определяющие первоначальный баланс и разрешения ноды.
Genesis-блок подписывается утилитой GenesisBlockGenerator, входящей в пакет generators. В качестве аргумента она использует настроенный вами конфигурационный файл ноды node.conf
:
java -jar generators-x.x.x.jar GenesisBlockGenerator node.conf
В результате работы утилиты поля genesis-public-key-base-58
и signature
, находящиеся в блоке genesis
секции blockchain
конфигурационного файла ноды, будут заполнены сгенерированными значениями открытого ключа и подписи genesis-блока.
Пример:
genesis-public-key-base-58: "4ozcAj...penxrm"
signature: "5QNVGF...7Bj4Pc"
Примечание
При использовании ГОСТ PKI криптографии необходимо, чтобы до подписания genesis-блока были установлены компоненты CryptoPro. Также перед запуском генератора GenesisBlockGenerator
необходимо подготовить конфигурационный файл ноды:
задать параметру
node.crypto.type
значениеgost
;задать параметру
node.crypto.pki.mode
одно из следующих значений:on
илиtest
;добавить публичный ключ, которым будет подписываться genesis-блок, в секцию
network-participants
и там же присвоить ему рольpermissioner
; публичный ключ, которым будет подписываться genesis-блок, также создается генератором GeneratePkiKeypair. Ключ должен находиться локально в хранилище ключей машины, с которой запускается генератор.добавить в конфигурационный файл идентификаторы корневых доверенных сертификатов – в качестве идентификаторов используются отпечатки (fingerprint) сертификатов в SHA-1; указать сертификаты участников сети в формате DER, закодированные при помощи Base64 в текст; для этого в разделе
node.blockchain.custom.genesis.pki
необходимо задать следующие параметры:
trusted-root-fingerprints
– массив Base64 строк, перечисляющих SHA-1 отпечатков доверенных корневых сертификатов, которые должны находиться в trust-store JVM,
certificates
– массив строк в формате Base64, содержащих тела сертификатов в бинарной кодировке DER.
Также необходимо сконфигурировать среду запуска генератора GenesisBlockGenerator:
добавить в хранилище доверенных сертификатов (trust-store) JVM корневые сертификаты, которые будут использоваться в качестве доверенных при валидации цепочек в блокчейн сети. Для этого можно использовать встроенную в JVM утилиту keystore. Пример вызова утилиты:
keytool -import -trustcacerts -alias %CERT_ALIAS% -noprompt -storepass 'changeit' -keystore %PATH_TO_YOUR_JRE%/lib/security/cacerts -file cert-to-add.cer
После этого запустите GenesisBlockGenerator в командной строке, указав путь до конфигурационного файла ноды, который требуется подписать, и алиас (адрес) ключа, которым будет подписываться genesis-блок. Например:
java -cp "generators-x.x.x.jar::./java-csp-5.0.R2/*" com.wavesenterprise.generator.GeneratorLauncher GenesisBlockGenerator ./node_alone.conf 3N1uZiamcpuTnRASi7L17vM8xhbC292UNgU
После подписания genesis-блока платформа полностью настроена и готова для запуска сети. Вы можете запустить ее согласно указаниям, полученным от специалистов Waves Enterprise.
Привязка клиента к частной сети¶
После запуска сети привяжите к ней клиентское приложение Waves Enterprise – с его помощью пользователи сети смогут отправлять транзакции в блокчейн, а также публиковать и вызывать смарт-контракты.
Откройте браузер и введите в адресную строку сетевой адрес вашего компьютера с развернутым ПО ноды.
Зарегистрируйтесь в веб-клиенте, используя любой действительный электронный адрес, и зайдите в веб-клиент.
Откройте страницу Выберите адрес -> Создать адрес. Для открытия меню после первого входа необходимо ввести пароль, который вы вводили при регистрации аккаунта.
Выберите пункт Добавить адрес из ключевого хранилища ноды и нажмите кнопку Продолжить.
Заполните поля, указанные ниже. Необходимые значения приведены в файле
credentials.txt
для первой ноды в рабочей директории.
Имя адреса – укажите название ноды;
URL ноды – укажите значение
http://<сетевой адрес компьютера>/<адрес ноды>
;Тип авторизации на ноде – выберите тип авторизации, который вы настроили ранее: по JWT-токену или по
api-key
;Блокчейн-адрес – укажите адрес ноды;
Пароль от ключевой пары – укажите пароль от ключевой пары ноды, если задавали его при генерации аккаунта.
Описание клиента приведено на странице Клиент.