# [AIT3] Aptos Validatorの構築方法

By [qyeah](https://paragraph.com/@qyeah) · 2022-08-21

---

1\. 目的
------

2022年8月に実施される、AptosにおいてAIT3 (報酬付きテストネット)でのValidatorの構築方法を記載します。

Validatorを建てて、テストネットに貢献するとAptosトークンでの報酬が付与されますので、ぜひ参加ください。

### 実施内容

*   Aptos Validatorの構築 <-------------- 今回の実施項目です
    
*   Petra Walletのインストール
    
*   Aptos Communityサイトに登録
    

### 日程

※ アメリカ西海岸時刻での記載です。日本との時差に注意してください

*   登録開始日：8月19日
    
*   登録終了日：8月25日
    
*   合格通知日：8月29日
    
*   テストネット開始：8月30日
    
*   テストネット終了：9月9日
    

2\. 要件
------

### 2-1. Hardware要件

*   **CPU**:
    
    *   8 cores, 16 threads以上
        
    *   2.8GHz以上
        
    *   Intel Xeon Skylakeより最新
        
*   **Memory** 32GB RAM以上
    
*   \*\*Storage \*\*300GB以上
    
*   **Network**
    
    *   帯域 : 1 Gbps以上
        
    *   Validator: 6180, 9101 (登録時のみでOK)ポートの開放
        
    *   FullNodeの場合: 6182, 9101 (登録時のみでOK), 80, 8080ポートの開放
        

Aptos公式のサイトより参照しています

[https://aptos.dev/nodes/ait/node-requirements/](https://aptos.dev/nodes/ait/node-requirements/)

### 2-2. 各種クラウド / VPSでの対応スペック

*   **AWS**
    
    *   c5.4xlarge
        
    *   c6i.4xlarge
        
*   **GCP**
    
    *   c2-standard-16
        
*   **Azure**
    
    *   Standard\_B8ms
        
*   **Contabo**
    
    *   Cloud VPS L
        
*   **Hetzner**
    
    *   CX51
        

3\. 導入方法
--------

### 3-1. 事前準備

サーバの準備が必要になります サーバスペックや、セキュリティルールについては今回の要件にあわせてください

Aptosでは、地理的な分散性やLayer1 for everyoneの実現のために、AIT1ではスキルベースではなく地理的な分散性以外では完全にランダムに選出されました。 今回のAIT3では過去のAITにおいて良い結果を出した一部の人の枠はありますが、それ以外の枠については引き続きランダム選出との話が出ています。 Aptosにおいて地理的な分散性は重要項目であるため、ぜひトライして分散化に協力してください。

**誰も建てない国や地域ででサーバを建てると選出されやすくなるため、ぜひトライしてみてください**

> AIT2における選出ノードの位置です ノードを構築する際に参考にしてください

![AIT2ノード位置](https://storage.googleapis.com/papyrus_images/b761c3d883e6f0fbb6a30ec6af0f1594f516872f81187bd3d72bdb1397246059.png)

AIT2ノード位置

> \*\*注記事項

\*\*AIT2の応募段階では、Aptos公式からアフリカ大陸でのNodeを希望するという要件が出ていましたが、現状のAptosのコンセンサスメカニズムにおいて、各ノード間の遅延がVoting powerの大きく影響するようです。

各ノード (アメリカやヨーロッパに集中している)からの地理的な距離が遠いNodeは、Voting powerが小さくなり、報酬付与要件を満たすのが困難な事象が発生しました。

今回のAIT3ではconsensus proposalやVotingに関する要件はないため、大きな問題はないと想定しますが、ご注意ください

### 3-2. Install方法

**3-2-1. エンジニアの人**

ぜひ、スキルアップ & Aptosの知識の取得のためにも、公式手順書でトライしてみてください

[https://aptos.dev/nodes/validator-node/validators](https://aptos.dev/nodes/validator-node/validators)

\*\* 3-2-2. 初心者の方\*\*

以前までは、簡易インストーラーを作成していましたが、AITに選出されてから困ることもあるため、今回は公式手順を順々に追って実施する方法を紹介します。

**3-2-2-1. サーバにログインする**

**3-2-2-2. Rootユーザ (特権ユーザ)になる**

    sudo su -
    
    cd &HOME
    

![](https://storage.googleapis.com/papyrus_images/7d600f2916ab976dae7ef1eb3813ea684f179c57151669852e006d22115cf933.png)

**3-2-2-3.パッケージのUpdateとインストール**

    sudo apt update -y
    
    sudo apt upgrade -y
    
    sudo apt install unzip -y
    

![](https://storage.googleapis.com/papyrus_images/8699c45befed107ac971cb46fe91f8292ed269902847fd39287a6559ca192d93.png)

**3-2-2-4. dockerのインストール**

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

![](https://storage.googleapis.com/papyrus_images/474df053cce2816831dc0b1bc568e11c4ec91eca052c7eb4d7824fe2c14745cc.png)

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
    

![](https://storage.googleapis.com/papyrus_images/29bf7bf0fa7e40f26f3ccd043ac3a533a128ff2b700b61f9f04a2d09b249d14b.png)

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

![](https://storage.googleapis.com/papyrus_images/c6da6308b84d895af6f3024a1154a98fceae9511a5d462e7e514b227f67c0015.png)

    sudo apt-get update
    

![](https://storage.googleapis.com/papyrus_images/44b62d77560e07adf98c836e82422c7aa127584e3f5c59caa8386709a126a4b8.png)

    sudo apt-get install docker-ce docker-ce-cli containerd.io -y
    

![](https://storage.googleapis.com/papyrus_images/08bbb23be00500260d8ff6dd3919b4e3971770bb07ba96a5c70c56820bf47d16.png)

    sudo mkdir -p ~/.docker/cli-plugins/
    

![](https://storage.googleapis.com/papyrus_images/b472b2ba31bf2f48c55a4524110e32eddbc9c782f8962a03a17d448c1cf6ccb1.png)

    sudo curl -SL https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
    

![](https://storage.googleapis.com/papyrus_images/d266438ec29f513cd855cbe7fff5d5446f7068f0f0f12fff59544afd1a66d1bc.png)

    sudo chmod +x ~/.docker/cli-plugins/docker-compose
    

![](https://storage.googleapis.com/papyrus_images/674c7d4d78d413403622561508fc31028eda4f8b9f97d885f16df579363ef053.png)

    sudo chown $USER /var/run/docker.sock
    

![](https://storage.googleapis.com/papyrus_images/1e9e9e5060f3482a2f3dbcbf7b6ec0f54a9c2c05760df35823730ec680f59d34.png)

**3-2-2-5. Aptos CLI v0.3.1のインストール**

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

![](https://storage.googleapis.com/papyrus_images/e52addc75b93bdd91d5f65f52286f282a4f0f5650dc02095d2a0828ff7dc2f43.png)

    sudo unzip -o aptos-cli.zip -d /usr/bin
    

![](https://storage.googleapis.com/papyrus_images/5bf4596e1ad676f15e7ac7a00b12c2bcdb95af87a90f0ffc6ac294182c1d3679.png)

    sudo chmod +x /usr/bin/aptos
    

![](https://storage.googleapis.com/papyrus_images/ab71cab3c7f67b3b661e47d2e28ba04771e500cebd0ee99994536aecb94c6672.png)

**3-2-2-6. Aptos Nodeのインストール**

    sudo mkdir -p ~/testnet  && cd ~/testnet
    
    sudo wget https://raw.githubusercontent.com/aptos-labs/aptos-core/main/docker/compose/aptos-node/docker-compose.yaml
    
    sudo wget https://raw.githubusercontent.com/aptos-labs/aptos-core/main/docker/compose/aptos-node/validator.yaml
    

![](https://storage.googleapis.com/papyrus_images/a650accd74e3f1d8c0da1c94c041dd709c76458bee95dbc3983963f7f9478f1c.png)

Keyの作成

    aptos genesis generate-keys --output-dir ~/testnet/keys
    

![](https://storage.googleapis.com/papyrus_images/4899c774f8a865f060ecaf245d68505dc6d920ab358b41dc2c7123d3e2fd738f.png)

Validator設定ファイルの作成

    # テンプレート
    aptos genesis set-validator-configuration \
        --local-repository-dir ~/testnet \
        --username <ユーザ名> \
        --owner-public-identity-file ~/testnet/keys/public-keys.yaml \
        --validator-host <クラウド・VPSで契約したサーバのIP>:6180 \
        --stake-amount 100000000000000
    
    # 例
    aptos genesis set-validator-configuration \
        --local-repository-dir ~/testnet \
        --username aptosjapan \
        --owner-public-identity-file ~/testnet/keys/public-keys.yaml \
        --validator-host 18.183.24.1:6180 \
        --stake-amount 100000000000000
    

> **■<ユーザ名>** 好きな名前を設定してください。日本語は不可です。 アルファベットと数字のみ使用可能です

\*\*■<クラウド・VPSで契約したサーバのIP> \*\*サーバにログインした際のIPです

![](https://storage.googleapis.com/papyrus_images/4e73aec421d9a36093df667a1d9407f1efdaa1ca62371b1080d2dbb36b972f7a.png)

Validator Setファイルの作成

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

![](https://storage.googleapis.com/papyrus_images/2476d6f9b9d730959a007629ae0edb9e2ac47c9535f89f57fed2006ad453eedb.png)

Validator Setファイルの編集

    sed -e 's/root_key: ~/root_key: "D04470F43AB6AEAA4EB616B72128881EEF77346F2075FFE68E14BA7DEBD8095E"/g' -i ~/testnet/layout.yaml
    
    sed -e 's/chain_id: 4/chain_id: 43/g' -i ~/testnet/layout.yaml
    
    # テンプレート
    sed -e 's/users: \[\]/users: \["<ユーザ名>"\]/g' -i ~/testnet/layout.yaml
    
    # 例
    sed -e 's/users: \[\]/users: \["aptosjapan"\]/g' -i ~/testnet/layout.yaml
    

> ■<ユーザ名> 先ほどの「Validator設定ファイルの作成」で設定したユーザ名と同じ名前にしてください

![](https://storage.googleapis.com/papyrus_images/a37f75def082ec9d31f7fe008fbf2ad163cb613c966cc6df1f913048ed532fd0.png)

Aptos Frameworkのダウンロード

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

![](https://storage.googleapis.com/papyrus_images/8ffb672d5976592b2702a7b5e29c7b0a93bdab1faf0625984d19d68072abb53a.png)

Genesis blobとwaypointのコンパイル

    aptos genesis generate-genesis --local-repository-dir ~/testnet --output-dir ~/testnet
    

![](https://storage.googleapis.com/papyrus_images/f480050b0dbbb1e31dbe8b132af3e8ca28faedbe7ee71c878e06667bb56572ca.png)

Aptos Nodeの起動

    docker compose up -d
    

![](https://storage.googleapis.com/papyrus_images/27c9a269425b312137bab9eeb06b5f4e6fe81a9c015b905c17d6fd0acba08ef4.png)

**3-2-2-7. 起動後の確認**

Aptos Nodeが起動しているか確認

![](https://storage.googleapis.com/papyrus_images/cee3d50c55935de590164993ed82e1dda07b93c28023903ce6f918819d8bef2b.png)

    curl 127.0.0.1:9101/metrics 2> /dev/null | grep aptos_consensus_proposals_count
    

上記コマンドを複数回実行して、数値がカウントアップしていることを確認

![](https://storage.googleapis.com/papyrus_images/5cfeb5ccf0ebda049db2eaaa50f2dfaa3b49c052acc0b5e9f030dcd01608b877.png)

    curl 127.0.0.1:9101/metrics 2> /dev/null | grep aptos_state_sync_version{type=\"synced\"}
    

上記コマンドを複数回実行して、数値がカウントアップしていることを確認

![](https://storage.googleapis.com/papyrus_images/557d68c2ab7e39286e0140380b86d7beddb7fcd7f39628bf5582536fbf750794.png)

**3-2-2-8. 登録に必要な情報の確認**

    # テンプレート
    cat ~/testnet/<ユーザ名>/operator.yaml
    
    # 例
    cat ~/testnet/aptosjapan/operator.yaml
    

> ■<ユーザ名> 先ほどの「Validator設定ファイルの作成」で設定したユーザ名と同じ名前にしてください

![](https://storage.googleapis.com/papyrus_images/da980abc70688b71ebf290e44fe8824675abefa3af40318c40c797e5eafb4924.png)

### 実施内容

*   Aptos Validatorの構築
    
*   Petra Walletのインストール <-------------- 次の実施項目です
    
*   Aptos Communityサイトに登録

---

*Originally published on [qyeah](https://paragraph.com/@qyeah/ait3-aptos-validator)*
