How to Become a Validator on MAP Protocol | Tutorial

✍️ Authors: Hank the Crank & Maffaz

In MAP Protocol, Validator is the foundation of the MAP Relay Chain, shouldering the responsibility of ensuring the integrity of the network. Wondering how to become a validator in the network? Here’s your step-by-step guide.

📌 Requirements

  • 🧱 Server with 16 GB of Ram, a Quad core 2.5 GHz (64-bit) CPU, 256GB SSD, and a 100Mb/s Ethernet connection w/ fiber Internet (ideally redundant connection and HA switches)
  • 💻 Ubuntu 20.04 LTS
  • 💰Your account needs to have at least 1,000,000 MAP

🌟 Let’s begin with some basic security check-ups

⏰ All checked? Now let’s install some prerequisites

Log in through ssh and/or (switch to) map user

su - username

Switch to root

sudo su

Go home

cd /home

Install Git

apt-get install git

Install gcc

apt install gcc

Install make

apt install make

Download Go language and do checksum (find latest version at https://go.dev/dl/)

curl -OL https://go.dev/dl/go1.19.linux-amd64.tar.gz

Untar

tar -C /usr/local -xvf go1.19.linux-amd64.tar.gz

Remove the tar

rm go1.19.linux-amd64.tar.gz

Set permanent path in profile

nano ~/.profile

Add the following lines at the end of the file

export PATH=$PATH:/usr/local/go/bin
export GOROOT=/usr/local/go
export GOPATH=$HOME
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH

CTRL-X to quit, press Y and ENTER to confirm

Refresh profile

source ~/.profile

Clone atlas

git clone https://github.com/mapprotocol/atlas.git && cd atlas

Make atlas

make atlas

Make marker

make marker

⭕️ IMPORTANT ⭕️ Run atlas/marker only inside the /atlas/build/bin folder

cd /home/atlas/build/bin

Create keystore

./atlas account new --datadir ./node

🚫 DO NOT FORGET TO STORE THE INFORMATION IN A SAFE PLACE!

Address, PublicKey, BLS Public Key, BLS G1 Public Key, BLSProofOfPossession and Path of the secret key file

Create a second keystore

./atlas account new --datadir ./node

📌 Again, do not forget to save the info!

💡NOTE

  • You need 1M+ Locked $MAP to register a validator and a little bit for gas fees to create an account on the blockchain.
  • To know how to obtain MAP Tokens via Metamask, follow this guide👇
  • 💡Put 1M $MAP into the first keystore (validator) and 100 $MAP into the second one (signer)

Create validator account

./marker createAccount --rpcaddr http://poc3-rpc.maplabs.io --keystore ./node/keystore/UTC--2022-keystorepath--andfilename --password "yourpasshere" --namePrefix "validator"

You should see something like this

Creating an account using marker

We have to authorize the signer to unlock the validator keystore. You are going to need the private key of the signer keystore. One way of getting it is through Metamask.

It will also need some $MAP for transactions. You should be able to transfer between the two on Metamask or use marker.

Authorize the signer

./marker authorizeValidatorSigner --rpcaddr http://poc3-rpc.maplabs.io --keystore ./node/keystore/UTC--2022-validatorkeystorepath--andfilename --password "yourpasshere" --signerPriv (signerprivatekeyhere)

🌟 Now you should be ready to lock MAP and register the validator

🔒 Let’s first lock the 1M MAP

./marker lockedMAP --rpcaddr http://poc3-rpc.maplabs.io --keystore ./node/keystore/UTC--2022-validatorkeystorepath--andfilename password “password” --lockedNum 1000000

🎊 Then register the validator

./marker register --rpcaddr http://poc3-rpc.maplabs.io --keystore ./node/keystore/UTC--2022-validatorkeystorepath--andfilename password “password” --signerPriv (signerprivatekeyhere) --commission 50000

The result should be something like this

Registering as a validator

Registering as a validator

💡 If you want to know more about what you can do with marker, please take a look at the following article.

Voting

Voting is where we ‘stake’ our map to a validator to enable to earn rewards and participate in consensus. Once $MAP is locked, it is available for voting (staking). Validators must have at least 0.001 proportion of the total votes to be considered for the election (divide by 1000), so the validator can’t have 0 votes.
We can use our validator account to vote for ourselves, or we can let other validators or voters vote for ourselves.
Once MAP is allocated as votes to a validator, the votes will be automatically activated at the next epoch.

Cast votes

./marker vote --voteNum 100 --signerPriv signerprivatekeyhere --validator 0xvalidatoraddress --rpcaddr poc3-rpc.maplabs.io --keystore ./node/keystore/UTC--2022-keystorepath--andfilename --password "yourpasshere"

Manually activate votes

./marker activate --validator 0xvalidatoraddress --rpcaddr poc3-rpc.maplabs.io --keystore ./node/keystore/UTC--2022-keystorepath--andfilename --password "yourpasshere"

To run the node we have to put the password for the signer in a plain text file.

Create keypass

nano ./node/keypass

📌 If you were to run the node right now (not recommended), you would have to leave the terminal open. Then you’d have to exit out with CTRL-C or x out of the terminal and get errors.

This is how you start the node manually (don’t do this):

./atlas --password ./node/keypass --datadir /home --syncmode full --v5disc --port 30321 --mine --miner.validator 0xsigneraddresshere --unlock 0xsigneraddresshere

You’ll see something like this

Running a validator node

Running a validator node

We want to make sure the node is always running. To do this we will create a service that runs it automatically and persistently.

Open a new terminal and create atlasNode.service

cat<<-EOF > /etc/systemd/system/atlasNode.service
[Unit]
Description=atlasNode daemon
After=network-online.target
[Service]Type=simple
Restart=always
RestartSec=1
WorkingDirectory=/home
ExecStart=/home/atlas/build/bin/atlas --password /home/atlas/build/bin/node/keypass --datadir /home --syncmode full --v5disc --port 30321 --mine --miner.validator 0xsigneraddresshere --unlock 0xsigneraddresshere
SyslogIdentifier=atlasNode
StartLimitInterval=0
LimitNOFILE=65536
LimitNPROC=65536[Install]
WantedBy=multi-user.target
EOF

Give permissions and start the service

sudo chmod 644 /etc/systemd/system/atlasNode.service
sudo systemctl enable atlasNode.service
sudo service atlasNode start
sudo service atlasNode status

All that’s left is waiting for the DB to sync and the next epoch to get elected and then sign as a validator. Check the log as follows:

tail -f /var/log/syslog | grep Finalized

If it shows ‘Finalized’ in the logs, you’re signing.

🎉 Now congratulations! You have just become a MAP validator!

About MAP Protocol

MAP Protocol is the omnichain layer for Web3 with fully secure cross-chain communication built on Light-client and zk-SNARK technology. MAP provides the cross-chain infrastructure to public chains and dApps by connecting both EVM with non-EVM chains. Developers can access a full suite of SDKs so their dApps can easily become omnichain applications.

Litebook | Website | Twitter | Medium | Telegram | GitHub | LinkedIn

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
MAP Protocol 💙MAPO

MAP Protocol 💙MAPO

4.3K Followers

Omnichain layer for Web3 with provably secure cross-chain communication built on Light-client & ZK technology.