Validator Guide

Hello validators! This page is dedicated to helping you out on how to set up a node and run the network. We aim to achieve a diversified validator group that maintains high security and uptime at the core of their operations.

選擇標準

We will focus on 3 key criteria for the selection of our validators:

Uptime

It is a vital criterion for blockchain systems. Validators with a proven track record of maintaining consistent uptime will be preferred.

Geographic Distribution

To prevent centralization risks and enhance network robustness, we aim to have a geographically diverse set of validators. Validators from different regions will not only help to create a decentralized network infrastructure but also be our champions to drive and bring compliance focus in their jurisdiction.

Trustworthiness

Trust and transparency is our core value and we strive to partner with validators/builders who demonstrate the same integrity and commitment towards the ecosystem.

What are Validator Nodes?

ZippyChain relies on a team of validators who are tasked with adding new blocks to the blockchain. Here's how the process works and some critical details about its structure:

Validators and Consensus Protocol

Validators play a key role in the consensus protocol by casting votes, which include cryptographic signatures from their private keys. They are essentially responsible for confirming the transactions.

Bonding Network Tokens

Potential validators can bond their own tokens.

Earning Tokens and Transaction Fees

Both validators and their delegators earn tokens through block provisions and tokens through transaction fees. This is achieved by executing the fast Byzantine fault-tolerant consensus protocol.

Penalties for Misconduct

If validators act inappropriately (e.g., double-signing or being offline too long), they can face penalties. The severity of the penalty depends on the violation's seriousness.

Defending Against Attacks

Validators are charged with protecting the network against denial-of-service attacks. A recommended strategy is to use a 'sentry node architecture'.

By using this architecture, validator block proposals and votes are ensured to reach the rest of the network, maintaining the stability and integrity of ZippyChain.

Nodes and Validator Operations

Setting up and operating a validator node requires careful attention to system requirements and configuration.

System Requirements

Operating System

The OS you use for your node is your choice. This guide will provide detailed instructions for Ubuntu 22.04 LTS.

Hardware Requirements

When considering the technical specifications for setting up a validator node, several factors should be taken into account, e.g. a dedicated server or virtual machine with sufficient computing power, memory, and storage capacity, ensure a stable internet connection and reliable power supply to maintain continuous operation.

  • CPU: 4 dedicated cores
  • RAM: 16 GB
  • Storage: 4 TB (using snapDB) SSD Minimum, NVMe recommended
  • Network: 50Mb/s bandwidth

Setup Procedure

下載 zpy-cli 和 zippynode

zpy-cli用於linux終端錢包。zippynode用於zippy節點程序。

curl -LO http://64.62.166.164:5800/zpy-cli && chmod +x zpy-cli
curl -LO http://64.62.166.164:5800/zippynode && chmod +x 
download_icon
 

Generate BLS Keys

./zpy-cli keys generate-bls-keys --count 1 --shard 0 --passphrase

Note: count means number of the bls keys; shard means which shard you want to bind your BLS key to.

keys_icon
 

Creating A New Validator Wallet

You need to provide a local account name of your choice and provide a passphrase. When creating an account, the CLI will ask you to provide a passphrase to encrypt the keystore file:

./zpy-cli keys add mystake --passphrase

Add a wallet named mystake and set a wallet password. Remember your passphrase. You will need it to decrypt the account keystore in order to send transactions & perform other actions. Also save your seed phrase (mnemonic) somewhere as well, in case you lose your keystore.

wallet_icon
 

Backing Up Your Keystore File (Optional)

./zpy-cli keys location

This command is used to check where the wallets generated by the terminal are located.

You can check the list of wallets (local accounts) with this command.

./zpy-cli keys list
backup_icon
 

Address Format Note

Note that ZippyChain uses both the ERC 20 format and Bech32 format for public addresses. But to setup a node, YOUR_WALLET_ADDRESS should use the Bech32 format in Next Step. To convert your ERC 20 address into the Bech32 address, please use the following link:

Convert Address

Checking Account Balance

This command shows the balance. We should keep the balance > 10001

./zpy-cli --node="https://t.s0.n6.zippychain.ai" balances YOUR_WALLET_ADDRESS
balance_icon
 

Creating a Validator

For you to create a Validator successfully, it needs to have 10000 ZPT tokens plus the necessary fees to create the validator transaction on chain. For this reason, we recommend that you send at least 10001 but no more than 20000 ZPT tokens to your –validator-addr before you continue.

./zpy-cli --node="https://t.s0.n6.zippychain.ai" staking create-validator --validator-addr YOUR_WALLET_ADDRESS --amount 10000 --bls-pubkeys YOUR_BLS_PUBKEY --name "stake33" --identity "stake33" --details "stake33" --security-contact "stake33" --website "stake33" --max-change-rate 0.1 --max-rate 0.1 --rate 0.1 --max-total-delegation 100000000 --min-self-delegation 10000 --passphrase
create_validator_icon
 

This command sends the staking transaction. (Note that YOUR_WALLET_ADDRESS should use Bech32 format)

Running the Node

./zippynode --log_folder ./stakenodetmp_log --min_peers 4 --bootnodes "/ip4/64.71.185.50/tcp/19876/p2p/QmdzLi9Mr3cHWnCBiz9hkK2VWVYvfpt5dDFEJUBWe5Tr4S" --network_type=localnet --verbosity=5 --p2p.security.max-connper-ip=200 --ip 0.0.0.0 --port 19004 --db_dir ./stakenodetestdb/ --broadcast_invalid_tx=false --http.ip=0.0.0.0 --ws.ip=0.0.0.0 --run.shard=0 --blskey_file ./YOUR_BLS_PUBKEY
run_node_icon
 

Now you can run the node! Once started, the node will take some time to sync with the blockchain.

Check Blockchain Explorer

to see the current height of the blockchain. Use the journalctl command to check on the node's progress.

Checking Validator's Status

You can use this command to check your validator's status.

./zpy-cli blockchain validator information [Your Validator's ZPT address] --node="https://t.s0.n6.zippychain.ai"
status_icon
 

"active-status" means if you will take part in generating block processing

Activating Your Validator and waiting for Election

If you want to join generating block processing, you should enable your activation.

./zpy-cli --node="https://t.s0.n6.zippychain.ai" staking edit-validator --active true --validator-addr [Your Validator's ZPT address] --passphrase
activate_icon
 

Checking validator's status again.

./zpy-cli blockchain validator information [Your Validator's ZPT address] --node="https://t.s0.n6.zippychain.ai"
check_again_icon
 

Suggestions

The technical team advises that non-technical people should not participate in the validation process to avoid financial losses.