コンテンツにスキップ

Midnight-node用サーバ構築

本ドキュメントは、Midnightバリデーターサーバで行うMidnight-node用サーバ構築とSPOバリデータ登録の手順です。

事前準備

ローカル環境での事前準備

SSH接続でログインする場合は、事前にローカル環境でSSH認証キーを作成してください。

1. 管理者モードでターミナルを起動します。

Win + X を押下し、ターミナル(管理者)を選択し、SSHクライアントの有無を確認します。

Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH.Client*'

State : Installedであれば問題ありません。

State : NotPresentの場合

以下のコマンドで追加してください。

Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

2. SSH鍵生成

mkdir ~/.ssh -Force
ssh-keygen -t ed25519 -N "" -C "ssh_connect" -f ~/.ssh/ssh_ed25519

3. 公開鍵ファイル名の変更

cd ~/.ssh
mv ssh_ed25519.pub authorized_keys

1. ターミナルを起動します。

⌘ + Space(Command + Space)を押下し、「terminal」と入力し、Enterを押下します。

2. SSH鍵生成

mkdir -p ~/.ssh
ssh-keygen -t ed25519 -N "" -C "ssh_connect" -f ~/.ssh/ssh_ed25519

3. 公開鍵ファイル名の変更

cd ~/.ssh
mv ssh_ed25519.pub authorized_keys

注意

以下の鍵は絶対に紛失しないでください。
紛失するとサーバーへ接続できなくなります。

ssh_ed25519 (秘密鍵)
authorized_keys (公開鍵)

サーバーでの事前準備

日常運用ではrootアカウントを使用せず、sudo権限を付与した一般ユーザーで操作します。

新しいユーザーを作成します。

任意のアルファベット文字を入力してください。
この例ではcardano ユーザーとして以降進めます。

adduser cardano
New password:           # パスワードを設定
Retype new password:    # 確認のため再入力

Enter the new value, or press ENTER for the default
        Full Name []:   # フルネーム等の情報を設定(不要であればブランクでも問題ありません)
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n] : y

cardanoにsudo権限を付与します。

usermod -aG sudo cardano

rootからログアウトします。

exit

ヒント

ターミナルソフトのユーザー名とパスワードを上記で作成したユーザー名とパスワードに書き換えて再接続します。

1. SPOKIT導入設定

1-1. 初期設定

パスワード入力について

管理者権限パスワードを求められた場合は、ユーザー作成時に設定したパスワードを入力してください。

SPOKITを導入しUbuntuセキュリティ設定のみを行います。

wget -qO- https://spokit.spojapanguild.net/install.sh | bash

セットアップノードタイプ(リレー)を選択して Enter

接続ネットワーク (Preview-Testnet) を選択して Enter

作業ディレクトリパス指定 そのまま Enter

セットアップ内容に問題なければ Enter

環境設定読み込み
赤枠に表示されているコマンドをコピーして実行

1-2. Ubuntuセキュリティ設定

Ubuntuセキュリティ設定モードについて

このモードでは、Cardanoノード実行に推奨されるUbuntuセキュリティ設定が含まれています。
4~9については選択制となっておりますので、環境に応じて設定してください。

実行コマンド
spokit ubuntu

Ubuntuセキュリティ設定ウィザート
1~4は自動インストール・有効化されます。

はい を選択して Enter

chronyインストール・設定

システム時刻を正確かつ安定して同期するための時刻同期デーモンです。

はい を選択して Enter

SSH設定

リモートサーバを安全に操作・管理するための通信プロトコル

SSH鍵認証用のauthorized_keysファイルをローカルからサーバーに転送する写真を追加し、差し替え予定

はい を選択して Enter

rootログイン可否設定

SSHポート設定

セキュリティを高めるためにはポート番号を変更してください

ランダムな番号を割り当てるかカスタムで任意の番号を指定してください

Ubuntu内部ファイアウォールを使用する場合は、はい を選択して Enter

