Corda Network Builder

Corda Network Builderは、テスト目的でCordaネットワークを構築するためのツールです。Dockerとコンテナを活用することで、分散ネットワークの管理の複雑さを解決します。

network builder v4

 

構築するネットワークは、ローカルのDockerノードで構成されるか、Azureコンテナに分散したノードで構成されます。それぞれのノードに対して、corda/corda-zulu-java1.8-4.4をベースにした個別のDockerイメージが構築されます。公式のイメージとは異なり、node.confファイルとCorDappsがイメージに組み込まれています(それらはボリューム/マウントポイントを介して実行中のコンテナに外部から提供されるものではありません)。将来的には、より多くのバックエンドが追加される可能性があります。

Corda Network Builderをダウンロードする

 

前提条件

 

ベース・ノードを構築する

Network builderは、ノードのセットを他のすべての操作のベースとして使用します。ノードとは、以下のレイアウトを満たすものを指します。

-
-- node.conf
-- corda.jar
-- cordapps/

 

有効なノードのセットを構築する簡単な方法は、deployNodesを実行することです。このドキュメントでは、Java サンプルリポジトリdeployNodes を実行したときの出力を使用します。

 

コマンドラインを使用してネットワークを構築する

ノートを起動する

Local Docker クイックスタート

  • cd workflows-java/build/nodes
  • java -jar <path/to/corda-tools-network-builder.jar> -d .

docker psを実行して実行中のコンテナを確認すると、以下のような出力が表示されます。

CONTAINER ID  IMAGE                      COMMAND      CREATED         STATUS         PORTS                                                                                                   NAMES
406868b4ba69 node-partyc:corda-network "run-corda" 17 seconds ago Up 16 seconds 0.0.0.0:32902->10003/tcp, 0.0.0.0:32895->10005/tcp, 0.0.0.0:32898->10020/tcp, 0.0.0.0:32900->12222/tcp partyc0
4546a2fa8de7 node-partyb:corda-network "run-corda" 17 seconds ago Up 17 seconds 0.0.0.0:32896->10003/tcp, 0.0.0.0:32899->10005/tcp, 0.0.0.0:32901->10020/tcp, 0.0.0.0:32903->12222/tcp partyb0
c8c44c515bdb node-partya:corda-network "run-corda" 17 seconds ago Up 17 seconds 0.0.0.0:32894->10003/tcp, 0.0.0.0:32897->10005/tcp, 0.0.0.0:32892->10020/tcp, 0.0.0.0:32893->12222/tcp partya0
cf7ab689f493 node-notary:corda-network "run-corda" 30 seconds ago Up 31 seconds 0.0.0.0:32888->10003/tcp, 0.0.0.0:32889->10005/tcp, 0.0.0.0:32890->10020/tcp, 0.0.0.0:32891->12222/tcp notary0

マシンのパフォーマンスにもよりますが、すべてのコンテナが起動していると報告された後でも、基盤となる Corda ノードが起動していて、ノードへの SSH 接続がすぐに利用できない場合があります。

 

Remote Azureのクイックスタート

  • cd kotlin-source/build/nodes
  • java -jar <path/to/corda-tools-network-builder.jar> -b AZURE -d .

Azure の設定は az-cli ユーティリティによって処理されます。前提条件を参照してください。

ノード間通信

12222 にマップされているポートに SSH 接続することで、ノードと通信することができます。例えば、partya0ノードにSSHするには、次のように実行します。

ssh user1@localhost -p 32893
Password authentication
Password:


Welcome to the Corda interactive shell.
Useful commands include 'help' to see what is available, and 'bye' to shut down the node.

>>> run networkMapSnapshot
[
{ "addresses" : [ "partya0:10020" ], "legalIdentitiesAndCerts" : [ "O=PartyA, L=London, C=GB" ], "platformVersion" : 6, "serial" : 1532701330613 },
{ "addresses" : [ "notary0:10020" ], "legalIdentitiesAndCerts" : [ "O=Notary, L=London, C=GB" ], "platformVersion" : 6, "serial" : 1532701305115 },
{ "addresses" : [ "partyc0:10020" ], "legalIdentitiesAndCerts" : [ "O=PartyC, L=Paris, C=FR" ], "platformVersion" : 6, "serial" : 1532701331608 },
{ "addresses" : [ "partyb0:10020" ], "legalIdentitiesAndCerts" : [ "O=PartyB, L=New York, C=US" ], "platformVersion" : 6, "serial" : 1532701330118 }
]

>>>

 

また、cordapp-exampleからflowを実行することもできます:flow start com.example.flow.ExampleFlow$Initiator iouValue: 20, otherParty: "PartyB"

検証するには、partyb0ノードに接続して、run vaultQuery contractStateType:"com.example.state.IOUState"を実行します。partyb0VaultにはIOUStateが含まれているはずです。

 

ノードを追加する

以前に構築したノードを再利用して、ネットワークに追加のノードを追加することができます。例えば、既存のPartyAノードを再利用してノードを追加するには、次のように実行します。

java -jar <path/to/corda-tools-network-Builder.jar> --add "PartyA=O=PartyZ,L=London,C=GB"

