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
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.
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.
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
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 AddressChecking 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
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
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
Now you can run the node! Once started, the node will take some time to sync with the blockchain.
Check Blockchain Explorerto 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"
"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
Checking validator's status again.
./zpy-cli blockchain validator information [Your Validator's ZPT address] --node="https://t.s0.n6.zippychain.ai"
Suggestions
The technical team advises that non-technical people should not participate in the validation process to avoid financial losses.