↓ここの注意事項をよく読んでください

不要なディレクトリを削除する

rm -rf $HOME/cnode

2. midnight-nodeインストール

2-1. 環境変数設定

設定

grep -q '^export MIDNIGHT_NETWORK=' "$HOME/.bashrc" || printf '\nexport MIDNIGHT_NETWORK=testnet-02\n' >> "$HOME/.bashrc"
source "$HOME/.bashrc"

2-2. midnight-nodeダウンロード

mkdir -p $HOME/midnight
cd $HOME/midnight
wget -q --show-progress https://spojapanguild.net/node_config/midnight/${MIDNIGHT_NETWORK}/midnight-node0.12.0.gz

midnight-node解凍

gunzip -c midnight-node0.12.0.gz > midnight-node && rm midnight-node0.12.0.gz

chmod +x midnight-node
sudo cp midnight-node /usr/local/bin/midnight-node

バージョン確認

midnight-node --version

midnight-node 0.12.0

設定ファイルダウンロード

cd $HOME/midnight
wget -q --show-progress https://spojapanguild.net/node_config/midnight/${MIDNIGHT_NETWORK}/pc-chain-config.json -O ${MIDNIGHT_NETWORK}-pc-chain-config.json
wget -q --show-progress https://spojapanguild.net/node_config/midnight/${MIDNIGHT_NETWORK}/chain-spec.json -O ${MIDNIGHT_NETWORK}-chain-spec.json
wget -q --show-progress https://spojapanguild.net/node_config/midnight/${MIDNIGHT_NETWORK}/addresses.json -O ${MIDNIGHT_NETWORK}-addresses.json

ファイル転送

以下のファイルをエアギャップの$HOME/midnightディレクトリにコピーします。

graph LR
    A[Preview テストネット] -->|**midnight-node**| B[エアギャップ];

grep -q '^export MIDNIGHT_NETWORK=' "$HOME/.bashrc" || printf '\nexport MIDNIGHT_NETWORK=testnet-02\n' >> "$HOME/.bashrc"
source "$HOME/.bashrc"

mkdir -p $HOME/midnight
cd $HOME/midnight
chmod +x midnight-node
sudo cp midnight-node /usr/local/bin/midnight-node
midnight-node --version

midnight-node 0.12.0

3.パートナーチェーンキー生成

cd $HOME/midnight
CFG_PRESET=${MIDNIGHT_NETWORK} midnight-node wizards generate-keys
キー保存パス指定でそのまま Enter
ウィザード表示
This 🧙 wizard will generate the following keys and save them to your node's keystore:
→  an ECDSA Cross-chain key
→  an ED25519 Grandpa key
→  an SR25519 Aura key
It will also generate a network key for your node if needed.

? node base path (./data) ←ここでEnter

$HOME/midnight配下に./dataが作成されます

キーファイル構成
data/
└── chains
    └── undeployed
        ├── keystore
           ├── 6175728281... # sidechain key
           ├── 63726367cd... # aura key
           └── 677a322ca6... # grandpa key
        └── network
            └── secret_ed25519 # network (node) key

キーフォルダ名変更

mv ./data/chains/undeployed/ ./data/chains/partner_chains_template

4. バリデーター登録

4-1. エンタープライズアドレス作成

cd $NODE_HOME
cardano-cli conway address build \
    $NODE_NETWORK \
    --payment-verification-key-file payment.vkey \
    --out-file $HOME/midnight/midnight-payment.addr

ファイル転送

エアギャップから以下をサーバーの$HOME/midnightにコピーします。

  • data
  • midnight-payment.addr
  • partner-chains-public-keys.json

    $HOME/midnight/

  • payment.skey

    $NODE_HOME

tADA FaucetからtADAを以下のエンタープライズアドレスに送金します。

cd $HOME/midnight
echo $(cat midnight-payment.addr)

入金を確認します。

cardano-cli conway query utxo \
    --address $(cat $HOME/midnight/midnight-payment.addr) \
    $NODE_NETWORK \
    --output-text