ノードが正常に起動したことを確認するには、先に接続したSSHセッションで以下を実行します。

Tue Jul 17 15:47:14 GMT 2018>>> run networkMapSnapshot
[
{ "addresses" : [ "partya0:10020" ], "legalIdentitiesAndCerts" : [ "O=PartyA, L=London, C=GB" ], "platformVersion" : 6, "serial" : 1532701330613 },
{ "addresses" : [ "notary0:10020" ], "legalIdentitiesAndCerts" : [ "O=Notary, L=London, C=GB" ], "platformVersion" : 6, "serial" : 1532701305115 },
{ "addresses" : [ "partyc0:10020" ], "legalIdentitiesAndCerts" : [ "O=PartyC, L=Paris, C=FR" ], "platformVersion" : 6, "serial" : 1532701331608 },
{ "addresses" : [ "partyb0:10020" ], "legalIdentitiesAndCerts" : [ "O=PartyB, L=New York, C=US" ], "platformVersion" : 6, "serial" : 1532701330118 },
{ "addresses" : [ "partya1:10020" ], "legalIdentitiesAndCerts" : [ "O=PartyZ, L=London, C=GB" ], "platformVersion" : 6, "serial" : 1532701630861 }
]

 

Graphical User Modeを使用したNetwork構築

Corda Network Builder は、自動化されたインタラクションを必要としない場合のための GUI も提供しています。

起動するには、java -jar <path/to/corda-tools-network-builder.jar> -g.

 

ノードを起動する

Open nodes ... をクリックし、 ベース・ノードを構築するで作成したフォルダを選択し、開くをクリックする
Local Docker または Azureを選択
Buildをクリック

Azure の設定は az-cli ユーティリティによって処理されます。前提条件を参照してください。

 

最終的にはすべてのノードのStatusINSTANTIATED に変更されます。ターミナルからdocker psを実行して実行中のコンテナを確認すると、以下のような出力が表示されるはずです。

CONTAINER ID  IMAGE          COMMAND   CREATED      STATUS  PORTS                                                  NAMES
406868b4ba69 node-partyc:corda-network "run-corda" 17 seconds ago Up 16 seconds 0.0.0.0:32902->10003/tcp, 0.0.0.0:32895->10005/tcp, 0.0.0.0:32898->10020/tcp, 0.0.0.0:32900->12222/tcp partyc0
4546a2fa8de7 node-partyb:corda-network "run-corda" 17 seconds ago Up 17 seconds 0.0.0.0:32896->10003/tcp, 0.0.0.0:32899->10005/tcp, 0.0.0.0:32901->10020/tcp, 0.0.0.0:32903->12222/tcp partyb0
c8c44c515bdb node-partya:corda-network "run-corda" 17 seconds ago Up 17 seconds 0.0.0.0:32894->10003/tcp, 0.0.0.0:32897->10005/tcp, 0.0.0.0:32892->10020/tcp, 0.0.0.0:32893->12222/tcp partya0
cf7ab689f493 node-notary:corda-network "run-corda" 30 seconds ago Up 31 seconds 0.0.0.0:32888->10003/tcp, 0.0.0.0:32889->10005/tcp, 0.0.0.0:32890->10020/tcp, 0.0.0.0:32891->12222/tcp notary0

 

ノード間通信

ノード間通信をご確認ください。

 

ノードを追加する

以前に構築したノードを再利用することで、ネットワークに追加のノードを追加することができます。例えば、既存のPartyAノードを再利用してノードを追加するには、次のようにします。

  • ドロップダウンでpartyAを選択します。
  • Add Instanceをクリックします。
  • 新しいノードのX500名を指定し、OKをクリックします。

paneでpartyAをクリックすると、サイドバーに追加のインスタンスがリストアップされているはずです。ノードが正しく起動したことを確認するには、先に接続したSSHセッションで以下を実行します。

Tue Jul 17 15:47:14 GMT 2018>>> run networkMapSnapshot
[
{ "addresses" : [ "partya0:10020" ], "legalIdentitiesAndCerts" : [ "O=PartyA, L=London, C=GB" ], "platformVersion" : 6, "serial" : 1532701330613 },
{ "addresses" : [ "notary0:10020" ], "legalIdentitiesAndCerts" : [ "O=Notary, L=London, C=GB" ], "platformVersion" : 6, "serial" : 1532701305115 },
{ "addresses" : [ "partyc0:10020" ], "legalIdentitiesAndCerts" : [ "O=PartyC, L=Paris, C=FR" ], "platformVersion" : 6, "serial" : 1532701331608 },
{ "addresses" : [ "partyb0:10020" ], "legalIdentitiesAndCerts" : [ "O=PartyB, L=New York, C=US" ], "platformVersion" : 6, "serial" : 1532701330118 },
{ "addresses" : [ "partya1:10020" ], "legalIdentitiesAndCerts" : [ "O=PartyZ, L=London, C=GB" ], "platformVersion" : 6, "serial" : 1532701630861 }
]

 

ノードのシャットダウン

docker kill $(docker ps -q)を実行して、実行中のDockerプロセスをすべて終了させます。

 

原文はこちら

この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています