# Decimal Guard

Decimal Guard это инструмент, помогающий мониторить ноду валидатора и автоматически деактивировать её, если нода по какой-то причине перестаёт подписывать блоки.

# Генерирование транзакции set_offline

Перед запуском Decimal Guard необходимо создать и подписать оффлайн транзакцию с сообщением validator/set_offline, которая будет использована для деактивации валидатора, когда он перестал подписывать блоки.

# Конфигурирование генератора транзакции

Чтобы сконфигурировать инструмент gentx, следует создать в директории cmd/gentx файл .env. Например:

API_URL="https://mainnet-gate.decimalchain.com/api"
BASE_COIN_SYMBOL="tdel"
MNEMONIC="bulb raw claw magnet romance jaguar life cluster solve random laptop salmon pottery subject country aware actual hope wedding hawk amused cage secret network"
1
2
3

# Использование генератора транзакции

Чтобы запустить gentx, используйте следующие команды:

(cd ./cmd/gentx && go run gentx.go)
1

Если всё в порядке, то вы увидите следующее:

Chain ID:
decimal-mainnet-07-28-18-30

Account:
dx16rr3cvdgj8jsywhx8lfteunn9uz0xg2c7ua9nl (number: 2, sequence: 1)

Operator address:
dxvaloper16rr3cvdgj8jsywhx8lfteunn9uz0xg2czw6gx5

Transaction (hex):
ab01282816a90a1a51f5833b0a14d0c71c31a891e5023ae63fd2bcf2732f04f32158120310be031a6a0a26eb5ae987210279f7e074d08a23e2fc7b7fd9e49a0d6570a28bf6c9cb988e92f678c32935097412407979e0cc483f241e48ed3c371d9d668a5b978fb474afc5fea5803c89bd2a2dac3db15eb84fef1fce25e783e279a33bac7b96bbe6786c9608d52c69baecacf9d02218446563696d616c2047756172642074726967676572726564
1
2
3
4
5
6
7
8
9
10
11

Пожалуйста, подтвердите, что идентификатор chain ID блокчейна, аккаунт и адрес оператора корректны. Последняя строка - это сгенерированная транзакция в hex формате. Для запуска Decimal Guard следует использовать её в качестве значения переменной окружения для SET_OFFLINE_TX (указывая в cmd/guard/.env)

# Защита ноды валидатора

Перед запуском Decimal Guard необходимо сконфигурировать его параметры.

# Конфигурирование Decimal Guard

Для конфигурирования guard в директории cmd/guard необходимо создать файл .env Например:

NODES_ENDPOINTS="tcp://localhost:26657"
MISSED_BLOCKS_LIMIT=8
MISSED_BLOCKS_WINDOW=24
VALIDATOR_ADDRESS="1A42FDF9FC98931A4BB59EF571D61BB70417657D"
SET_OFFLINE_TX="ab01282816a90a1a51f5833b0a14d0c71c31a891e5023ae63fd2bcf2732f04f32158120310be031a6a0a26eb5ae987210279f7e074d08a23e2fc7b7fd9e49a0d6570a28bf6c9cb988e92f678c32935097412407979e0cc483f241e48ed3c371d9d668a5b978fb474afc5fea5803c89bd2a2dac3db15eb84fef1fce25e783e279a33bac7b96bbe6786c9608d52c69baecacf9d02218446563696d616c2047756172642074726967676572726564"
1
2
3
4
5

Где:

  • NODES_ENDPOINTS - список RPC эндпоинтов Decimal ноды, которые следует использовать для мониторинга появления новых блоков (возможно указать несколько эндпоинтов, разделяя их ,)
  • MISSED_BLOCKS_LIMIT и MISSED_BLOCKS_WINDOW - когда не менее MISSED_BLOCKS_LIMIT блоков из последних MISSED_BLOCKS_WINDOW блоков не подписаны валидатором, set_offline транзакция будет отправлена на все на все подключенный ноды для деактивации валидатора
  • VALIDATOR_ADDRESS - адрес валидатора в hex формате, который должен мониторится Decimal Guard. Адрес валидатора можно найти в файле ~/.decimal/daemon/config/priv_validator_key.json
  • SET_OFFLINE_TX - подписанная транзакция (готовая для отправки в блокчейн) в hex формате, которая будет использована для деактивации валидатора, если он не подписал заданное количество блоков

# Использование Decimal Guard

Для запуска guard используйте следующие команды:

(cd ./cmd/guard && go run guard.go)
1