2 Конфигурирование Docker-образа

Для построения Testnet требуется сервер с операционной системой Ubuntu 16.04 и определенным набором библиотек. В случае отсутствия сервера с требуемой операционной системой следует воспользоваться сервером с операционной системой семейства Linux. Имеется возможность установки Testnet на такой сервер с помощью платформы Docker, обеспечивающий создание необходимого окружения, независимо от версии системы Linux.

Установка и функционирование Testnet на сервер под управлением каких-либо иных классов систем не поддерживается. Для установки Testnet на сервер с использованием платформы Docker необходимо выполнить следующие операции:

  • сконфигурировать Docker-образ в отдельном пространстве;

  • создать контейнеры с использованием Docker-образа. Контейнеры можно размещать как на локальном, так и на удаленном или виртуальном компьютере.

Конфигурирование Docker-образа

2.1 Создать репозиторий cyberway в отдельном пространстве Открыть командное окно и войти в директорию cyberway, в которой будет создан Docker-образ. Далее исполнить:

git clone https://github.com/cyberway/cyberway

В пространство, из которого была исполнена команда, должен скопироваться каталог cyberway с его содержимым. В процессе копирования не должны появляться сообщения об ошибках.

2.2 Создать отдельную директорию testnet Местонахождение данной директории выбирается произвольно (здесь и далее используется директория ~/testnet):

mkdir -p ~/testnet

2.3 Скопировать файлы docker В созданную директорию ~/testnet скопировать файлы docker-compose.yml и образец конфигурационного файла config.ini из репозитория Cyberway. Используемые для копирования команды:

cp Docker/config.ini ~/testnet/
cp Docker/docker-compose.yml ~/testnet/

2.4 Перейти в директорию ~/testnet Все остальные команды должны выполняться из этой директории.

cd ~/testnet/

2.5 Настроить конфигурацилнный файл Настроить параметры в конфигурационном файле config.ini.

2.5.1 Установить адрес БД состояния системы. Рекомендуемый адрес параметра chaindb_address:

chaindb_address = mongodb://mongo:27017

2.5.2 Установить адреса остальных узлов (нод) сети, к которым необходимо выполнить подключение, исполнив:

p2p-peer-address = <Node address>

Параметр p2p-peer-address настраивается отдельно для каждого подключаемого узла сети. Для подключения N узлов сети необходимо данный параметр указать N раз. Для корректного старта ноды и подключения к Testnet (предоставленному разработчиками CyberWay) рекомендуется указать адрес 116.203.104.164:9876.

2.5.3 Для приема входящих подключений от других узлов сети необходимо раскомментировать параметр p2p-listen-endpoint и указать адрес сетевого интерфейса, на котором следует ожидать подключений, а также номер порта. Задание адреса интерфейса в виде 0.0.0.0 позволит сервису nodeosd слушать подключения других узлов сети на всех доступных сетевых интерфейсах. Рекомендуемый адрес:

p2p-listen-endpoint = 0.0.0.0:9876

2.5.4 Если пользователь желает авторизоваться в качестве валидатора, необходимо дополнительно указать имя валидатора и ключи, которые будут использованы для подписания блоков.

По умолчанию параметр producer-name закомментирован. В этом случае узел используется только для подключения к Testnet без производства блоков. Для подключения к Testnet с возможностью производить блоки необходимо дополнительно установить параметры producer-name и signature-provider.

producer-name = <Producer name>
signature-provider = <Public key>=KEY:<Private key>

Данные параметры может установить только валидатор, так как именно он располагает данными об имени аккаунта и ключах, которые необходимо использовать для создания блоков. Значения личного и публичного ключей валидатор должен сгенерировать самостоятельно (либо использовать ключи блокчейна Голос). Личный ключ валидатора используется для подписания блоков.

В следующей таблице приведен рекомендуемый перечень параметров конфигурационного файла, используемых для подключения узла к Testnet, а также для настройки узла валидатора.

Переменная окружения

Подключение узла (ноды) к Testnet

Настройка узла валидатора

producer-name

+

signature-provider

+

chaindb_address

+

+

p2p-peer-address

+

+

p2p-listen-endpoint

+/—

+/—

2.6 Сформировать данные генезиса

2.6.1 В директорию ~/testnet загрузить архивированный файл с содержимым генезиса и распаковать его, исполнив:

wget http://download.golos.io/genesis.tar.gz
tar -zxf genesis.tar.gz

После выполнения этих команд в ~/testnet должна появится директория genesis, содержащая файлы genesis.dat и genesis.dat.map.

2.6.2 Переименовать директорию genesis в genesis-data, исполнив:

mv genesis genesis-data

2.6.3 В директории ~/testnet/genesis-data создать файл genesis.json со следующим содержимым:

{
  "initial_timestamp": "2019-03-01T12:00:00.000",
  "initial_key": "GLS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV",
  "initial_configuration": {
    "max_block_net_usage": 1048576,
    "target_block_net_usage_pct": 1000,
    "max_transaction_net_usage": 524288,
    "base_per_transaction_net_usage": 12,
    "net_usage_leeway": 500,
    "context_free_discount_net_usage_num": 20,
    "context_free_discount_net_usage_den": 100,
    "max_block_cpu_usage": 2500000,
    "target_block_cpu_usage_pct": 1000,
    "max_transaction_cpu_usage": 1800000,
    "min_transaction_cpu_usage": 100,
    "max_transaction_lifetime": 3600,
    "deferred_trx_expiration_window": 600,
    "max_transaction_delay": 3888000,
    "max_inline_action_size": 4096,
    "max_inline_action_depth": 4,
    "max_authority_depth": 6
  },
  "initial_chain_id": "0000000000000000000000000000000000000000000000000000000000000000"
}

Last updated