Setup APTOS blockchain validator node (AIT-3) using Microsoft Azure

Setup Aptos blockchain validator node using Microsoft Azure and Ubuntu 20.04

What is Aptos Blockchain?

Aptos is a new Layer 1 blockchain with smart contract functions like Ethereum and Solana. It can be regarded as a sequel to the Meta (formerly Facebook) Libra (later renamed Diem) plan. After Diem was sold by Meta, some core members left and formed a team to develop the Aptos chain based on Diem’s open source code.

Aptos has received investments from top institutions such as a16z, FTX Ventures, Coinbase Ventures, and Binance Labs.

What are the characteristics of Aptos blockchain?

The biggest feature of Aptos is the adoption of a new development language Move, which was originally designed for the development of the Diem project, focusing on the security, scalability and upgradeability of the blockchain.

Since the launch of the testnet in March 2022, Aptos has undergone multiple rounds of testing, and the testnet has more than 20,000 validating nodes. The data shows that currently Aptos can process more than 10,000 transactions per second, and ideally, the public chain can process 160,000 transactions per second in the future.

Development progress of Aptos blockchain?

2022/08/20 Official Announcement, revealing details of Incentive Testnet 3 (AIT-3) registration, schedule and incentive criteria. According to the team, AIT-3 brings the last major delivery function of the mainnet: on-chain governance and upgrades. In order to reflect the real-world environment of the mainnet launch, the number of participants in AIT-3 will be compared to that of AIT-2, which is approximately 225 participants.

What are the benefits of participating in the Aptos testnet?

At present, users who meet the conditions of Aptos incentivized testnet 3 (AIT-3) will be rewarded with 800 Aptos tokens.

AIT-3 Incentive Conditions

All selected participants::

  • Access to the Aptos governance platform to register, stake and designate its operators (accounts associated with validators)
  • Deploy validator nodes on-chain and register
  • Join the validator set
  • Vote on 3 different governance proposals
  • Leaving the validator set late in AIT-3

Notes: Documentation on these topics is posted on this page.

Aptos stated that users who meet the following conditions will be rewarded with 800 Aptos tokens:

  • Complete all required goals on time
  • The node activity that satisfies the push data ≥ 95% under the indicator definition
  • Earned on-chain rewards ≥ 80% of max
  • Successfully participate in all governance operations created by Aptos

Additionally, the team will be offering two additional opportunities to earn 200 Aptos tokens for those users who use the open REST API to run validator full nodes for load testing and do everything.

It should be noted that due to regulatory concerns, any Aptos tokens can only be offered to non-US participants. Any rewards related to the incentivized testnet will only be offered after the mainnet has been successfully launched, and there will be a lock-up period of at least one year.

Reference:

https://www.blocktempo.com/aptos-incentivized-testnet-3/

https://www.grenade.tw/blog/what-is-aptos-blockchain/

Setup a validator node using Microsoft Azure cloud service

First, there are a few steps that need to be done before setting up a validator node.

  1. Make sure you have a Discord account and have joined the Aptos server. Important: You will be asked to connect a Discord account for AIT-3.
  2. Create an account (or log into your existing account) on the Aptos Community website.
  3. When prompted, provide your email address and username, and be sure to confirm your email.
  4. Follow the steps on this AIT-3 page to install and start a validator node, set the node to test mode, and provide validator details to the Aptos community. (This article details the installation steps)
  5. Download and install Petra Wallet and register your wallet address on the community website. (remove previous version of wallet)
  6. Pass the authentication and node verification process.

Aptos Official Settings Manual: https://aptos.dev/nodes/ait/steps-in-ait3

Reference:

https://mirror.xyz/jackmusk.eth/ALQAOZKj4l94tK37wu1vqEgaNLa0VsOpvEacEg8p1wQ

Log in to Microsoft Azure to create a virtual machine

https://azure.microsoft.com/zh-tw/get-started/azure-portal/

Create a virtual machine. The resource group, virtual machine name, and region are selected according to your preferences.

According to the node requirements of the official manual, the size is set to Standard_B8ms, the image selection is Ubuntu Server 20.04 LTS — Gen2 (18.04 is also available, here is 20.04), the authentication type is SSH public key is more secure (you can also use a password), the user name can be Arbitrary substitution.

Note: The following node configuration will incur a monthly fee of about $300 (AIT-3 only lasts until 9/9, so the fee may be less), please evaluate your own financial ability. If you use your own server, please refer to the node requirements settings. The following steps are using docker, so even changing the cloud platform is feasible.

Use ssh to connect, but we will do some firewall policy to restrict access.

The OS disk type can be selected as standard SSD, and the rest can be selected according to your own needs.

