プロデューサーノードの設定を一部チェックするスクリプト

はじめに

本スクリプトは「カルダノステークプール構築手順」を基に構築されましたプロデューサーノードにおいて、設定4項目が正しいかをチェックするスクリプトです。

具体的にはCardano SPO’s JAPAN GUILD Discord内(※ギルドメンバーのみ閲覧可能)で共有されていました
「BPノードとしての起動確認」「登録VRFの確認」
をスクリプト化したものです。

※このスクリプトをパスしてもブロック生成する準備が完璧に整っているかはまだわからない点は要注意です。

使用方法

  1. 下記のスクリプトを任意の名前のshファイルで保存します。
    (※ここではbp-checker.shと命名したとします)
  2. bp-checker.sh をプロデューサーノードの任意のパスにコピーします
  3. chmod +x bp-checker.sh を実行し実行権限を付与します
  4. ./bp-checker.sh で実行します。

実行結果

全てOKの場合

$ ./bp-checker.sh
KES SKEY  [OK]
VRF KEY   [OK]
NODE CERT [OK]
只今 Cardanoネットワークに問い合わせ中です。
※本処理には20分ほどかかる場合があります(Ctrl+Cでキャンセル)
VRF HASH  [OK]

NGがある場合

$ ./bp-checker.sh
KES SKEY  [OK]
VRF KEY   [OK]
NODE CERT [NG] --shelley-operational-certificate /xxx/xxx/cardano-my-node/node.cert is unspecified
只今 Cardanoネットワークに問い合わせ中です。
※本処理には20分ほどかかる場合があります(Ctrl+Cでキャンセル)
VRF HASH  [NG]
QUERY =xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
VERIFI=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

スクリプト

#!/bin/bash

#############################################################################
# 本スクリプトはプロデューサーノードにて各種ファイルの指定が正しいかをチェックします
# スクリプトが原因で発生した一切の損害等に対し作成者は責任を負いません
# その為、使用は自己責任でお願いいたします。
# Author: bamboo[BAMBO] bamboo.pool.jp@gmail.com
#############################################################################

CNODE_HOME=${NODE_HOME}

OPT_KES_SKEY="--shelley-kes-key"
PATH_KES_SKEY="${CNODE_HOME}/kes.skey"
CORRECT_KES_SKEY="${OPT_KES_SKEY} ${PATH_KES_SKEY}"

OPT_VRF_KEY="--shelley-vrf-key"
PATH_VRF_KEY="${CNODE_HOME}/vrf.skey"
CORRECT_VRF_KEY="${OPT_VRF_KEY} ${PATH_VRF_KEY}"

OPT_OP_CERT="--shelley-operational-certificate"
PATH_OP_CERT="${CNODE_HOME}/node.cert"
CORRECT_OP_CERT="${OPT_OP_CERT} ${PATH_OP_CERT}"

CNODE_RUN_STATUS=`ps aux | grep cardano-node`


function printRED() {

	ESC=$(printf '\033')

	printf "${ESC}[31m%s${ESC}[m\n" "${1}"

}

function printGREEN() {

	ESC=$(printf '\033')

	printf "${ESC}[32m%s${ESC}[m\n" "${1}"

}


# kes.skeyチェック
if [[ "${CNODE_RUN_STATUS}" =~ ${CORRECT_KES_SKEY} ]]; then
    echo -n "KES SKEY  "; printGREEN "[OK]"
else
    echo -n "KES SKEY  "; printRED "[NG] ${CORRECT_KES_SKEY} is unspecified"
fi

# vrf.skeyチェック
if [[ "${CNODE_RUN_STATUS}" =~ "${CORRECT_VRF_KEY}" ]]; then
    echo -n "VRF KEY   "; printGREEN "[OK]"
else
    echo -n "VRF KEY   "; printRED "[NG] ${CORRECT_VRF_KEY} is unspecified"
fi

# node.certチェック
if [[ "${CNODE_RUN_STATUS}" =~ "${CORRECT_OP_CERT}" ]]; then
    echo -n "NODE CERT "; printGREEN "[OK]"
else
    echo -n "NODE CERT "; printRED "[NG] ${CORRECT_OP_CERT} is unspecified"
fi

# VRFハッシュチェック
SP_ID_PATH="${CNODE_HOME}/stakepoolid.txt"

if [ ! -e ${SP_ID_PATH} ]; then
    printRED "${SP_ID_PATH} が見つかりません"
    exit
fi
SP_ID=`cat ${SP_ID_PATH}`
echo "只今 Cardanoネットワークに問い合わせ中です。"
echo "※本処理には20分ほどかかる場合があります(Ctrl+Cでキャンセル)"
POOL_PARAM_VRF=`cardano-cli query pool-params --stake-pool-id ${SP_ID} --mainnet | jq '.poolParams.vrf' | sed 's/"//g' `
#POOL_PARAM_VRF=`cat poolParamQuery.json | jq '.poolParams.vrf' | sed 's/"//g' ` # TEST用

# vrf.vkey
VRF_HASH=`cardano-cli node key-hash-VRF --verification-key-file ${CNODE_HOME}/vrf.vkey`

if [ ${POOL_PARAM_VRF} = ${VRF_HASH} ]; then
    echo -n "VRF HASH  "; printGREEN "[OK]"
else
    echo -n "VRF HASH  "; printRED "[NG]"
    echo "QUERY =${POOL_PARAM_VRF}"
    echo "VERIFI=${VRF_HASH}"
fi

そのうちGitHubで管理予定

コメントする