はじめに
SubstrateのチュートリアルにPermissioned Networkというセクションがあります。
こちらのチュートリアルでは許可制ネットワーク(Permissioned Network)へのノードの追加の手順は記載がありますが、削除する記載がないため今回の記事では許可制ネットワークでどのようにノードを削除するのか?(ブロック同期させなくするか?)を簡単にですが紹介します。
導入手順
Permissioned Networkを実行
Start a Permissioned Networkのチュートリアルをページにしたがって実行しておきます。
こちらのチュートリアルでは主に以下を実行しています。
- node-authorization pallet追加
- Permissioned Networkのノード起動
チュートリアルが終わると以下のようにAlice, Bob, Charlieはそれぞれ繋がっていて、DaveはCharlieのみと繋がった状態のノード構成になります。
Alice, Bob は初期設定でWellKnownNodesとしてすでに登録されていて、その後Sudo権限でのaddWellKnownNodeというメソッドを使用してCharlieをネットワークに参加させています。
DaveはCharlieへの接続にclaimNodeメソッドでまず自分自身を宣言した後に Dave, CharlieそれぞれがaddConnectionsを使ってお互いにネットワーク通信する事を許可しています。
確認手順
チュートリアルには記載がない、参加したノードをネットワークから切り離す、という事をしてみます。
チュートリアルを終わらせた上での環境を前提としてこれからの手順を記載していきます。
Daveの切り離し(removeClaim)
Charileにのみ接続しているDaveをネットワークから切り離すには、removeClaimメソッドを実行します。
removeClaimメソッドを使用することによってaddConnectionsで繋げた情報も全て削除することができます。
やり方はチュートリアルで実行したブロックチェーンノード4台全てを動かした状態で、ブラウザからPolkadot-JS applicationのExtrinsicsページにアクセスします。
表示されたページで以下を指定し[トランザクションを提出]ボタンを押します。
- 選択されたアカウントを使用する - Dave
- 次のextrinsicを提出する - nodeAuthorization.removeClaim
- node - DaveのPeerId(チュートリアルに記載があります)
上記を実施した後にブロックにtx(トランザクション)が取り込まれると、Daveのノードはブロック同期がされなくなります。
Charileの切り離し(removeWellKnownNode)
CharlieはSudo権限でaddWellKnownNodeメソッドを使ってノードをネットワークに追加しました。
このため、逆にSudo権限でremoveWellKnownNodeメソッドを使ってノードをネットワークから削除します。
ブラウザからPolkadot-JS applicationのSudoページにアクセスします。
表示されたページで以下を指定し[Sudoを提出する]ボタンを押します。
- 以下の変更を提出する - nodeAuthorization.removeWellKnownNode
- node - CharlieのPeerId
上記を実施した後にブロックにtx(トランザクション)が取り込まれると、Charlieのノードはブロック同期がされなくなります。
終わりに
許可制ネットワーク(Permissioned Network)でのノードの削除(ブロック同期させなくする)を今回試してみました。
ブロックチェーンの思想とは異なる部分(管理者がいるという点)があるかもしれませんが、管理者がいる、もしくは統治しやすいブロックチェーンネットワーク(コンソーシアムなど)の際には、ノードの追加や削除を行えないと実運用は難しいと思いますので、今回の記事の内容は覚えておいておいた方が良いかもしれません。
参考