Since the data stored by the Aptos validator node is under the /opt/aptos folder, an additional data disk can be added here for storage. The following example will not use the data disk, but directly use azure-cli to expand the root partition.

The virtual network, subnet, and public IP can be configured by default, and the NIC network security group can be selected as advanced.

Select None for the load balance option, and leave the default.

The following settings are default options.

Finally check if the configuration is correct.

If you use the key connection method, you will be prompted to download the key. Create a folder named testnet and store it in your personal computer (do not share it with others).

Wait for the virtual machine deployment to complete.

Configure Azure Firewall Policy to connect to virtual machine

Select the network and prepare to modify the firewall rule default-allow-ssh in the red box.

You can query the public IP address of your personal computer, you can enter “My IP Address” in the browser to query. For example: the queried IPv4 is 123.123.123.123.

When setting default-allow-ssh, fill in the source IP address, the public IP address of your personal computer, for example, fill in 123.123.123.123, and set to allow only your personal computer to connect.

Choose Save.

As shown in the figure below, the black part varies according to the public IP address of your PC. The NIC public IP (in the red box) of the virtual machine is also different. In the example, it is 20.117.104.111. Please replace this with the NIC public IP of your azure virtual machine.

Use the key to connect to the azure virtual machine via ssh.

Open the terminal (console, or powershell if windows) on your personal computer, use the terminal to modify the permissions of the key and connect to the azure virtual machine.

*cd Desktop/testnet/ *(Go to the location where you store the ssh key, the example is the desktop)

chmod 400 aptos-testnet_key.cer

ssh -i aptos-testnet_key.cer azureuser@xxx.xxx.xxx.xxx

(replace xxx with your azure NIC public IP)

Connection succeeded

Validator node pre-environment preparation

Switch to root and update the ubuntu virtual machine.

sudo -i

apt update

Install network tools to view ports

apt install net-tools -y

Expand root partition disk space

Reference: https://learningsky.io/resizing-ubuntu-vm-root-disk-in-azure/

The default virtual machine root partition space created by azure is only 30G, as shown in the following figure. The above settings also do not add additional data disks, so we need to expand the root partition (/dev/root).

df -h

First switch to your personal computer, install the azure cli, and after the installation is complete, use the azure cli to log in.

az login

After entering, it will jump out of the webpage to log in

After successful login, the following screen will be displayed.

Return to the Azure web page, query the ubuntu virtual machine name, resource group, OS disk name, and stop (shut down) the virtual machine.

Go back to the azure cli of your personal computer and use the above information to expand the OS disk of the root partition of the ubuntu virtual machine.

az disk update --resource-group <resource group name> --name <OS disk name> --size-gb <disk size>

example:

az disk update --resource-group TESTNET --name aptos-testnet_OsDisk_1_4ef6cda5243546ceb9bf4b3fa922b984 --size-gb 512

As shown in the figure above, after the expansion is completed, 512GB is displayed, and you can use the azure cli to power on the virtual machine again.

az vm start --resource-group <resource group name> --name <computer name>

example:

az vm start --resource-group TESTNET --name aptos-testnet

Log into the ubuntu virtual machine again and check the OS disk space.

ssh -i aptos-testnet_key.cer azureuser@20.117.104.111

sudo -i

df -h

You can see that the root partition has been expanded.

Setup Aptos validator node

Step 1. Install docker according to the node requirements. Referring to the official steps of docker, it is recommended to copy the comman directly from the official manual to avoid format errors.

Install Dependency Package

sudo apt-get update

sudo apt-get install ca-certificates curl gnupg lsb-release

Setting docker repository

sudo mkdir -p /etc/apt/keyrings

# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg# echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Update docker repository and install docker-ce

sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

After the installation is complete, check the docker service is active(running)

systemctl status docker

Install Aptos CLI, the following is to use easy mode, put aptos under /bin.

Go to the git hub page,https://github.com/aptos-labs/aptos-core/releases?q=cli&expanded=true

Select aptos-cli-0.3.1-Ubuntu-x86_64.zip, right-click to copy the link URL.

Go back to the Ubuntu virtual machine, use wget to download the aptos cli and store it under /tmp.

cd /tmp

*wget *https://github.com/aptos-labs/aptos-core/releases/download/aptos-cli-v0.3.1/aptos-cli-0.3.1-Ubuntu-x86_64.zip

Install unzip tool

apt-get install unzip

Unzip the aptos cli installation package.

unzip /tmp/aptos-cli-0.3.1-Ubuntu-x86_64.zip

Move aptops to /bin.

mv /tmp/aptos /bin

Check the aptos permission is -rwx-r-x-r-x

ls -al /bin/ | grep aptos