戻り値
                           TxHash                                 TxIx        Amount
--------------------------------------------------------------------------------------
731a0f97f31aacdd10b7345065bf05a79194a72184c4a3a7d922913da4554714     0        10000000000 lovelace + TxOutDatumNone

$HOME/cold-keysディレクトリのロック解除

chmod u+rwx $HOME/cold-keys

ヒント

3つの登録ウィザードが表示されますのでそれぞれ入力します。

4-2. 登録ウィザード1

cd $HOME/midnight
CFG_PRESET=${MIDNIGHT_NETWORK} midnight-node wizards register1

Ogmios protocolでは、 https を選択して Enter

  http
> https

Ogmios hostnameでは、以下のエンドポイントを入力して Enter

ogmios.${MIDNIGHT_NETWORK}.midnight.network

Ogmios portでは、 443 を入力して Enter

443

payment.vkeyのPATHを入力して Enter

$NODE_HOME/payment.vkey

UTxOの選択ではそのまま Enter

戻り値(register2コマンド)をすべて Copy します。

4-3. 登録ウィザード2

コピーしたコマンドを貼り付けて Enter

node.skeyのPATHを入力して Enter

$HOME/cold-keys/node.skey

戻り値(register3コマンド)をすべて Copy します。

4-4. 登録ウィザード3

コピーしたコマンドを貼り付けて Enter

payment.skeyのPATHを入力して Enter

$NODE_HOME/payment.skey

Ogmios protocolでは https を選択して Enter

  http
> https

Ogmios hostnameでは以下のエンドポイントを入力して Enter

ogmios.${MIDNIGHT_NETWORK}.midnight.network

Ogmios portでは 443 を入力して Enter

443

Show registration status?(Y/n)が表示されたら n を入力後 Enter

$HOME/cold-keysディレクトリのロック

chmod a-rwx $HOME/cold-keys

5. オンチェーン登録確認

エポック確認

全てコピーして実行してください
NEXT_EPOCH=$(curl -s -L -X POST -H "Content-Type: application/json" -d '{
  "jsonrpc": "2.0",
  "method": "sidechain_getStatus",
  "params": [],
  "id": 1
}' https://rpc.${MIDNIGHT_NETWORK}.midnight.network \
| jq '.result.mainchain.epoch + 2')
echo $NEXT_EPOCH

登録確認

全てコピーして実行してください
SIDECHAIN_KEY=$(jq -r '.sidechain_pub_key' ${HOME}/midnight/partner-chains-public-keys.json)

curl -s -L -X POST -H "Content-Type: application/json" -d "{
  \"jsonrpc\": \"2.0\",
  \"method\": \"sidechain_getAriadneParameters\",
  \"params\": [$NEXT_EPOCH],
  \"id\": 1
}" https://rpc.${MIDNIGHT_NETWORK}.midnight.network \
| jq --arg key "$SIDECHAIN_KEY" '
  .result.candidateRegistrations
  | to_entries[]
  | . as $e
  | $e.value[]
  | select(.sidechainPubKey == $key)
  | {
      mainchainPubKey: $e.key,
      sidechainPubKey,
      auraPubKey,
      grandpaPubKey,
      stakeDelegation,
      isValid
    }
'

登録完了!

戻り値
{
    ~  チェーンキー表示省略  ~
  "isValid": true
}

isvaild:falseと表示されている場合の確認事項

登録完了直後にisVaild:falseと表示されている場合は以下のことを確認してください。

  • カルダノステークプールの有効ステーク(Active Stake)
    SPOKITの場合spokit > 「プール情報管理」> 「ブロック生成状態チェック」> 有効ステーク値
    Cardanoscanの場合: 自身のPoolIDを検索し、Active Stakeの値確認

  • ActiveStake反映タイミング (n + 2エポック)
    反映待機期間:Previewテストネット約2日、メインネット約10日後に反映します。