For operating a Masternode, candidates must take the team announcements regarding updates and technical notices into consideration. The following are the basic recommendations for operating Masternode Candidate
Run a full node
The guide explaining how to operate a Wethio Masternode in Testnet
Applying to become a Masternode
When your entire node is up and operating, applying to make it eligible for becoming a Masternode.
Exploring Wethio Slashing Mechanism
As per the mechanism, if a Masternode fails to sign any block during an entire epoch, it is expelled out of the Masternode list for the next four epochs.
Running a Masternode Candidate requires to pay attention to the team's announcements regarding updates and technical notices. Here are the base recommendations for running a Masternode Candidate.
What are the Minimum Hardware Requirements
Transaction processing is mainly CPU bound. Thus, we suggest you operate CPU optimized servers.
Directly facing internet (public IP, no NAT)
16 cores CPU
32GB of RAM
Note: 2CPU/8GB RAM is sufficient for running a node in testnet
Given the popularity, reliability, and close to 100% uptime rate, we recommend using cloud providers. The below options are good to begin with
DigitalOcean: CPU optimized droplet 32GB/16CPU
Amazon EC2: C5 instance
Google Cloud Engine: n1-highcpu-16
Organizing a Masternode Candidate on a non-performant or low computing machine might enable poor performance. As a result, it can significantly affect an owner's rewards, as well as the performance of the chain.
A Masternode might have a few tasks to process like validations and block creation. A Masternode must process the tasks assigned to it efficiently to not affect the rewards distribution negatively. Also, oversizing your masternode will not help you earn more rewards.
Continuous maintenance is inevitable for almost all IT systems. An owner must fulfill its responsibility to ensure that your node has enough power over time like:
Disk space to store the new blockchain data
High processing power to ensure the operation of chain at optimal speed
Monitoring to react quickly in case of errors
Strengthened security measures such as firewall, OS security patching, SSH via
This is a non exhaustive list.
Operating a Full Node Here, you will learn how to operate a full node in Wethio
Basic Hardware Considerations
Our team, at Wethio, has run various extensive trial and test performances to finalize the following requirements for any Wehthio Masternode host.
It must be facing the internet directly (no NAT, public IP)
It should have at least 2 cores
It should have minimum 8GB of RAM
It must use an IaaS ("cloud") provider that you can opt (AWS, Digital Ocean, Google
It should use SSD storage
Our primary recommendation is to prioritize CPU. For instance, with Digital Ocean, you may choose a CPU optimized droplet. For AWS, you can use a C5 type of instance.
The full node will serve on port 30303 UDP and TCP for peer to peer communication with other nodes, 8545 TCP for RPC API and 8546 TCP for WebSocket API. Also, it may require you to edit and configure your firewall accordingly.
Executable Wethio Binary Here you will find details about the executable binary on Wethio.
We begin with the installation of Golang using https://golang.org/doc/install as reference then setting environment variables and at last supporting Go 1.10, 1.11, 1.12
export GOROOT=$HOME/usr/local/go export GOPATH=$HOME/go
Build from source code¶
Create new directory for the project
mkdir -p $GOPATH/src/github.com/ethereum/ cd $GOPATH/src/github.com/ethereum/
Download source code and build , use branch testnet git clone https://github.com/zynecoin/wethio.git go-ethereum cd go-ethereum
Build the project make all
Binary file should be generated in build folder $GOPATH/src/github.com/ethereum/go-ethereum/build/bin
Download Wethio binary from Github release page
Download Genesis Block
$GENESIS_PATH : location of genesis file you would like to put
curl -L https://raw.githubusercontent.com/zynecoin/wethio/master/genesis/testnet.json -o $GENESIS_PATH1 ### Create datadir <a id="create-datadir"></a>23 create a folder to store chain data on your machine4 export DATA_DIR=/path/to/your/data/folder5 mkdir -p $DATA_DIR/zyn
Initialize the chain from genesis
zyn init $GENESIS_PATH --datadir $DATA_DIR
Initialize / Import accounts for the nodes's keystore
Import if you have an existing account. Else, you need to initialize new accounts.
Initialize new accounts
1 zyn account new \2 --password [YOUR_PASSWORD_FILE_TO_LOCK_YOUR_ACCOUNT] \3 --keystore $KEYSTORE_DIR
zyn account import [PRIVATE_KEY_FILE_OF_YOUR_ACCOUNT] \
--keystore $KEYSTORE_DIR \
List all available accounts in keystore folder
zyn account list --datadir $DATA_DIR --keystore $KEYSTORE_DIR
Start a node
$IDENTITY: the name of your node$PASSWORD: the password file to unlock your account$YOUR_COINBASE_ADDRESS: address of your account which generated in theprevious step$NETWORK_ID: the networkId Testnet 79 , Mainnet 78$BOOTNODES: The comma separated list of bootnodes.$WS_SECRET: The password to send data to the stats website.
Let’s start a node
1 zyn --syncmode "full" \2 --datadir $DATA_DIR --networkid $NETWORK_ID --port 30303 \3 --keystore $KEYSTORE_DIR --password $PASSWORD \4 --identity $IDENTITY \5 --mine --gasprice 250000000 \6 --bootnodes $BOOTNODES \7 --ethstats $IDENTITY:$WS_SECRET@$NETSTATS_HOST:$NETSTATS_PORT
If you are a dapp developer, you should open RPC and WS apis:
1 zyn --syncmode "full" \2 --datadir $DATA_DIR --networkid $NETWORK_ID --port 30303 \3 --keystore $KEYSTORE_DIR --password $PASSWORD \4 --rpc --rpccorsdomain "*" --rpcaddr 0.0.0.0 --rpcport 8545 --rpcvhosts5 --rpcapi "db,eth,net,web3,personal,debug" \6 --gcmode "archive" \7 --ws --wsaddr 0.0.0.0 --wsport 8546 --wsorigins "*" --unlock "$YOUR_COINBASE_ADDRESS" \8 --identity $IDENTITY \9 --mine --gasprice 250000000 \10 --bootnodes $BOOTNODES \11 --ethstats $IDENTITY:$WS_SECRET@$NETSTATS_HOST:$NETSTATS_PORT
--verbosity: log level from 1 to 5. Here we're using 4 for debug messages--datadir: path to your data directory created above.--keystore: path to your account's keystore created above.--identity: your full-node's name.--password: your account's password.--networkid: our network ID.--port: your full-node's listening port (default to 30303)--rpc, --rpccorsdomain, --rpcaddr, --rpcport, --rpcvhosts: your full-node will accept RPC requests at 8545 TCP.--ws, --wsaddr, --wsport, --wsorigins: your full-node will accept Websocket requests at 8546 TCP.--mine: your full-node wants to register to be a candidate for masternode selection.--gasprice: Minimal gas price to accept for mining a transaction.--targetgaslimit: Target gas limit sets the artificial target gas floor for the blocks to mine (default: 4712388)--bootnode: bootnode information to help to discover other nodes in the network--gcmode: blockchain garbage collection mode ("full", "archive")--store-reward: store reward report
Check all flags usage
If your node seems run smooth with no error logs but still get slash frequently. You need to check system time on your node, your system time have to be synced from NTP server
1 $ timedatectl2 Local time: Fri 2019-07-26 05:57:40 CEST3 Universal time: Fri 2019-07-26 03:57:40 UTC4 RTC time: Fri 2019-07-26 03:58:015 Time zone: Europe/Berlin (CEST, +0200)6 Network time on: yes7 NTP synchronized: no8 RTC in local TZ: no
NTP synchronized: no denotes your node does not use NTP, you have to enable it.
Apply for a Masternode Here you can learn how to become a masternode by finding how to apply.
Once you have set up a full node, you can apply for a Masternode. Masternodes are entitled to receive rewards that are sufficient enough to exceed the cost spent on operating the infrastructure. Nonetheless, to become a Masternode candidate in Wethio, one has to invest at least 17,000 ZYN as the stake for a long-term. Additionally, if the candidate fails to become one of the top 157 most voted candidates after the initial deposit, they will become an asternode. This will cancel their eligibility to become a Masternode or to receive awards. Hence, it becomes important for the candidates to participate with full zeal, prove their capability, and support Wethio to be in the list of 157 most voted candidates.
In order to become a masternode candidate, it is necessary to adhere to the below requirements:
A candidate must have an up and running node
He/she must have a minimum required amount of ZYN coins (17,000 ZYN), which will be deposited to the Voting Smart Contract.
He/she must be on the list of the 157 most voted Masternode Candidates in the system. The voting Dapp enables the ZYN holders to send ZYN through the smart contract protocol.
Applying for a Masternode
Follow the below steps:
Visit WethioMaster to apply. You need to connect the wallet having sufficient funds to deposit.
Warning: The wallet that receives the rewards will be the one that has been used to make the initial deposit.
Reach the top right corner and click on the 'Become a Candidate'.
Enter the amount of ZYN to be deposited (Minimum 17,000).
Submit your Coinbase address, which is the account address that your Masternode is using.
Important note: For security reasons, we recommend using a new account for your Coinbase account or Masternode. Yet, the account where rewards will be deposited will be the one from which you have made the initial deposit of 17,000 ZYN.
Confirm with apply and proceed to make the payment.
Confirm with apply and proceed further for initiating the payment.
Your Masternode is visible to people interested in voting, with its details on WethioMaster. You become a Masternode candidate if you belong to the top 157 most voted candidates in the epoch.
Info: An epoch is a period of 900 blocks (~ 30 minutes) starting from block #1
When your node is on the list of the top 157 most voted candidates list at a checkpoint between two epochs, it becomes a Masternode. It starts generating blocks in the next epoch.
To stop and resign your Masternode and retrieve your locked funds, follow these steps: 1. Resign from a Masternode 2. Visit WethioMaster and access “Candidate Detail Page” 3. Click “Resign”
After resigning your Masternode, you can withdraw your funds 30 days after the resignation (1,296,000 blocks).
Here you will find detailed information about the slashing mechanism on Wethio.
Slashing 2.0 is an interesting mechanism to penalize a masternode if it is not able to create any block within an epoch, and results in a delay of 10 seconds at each of their turns, for the next five epochs.
Important: Although a slashed Masternode will have the provision to sign transactions if it's online, it might not receive any rewards for doing so.
Once the penalty period ends, an analysis is done to see if the Masternoder can re-enter or not. If the slashed Masternode succeeds in signing any transaction during the last epoch (signifying that it's up and running), it will regain its Masternode Status and begin receiving rewards as usual. If it fails again, the slashing mechanism will penalize it for the next 5 epochs. It will be a recurring situation for the node, as long as it isn't backed up, or eliminated out of the top 157 most voted candidates.
Another reason for facing the slash can be that the masternode might:
Not have installed the latest Wethio Software Have insufficient memory Have a breakdown due to lack of e-maintenance and lack of operation from the owner of Masternode
Upon visiting WethioMaster, you access a candidate's page and scroll down to the section of 'Masternode Rewards'. Now, find 'Sign number,' and 'Slashing history' under the Masternode Rewards section to assess between a performant and non-performant.
A masternode will be entitled to sign a maximum of 60 blocks per epoch. A performant Masternode will be the one that creates nearly 60 sign transactions in an epoch. The rewards are also calculated based on signed transaction numbers. We also calculate the reward based on sign transactions number.