Test the aptos cli command. The output as the following figure represents success.

aptos

Step 2. Install the aptos validator node, set the variables WORKSPACE and USERNAME, create a folder, and enter the WORKSPACE folder. Replace USERNAME with a name you like, and replace kiralee123 in the following example.

export WORKSPACE=testnetexport USERNAME=kiralee123mkdir ~/$WORKSPACEcd ~/$WORKSPACE

Step 3. Use wget to download docker-compose.yaml and validator.yaml

*wget https://raw.githubusercontent.com/aptos-labs/aptos-core/main/docker/compose/aptos-node/docker-compose.yamlwget *https://raw.githubusercontent.com/aptos-labs/aptos-core/main/docker/compose/aptos-node/validator.yaml

Step 4. Use aptos to generate the validator node private key, public key, and validator node configuration file. The four files generated are under ~/$WORKSPACE/keys.

aptos genesis generate-keys — output-dir ~/$WORKSPACE/keys

(Optional) Backup the private key, do not give the private key to anyone, otherwise the node will be hacked.

cp /root/testnet/keys/private-keys.yaml /tmp/

Change private key permissions (for easy backup)

Exit the ubuntu virtual machine

Go back to yoru personal computer and use the scp command to download the private key in the ubuntu virtual machine.

scp -i azureuser@xxx.xxx.xxx.xxx:/tmp/private-keys.yaml

Please replace <> with your own path, and replace xxx.xxx.xxx.xxx with the NIC public IP of your ubuntu virtual machine

example:

scp -i /Users/mac/Desktop/testnet/aptos-testnet_key.cer azureuser@20.117.104.111:/tmp/private-keys.yaml /Users/mac/Desktop/testnet/

At this point, there will be more private-keys.yaml in your personal computer.

aptos-testnet_key.cer is the connection key used to connect azure’s ubuntu virtual machine.

private-keys.yaml is the private key of the aptos validator node in the ubuntu virtual machine.

Both need to be carefully kept and not leaked.

Go back to the ubuntu virtual machine. Replace the following parameters by yourself

ssh -i aptos-testnet_key.cer azureuser@xxx.xxx.xxx.xxx

export WORKSPACE=testnet

export USERNAME=kiralee123

cd ~/$WORKSPACE

Step 5. Generate validator node profile using aptos cli. Replace xxx.xxx.xxx.xxx with the NIC public IP of the ubuntu virtual machine

# aptos genesis set-validator-configuration \
    --local-repository-dir ~/$WORKSPACE \
    --username $USERNAME \
    --owner-public-identity-file ~/$WORKSPACE/keys/public-keys.yaml \
    --validator-host xxx.xxx.xxx.xxx:6180 \
    --stake-amount 100000000000000

The above steps will generate two files under ~/$WORKSPACE/$USERNAME, owner.yaml, operator.yaml

Step 6. Generate the validator node layout.yaml through aptos

aptos genesis generate-layout-template --output-file ~/$WORKSPACE/layout.yaml

Edit the layout.taml file with vim.

vim layout.yaml

Press i to enter edit mode, root_key, use the root key written in the official manual

“D04470F43AB6AEAA4EB616B72128881EEF77346F2075FFE68E14BA7DEBD8095E”

Change users to your USERNAME.

chain_id改為43

example:

After editing, press ESC, and press :wq to save and leave.

Step 7. Use wget to download framework.mrb under ~/$WORKSPACE

wget https://github.com/aptos-labs/aptos-core/releases/download/aptos-framework-v0.3.0/framework.mrb -P ~/$WORKSPACE

Step 8. Generate genesis.blob and waypoint.txt through aptos compilation

aptos genesis generate-genesis --local-repository-dir ~/$WORKSPACE --output-dir ~/$WORKSPACE

Step 9. Refer to the official manual to check if there are these files under ~/$WORKSPACE.

Step 10. Use docker compose up to start the validator node in background mode.

docker compose up -d

Check the service port is successfully listening

netstat -tlnp

Requires ports 9101、6181、6180、80

Finally, go back to the azure page, open the firewall policy, and open 9101, 6181, 6180, and 80 ports to the outside world.

You’re done, the validator node is setup.

Please complete the follow-up, as mentioned at the beginning of the article. Perform validator node verification, wallet installation, and identity verification.

4.Follow the steps on this AIT-3 page to install and start a validator node, set the node to test mode, and provide validator details to the Aptos community. (This article details the installation steps)

5. Download and install Petra Wallet and register your wallet address on the community website. (remove previous version of wallet)

6. Pass the authentication and node verification process.

I wish you all the best of luck! ! !

Subscribe to kiralee.eth
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.