【Hyperledger Fabric】Windows上でVisual Stadio CodeのIBM Blockchain Platformプラグインを使ってみた

IBM Blockchain Platformプラグインとは

Visual Studio Code では Hyperledger Fabric のアドオンも提供されているので、これを使うとチェーンコードのデプロイや開発が普通のテキストエディタを使うより簡単になります。

IBM Cloudのチュートリアルにも紹介されている通り、Hyperledger Fabricの公式チュートリアルよりお手軽にHyperledger Fabricの動作環境を作れます。

↓↓↓Visual Studio CodeのIBM Blockchain Platformプラグイン↓↓↓

Requirementsに記載されていますが、いろいろとバージョン縛りでインストールする必要があります。(割愛)

スマートコントラクトを試す

IBM Blockchain VSCode 拡張機能を使用してスマート・コントラクトを開発する

チュートリアルがあるので、安心して進められますね。(と思っていた時期がありました)

ステップ 5. スマート・コントラクトをインストールする

(中略)

「LOCAL FABRIC OPS (ローカル Fabric オペレーション)」 の右側に、ドットが 3 つ並んだ記号があるはずです。この記号をクリックし、次に 「Start Fabric Runtime (Fabric ランタイムを起動)」 をクリックします。

そして、Fabricの起動に失敗する。なんでやねん。

[INFO] Error response from daemon: Container 4fa51ac845d34dc7c7a47dc3672436da46445eed95dd12e4867e1712b2b79cca is not running
[ERROR] Failed to start local_fabric: Error: Failed to execute command "cmd" with  arguments "/c, start.cmd" return code 1

ログをさかのぼってみるとgenerate.jsでkeystoreが見つからないとかなんとか。

[INFO] C:\Users\Takahiro 310\.fabric-vscode\runtime>node generate.js 
[INFO] fs.js:904
[INFO]   return binding.readdir(pathModule._makeLong(path), options.encoding);
[INFO]                  ^
[INFO] Error: ENOENT: no such file or directory, scandir 'C:\Users\Takahiro 310\.fabric-vscode\runtime\admin-msp\keystore'
[INFO]     at Object.fs.readdirSync (fs.js:904:18)
[INFO]     at Object.<anonymous> (C:\Users\Takahiro 310\.fabric-vscode\runtime\generate.js:13:33)
[INFO]     at Module._compile (module.js:653:30)
[INFO]     at Object.Module._extensions..js (module.js:664:10)
[INFO]     at Module.load (module.js:566:32)
[INFO]     at tryModuleLoad (module.js:506:12)
[INFO]     at Function.Module._load (module.js:498:3)
[INFO]     at Function.Module.runMain (module.js:694:10)
[INFO]     at startup (bootstrap_node.js:204:16)
[INFO]     at bootstrap_node.js:625:3

“.fabric-vscode\runtime\admin-msp”の中身を確認してみたところ、なるほど。確かに何もない。なんでだろう?と小一時間ハマる。

どうやら”.fabric-vscode\runtime\generate.sh”を事前に実行しているが、正常に処理できていなかったことが原因だった。なぜ正常に処理できなかったかというと、ユーザ名にスペースが含まれていたのでコマンドエラーに。

PATHにスペースが含まれているとダメっていうWindowsあるあるの内容・・・。やめてぇ。

generate.shの$PWDのパス指定をダブルクォートで囲う形に修正し、generate.shを再実行。これでFabricが正常に起動できました。一言だけ言わせてほしい。エラーなのにINFOログですよ!!

ステップ 11. レジャーのクエリーを実行する

(中略)

VSCode 内のターミナルを使用して、カレント・ディレクトリーを VSCodeTutorialBlockchain フォルダー変更します。そこから、次のコマンドを実行して、必要な依存関係をインストールします。

$ npm install
npm ERR! code ENOLOCAL
npm ERR! Could not install from "node_modules\fabric-ca-client" as it does not contain a package.json file.

ここは分からないので諦めました。このステップは、おまけ機能なので別にいいかな、と。

このチュートリアルでは、Fabricでチェーンコードの作成と実行確認が出来たので概ね満足です。あと、generate.shの修正プルリク投げたい。