# Decimal Guard

Decimal Guard is a tool helping to monitor validator node and set it offline if node stops to sign blocks by any reason.

# Generating set_offline transaction

Before starting Decimal Guard it is necessary create and sign offline transaction with message validator/set_offline which will be used to turn off validator when it does not sign blocks.

# Generator configuration

To configure gentx tool you should create file .env at directory cmd/gentx. Example of the configuration:

API_URL="https://mainnet-gate.decimalchain.com/api"
BASE_COIN_SYMBOL="del"
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

# Generator usage

To run gentx tool use following commands:

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

If everything is OK in terminal your will see output like this:

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

Please, confirm that chain ID, account and operator addresses are correct. The last line is a generated transaction in hex format. You should use it as value for SET_OFFLINE_TX environment variable (by specifying in cmd/guard/.env) to run Decimal Guard.

# Guard a validator node

Before starting Decimal Guard it is necessary to configure it's parameters.

# Guard configuration

To configure guard tool you should create file .env at directory cmd/guard. Example of the configuration:

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

Where:

  • NODES_ENDPOINTS - list of Decimal Node RPC endpoints which should be used to listen new blocks (can be specified several endpoints separated by ,)
  • MISSED_BLOCKS_LIMIT and MISSED_BLOCKS_WINDOW - when at least MISSED_BLOCKS_LIMIT blocks of last MISSED_BLOCKS_WINDOW blocks are missed to sign by monitoring validator set_offline transaction will be send to all connected nodes to turn of validator
  • VALIDATOR_ADDRESS - validator address in hex format which should be monitored by the guard. Validator address can be found in file ~/.decimal/daemon/config/priv_validator_key.json
  • SET_OFFLINE_TX - signed tx (ready to broadcast) in hex format which will be used to turn off validator when too many blocks are missed to sign

# Guard usage

To run guard tool use following commands:

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