Klayr validator nodeの建て方

この記事はKlayr Discordの皆様にかなり助けられてまとめることができました。

https://klayr.xyz/documentation/klayr-core/setup/npm.html

参考URL
sudo apt update
sudo apt install -y libtool automake autoconf curl build-essential python2-minimal

node version manager(nvm)をインストール↓↓

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

ターミナルを一度閉じて、再度開くとnvmが使えるようになる。
nvmがインストールできたことを確認↓↓

nvm -v
#結果 0.39.7

nvmを使ってnode.js(version18)をインストール↓↓

nvm install 18

ポート番号7667、7887を開放する↓↓

ufw allow 7667
ufw allow 7887

Klayr Coreをインストール↓↓

npm install --global klayr-core

「?」が表示されてあれ?となるが少し待つとインストールが始まる。

~/.klayr/klayr-core/config/config.jsonのrpc部分を編集する(#はコメント)。

nano ~/.klayr/kalyr-core/config/config.json #nanoでconfigファイルを開く
#rpc部分を下記のように編集
"rpc": {
        "modes": ["ipc", "ws"],
        "port": 7887,
        "host": "127.0.0.1",
        "allowedMethods": ["*"]

nanoを閉じるときは、Ctr+Xを押すと上書きするか確認されるのでy+Enterで上書き保存。

node起動

mainnetの場合

nodeを起動↓↓

klayr-core start --network mainnet

エラーが出力されることがあるが一時的なもので裏で処理は進んでいる↓↓
(処理は進んでいるのでterminalは放置)

[error=Apply penalty and restart synchronization mechanism with reason: Peer didn't return any block after requesting blocks reason=Peer didn't return any block after requesting blocks] Applying penalty and restarting synchronization

処理が進んでいることを確認したい場合は、下記コマンドを複数回実行し、heightの項目の数値が増えていくことを確認すればよい↓↓
(別のterminalを起動してコマンド入力)

klayr-core system node-info

testnetの場合

nodeを起動↓↓

klayr-core start --network testnet

ログが表示されてheightが増えていくのが確認できる。

PM2でnodeをbackground起動する

通常起動ではterminalを閉じてしまうとnodeが止まるので、terminalを閉じてもnodeが止まらないようにPM2を用いてnodeを起動する。

Ctr+Cでnodeを一旦停止。
pm2をインストール↓↓

npm install pm2 -g

node起動用のjsonファイルを作成↓↓

nano klayr-start.json #jsonファイルを新しく作成
{
  "name": "klayr-core",
  "script": "klayr-core start -n mainnet" #テストネットの場合はtestnet
}

Ctr+X⇒y+Enterで保存。

node起動用スクリプト(klayr-start.json)をpm2で起動↓↓

pm2 start klayr-start.json

nodeが起動できていることをheightの更新で確認↓↓

klayr-core system node-info

Validator登録

https://klayr.xyz/documentation/run-blockchain/become-a-validator.html

参考URL

validator keysの作成(2024年以前に作ったウォレットアドレスの場合)

klayr-coreディレクトリに移動

cd .klayr/klayr-core

klayr-coreディレクトリにて下記を実行

klayr-core keys:create --output config/keys.json --add-legacy

「passphrase」はKlayr Walletのmnemonic phrase(ニーモニックフレーズ)を入力。
「password」は任意のパスワードを入力。

~/.klayr/klayr-core/config/keys.jsonが作成されるので、keys.json内の"address"が自身のKlayr Walletのアドレスと一致していることを確認する。

transactionの作成(2024年以前に作ったウォレットアドレスの場合)

klayr-core transaction:create pos registerValidator 1100000000 -k=legacy \
--params='{"name":"myuniqueame","generatorKey":"aaecd278a3fadc40a4a824d6f4aa24547d8fb9d075ec4d6967a7084f9a3f2541","blsKey":"815a9e7643cf2bace98d1337f1dca8e39949592cd3fcb79bf3ab5784981468b9987b3340527bc9ca263a2fd061812024","proofOfPossession":"add8669bb57f3dceec04dc0f875906cb52a677f1df911536c01f447c8830bf27cd43713af18d84de5a64ec504aeaf9a30521c09438bb5a4d5fd634946c65e0fc4ea3681fdb4f6949cb6c1bc1ac1ddec3df058a13466af5a13d50737938fd7d5f"}'

"name": 任意
その他の項目は~/.klayr/klayr-core/config/keys.json内を参照する。

passphraseを求められるので、Klayr Walletのmnemonic phraseを入力。

下記のような出力がされるので"transaction"をコピーしておく。

{"transaction":"xxxxxxxxxxxxxxx #この文字列をコピーしておく xxxxxxxxxxxxxxxxx"}

transactionを送信する

nodeのblockheightが最新まで同期されるのを待つ。
testnetで最新ブロックまで同期が完了していない状態でtransactionをsendしようとするとError: Insufficient balanceというエラーが出た。これは、自身のKlayr Wallet(testnet)にKLYトークンが入金されたというtransactionが含まれるblockまで同期が進んでいなかったために、Insufficient balance(transaction手数料が不足しています)というエラーが出たと解釈。

transactionを送信(send)↓↓

klayr-core transaction:send 0805100018032080d6c28c042a20bad983c72bed43fd274f852658c298b74c71ab6fc50508879fef309e3836384b32080a066d796e616d653a4045afdd04d0c0bc6e548c0915d5fabef1311b1b75b1eb919a43b88dab539e7b6a99b9075f5d6382ec3bbebfca3301651a15d8af3f999d5b6fa7873b3969cd3d0c

send以降は先にコピーしておいたtransactionをペーストする。

transaction idが返ってこれば成功。

nodeにvalidator keysをインポートする

config/keys.json の直上のディレクトリに移動し、下記コードを実行。

klayr-core keys:import --file-path config/keys.json

リワード受け取りアドレスの設定

klayr-core endpoint:invoke random_setHashOnion '{"address":"klyqaxxmj78frvgpjgwvf4yqjjkcrr9yhn2sxxwm3"}'

アドレスは自身のアドレスを入力すること。

ブロック生成を可能にする

klayr-core generator:enable klyqaxxmj78frvgpjgwvf4yqjjkcrr9yhn2sxxwm3 --height=0 --max-height-generated=0 --max-height-prevoted=0

アドレスは自身のアドレスを入力すること。

passwordを聞かれるのでvalidator keysの作成で決めたpasswordを入力。

以下のように返ってきた場合(私の場合)でも、nodeのレスポンスが遅いだけで正常にブロック生成が可能になっている場合がある。

Error: Response not received in 10000ms

正常にブロック生成が可能になっているかの確認↓↓

klayr-core generator status

trueが返ってこればブロック生成が可能になっています。
trueの場合はお疲れ様でした。validator nodeが正常に稼働しました。

が、私は以下のような出力で、ダメでした。

{"info":{"status":[]}}

ということでさらに以下のコマンドを入力。

klayr-core endpoint:invoke generator_setStatus '{"address":"klyxxxx","height":0,"maxHeightGenerated":0,"maxHeightPrevoted":0}'
klayr-core generator:enable klyxxxx --use-status-value

klyxxxxは自身のアドレスを入力。

すると、以下のように返ってきた(ブロック生成が可能になった)。

Enabled block generation for klyxxxx

以下で確認しても"true"が返ってくるようになった。

klayr-core generator status

以上でvalidator nodeは稼働完了。

あとは、Klayr Walletから1000KLY以上validatorにstakeすればOK!
(Klayr Walletでvalidator検索したらこんな風に見えます↓↓)

この記事が気に入ったらサポートをしてみませんか?