【Jaguar's Blog 8】Shoestringを用いたローカルビルド
この記事は12月30日にNEM/Symgolのコア開発者Jaguar氏によって投稿された記事「Shoestring Local Build」をChatGPTを用いて翻訳したものです。
Symbol Shoestring は Symbol Bootstrap の後継です。新しいノードのデプロイには Shoestring の使用を強くお勧めします。Bootstrap はサポートされなくなり、将来的には動作しなくなる可能性があります。
Shoestring を使用すると、テストネットまたはメインネットノードを簡単にデプロイできます。しかし、Shoestring をローカルでビルドした Catapult クライアントとどのように使用するかは、あまり文書化されていません。このガイドでは、ソースコードからビルドされた Catapult を使用して、テストネットに接続するように Shoestring を実行します。これは開発に非常に便利です。
このガイドは、ビルド手順に従ってすでにローカルマシンにCatapultをビルドしていることを前提としています。
Step 1 - CA Keyの準備
各ノードには、ルート証明書を署名しノードを識別するために使用されるメイン(またはCA)の秘密キーが必要です。このアイデンティティはネットワーク全体で一意である必要があります。このメインアカウントに関連する残高は、ノードがピアとして選択される可能性や、時間同期などの特定の操作での重みづけに影響します。直感的には、残高が大きいノードは、ネットワークにより多くの投資をしているため、信頼性が高い可能性が高いと考えられます。
ただし、ノードには残高の要件はありません。残高が低いノードと残高が高いノードの唯一の違いは、特定の操作の選択の可能性です。それ以外の点では、彼らはまったく同じように振る舞います。実際、この違いは彼らにとって完全に外部のものです。
ShoestringはCAの秘密キーがPEMファイルに存在することを期待しています。setupディレクトリを作成し、CAの秘密キーを準備しましょう。
mkdir setup && cd setup
opensslを使用して新しい(ランダムな)CAの秘密キーを簡単に生成できます:
openssl genpkey -algorithm ed25519 -outform PEM -out ca.key.pem
または、既存の秘密キーからShoestringを使用して生成し、オプションでパスワード保護することもできます(--ask-passを使用)。
python3 -m shoestring pemtool --ask-pass --output ca.key
いずれの場合も、opensslを使用して生成された ca.key.pem ファイルの内容を確認できます:
openssl pkey -in ca.key.pem -text -noout
これにより、プライベートキーとパブリックキーの両方がコンソールに出力されます。パブリックキーのみを表示したい場合は、-textを-text_pubに置き換えてください。
Step 2 - Shoestring Configurationの準備
Shoestringのinitコマンドを実行して、必要なネットワークの構成テンプレートをダウンロードする必要があります。テストネット(コードネーム:sai)に接続する予定なので、それをパッケージ名として指定する必要があります:
python3 -m shoestring init --package sai sai.ini
最終的な目標は、ローカルにビルドしたCatapultを実行することなので、多くの設定は関連がありません。変更する必要があるのは、nodeセクションの設定だけです:
features - ローカルノードがサポートする機能
PEERは同期のための最小のノード
APIはブローカープロセスとRESTを追加
HARVESTERはノードをハーベストするように構成
VOTERはノードを投票するように構成
apiHttps - ローカル開発用に、これをfalseに設定します
caCommonName - CA証明書の名前を入力します(任意の名前を使用できます)
nodeCommonName - ノード証明書の名前を入力します(任意の名前を使用できます)
また、ローカルホストが使用されることを示すためにオーバーライドファイルを追加する必要があります。local-overrides.iniファイルを作成し、次の内容を入力します:
node.localnode]
host = 127.0.0.1
Step 3 - Shoestring Setupの実行
最後に、Shoestringのセットアップを実行しよう!
python3 -m shoestring setup \
--package sai \
--directory ./output \
--ca-key-path ./setup/ca.key.pem \
--config ./setup/sai.ini \
--overrides ./setup/local-overrides.ini
重要なのは、--packageがsaiに設定されており、これは接続したいテストネットです。Shoestringのすべての出力は--directoryの下に作成されます。
rm -rf output && mkdir output
最後に、CAの秘密キー(--ca-key-path)および先に作成した構成ファイル(--configおよび--overrides)へのパスを指定しています。
Step4 - Catapult User Configurationの更新
ローカルにビルドしたノードを使用するためには、output/userconfig/resources/config-user.propertiesのパスを調整する必要があります。
次のように変更してみよう:
seedDirectory = /path/to/output/seed
certificateDirectory = /path/to/output/keys/cert
dataDirectory = /path/to/output/data
pluginsDirectory = ..
votingKeysDirectory = /path/to/output/keys/voting
あるいは、これらをoverridesファイル(local-overrides.ini)のuser.storageセクションに設定することもできます。ノードを定期的にリセットする場合、これにより構成が簡単になります。
Step 5 - 実行
それでは、catapult.serverプロセスを実行できるか試してみましょう! 🍀
client/catapult/_buildディレクトリに戻り、次のコマンドを実行します:
./bin/catapult.server /path/to/output/userconfig
このようなログが出力されるか見てみよう:
<important> (extensions::NemesisBlockLoader.cpp@54)
nemesis network id: Testnet
nemesis public key: 76E94661562762111FF7E592B00398554973396D8A4B922F3E3D139892F7C35C
nemesis generation hash: 96FAA65899ED0EF309D17D7456C052BB2D7618B239C03BEDDCCBDEC6D82CBC0F
このログは、ノードが正常に起動したことを示しています。すぐに仲間と通信を開始し、同期を始めるはずです。
簡単なチェックとして、data/index.datに格納されているリトルエンディアンの数値が増加していることに気付くはずです。
hexdump -C data/index.dat
これはローカルで確認されたブロックの高さです。それが1でない限り、すべてが動作しています!おめでとうございます! 🎉
この記事が気に入ったらサポートをしてみませんか?