Visual Studio Codeを使用したチェーンコードのデプロイ
チェーンコード・プロジェクトが作成されると、自動的に生成されたHyperledger Fabricネットワークにローカルにデプロイするか、Oracle Blockchain Platform CloudまたはEnterprise Editionにリモートにデプロイできます。チェーンコード・プロジェクトをパッケージ化して、Oracle Blockchain Platformに手動でデプロイすることもできます。
ローカルHyperledger Fabricネットワークへのチェーンコードのデプロイ
チェーンコード・プロジェクトを作成したら、ローカルHyperledger Fabric基本ネットワークでテストできます。
VS Codeのブロックチェーン・アプリケーション・ビルダー拡張機能をインストールすると、単一のチャネルを使用してHyperledger Fabricネットワークが自動的に作成されます。これは、「環境」ペインにLocal Environment
としてリストされます。この環境を削除または変更することはできません。正しく動作しなくなった場合、チェーンコードをデプロイするだけで再構築できます。
ブロックチェーン・アプリケーション・ビルダーのチェーンコード・デプロイメントでは、Hyperledger Fabricの基本ネットワークおよびその他のサービスを起動し、チェーンコードをインストールしてインスタンス化します。
- チェーンコード詳細ペインで、「デプロイ」を選択します。
- デプロイメント・ウィザードで、次の手順を実行します:
- 正しいチェーンコード名が選択されていることを確認します。
- ターゲット環境を選択します。ローカル・デプロイメントの場合、ローカル環境を選択します。
- デプロイ先のチャネルを選択します。
mychannel
という名前のチャネルが拡張機能のインストールとともにデフォルトで作成され、テストに使用できます。 - 必要に応じて、初期パラメータを入力します。
- 「デプロイ」をクリックします。
チェーンコードのインスタンス化が終了すると、「出力」コンソールに、指定されたチャネルでチェーンコードが正常にインスタンス化され、インストールおよびデプロイされたことが示されます。
トラブルシューティング
チェーンコード・プロジェクトをローカル・ネットワークで実行すると、次の問題が発生する場合があります。
- Go権限の欠落
- Goチェーンコード・プロジェクトのローカル・ネットワークへのインストール時に、「出力」コンソールに次のようなエラーが表示されることがあります:
INFO (Runtime): 2020/06/22 22:57:09 build started INFO (Runtime): Building .... INFO (Runtime): go build runtime/cgo: copying /Users/myname/Library/Caches/go-build/f8/.….….d: open /usr/local/go/pkg/darwin_amd64/runtine/ cgo.a: permission denied ERROR (Runtime): go build runtine/cgo: copying /Users/myname/Library/Caches/go-build/f8/.….….d: open /usr/local/go/pkg/darwin_amd64/runtime/ cgo.a: permission denied INFO (Runtime): An error occurred while building: exit status 1
- インスタンス化の失敗
- インスタンス化が失敗したか、インスタンス化が破損したか、Dockerピア・コンテナがいっぱいになったか、Dockerピアがローカル・ネットワークで強制終了されたため、次のようなエラーが表示される場合があります:
============ Started instantiate Chaincode ============ [2028-19-01T19:25:lO.372] [ERROR] default - Error instantiating Chaincode GollGl on channel mychannel, detailed error: Error: error starting container: error starting container: Failed to generate platform-specific docker build: Failed to pull hyperledger/fabric-ccenv:latest : API error (404): manifest for hyperledger/ fabric-ccenv:latest not found: manifest unknown: manifest unknown [2020-19-01T19:25:10.372] (INFO) default - ============ Finished instantiate Chaincode ============ [2020-19-01119:25:10.372] [ERROR] default - Error: Error instantiating Chaincode Goll01 on channel mychannel, detailed error: Error: error starting container: error starting container: Failed to generate platfom-specific docker build: Failed to pull hyperledger/fabric-ccenv: latest : API error (404): manifest for hyperledger/ fabric-ccenv:lalest not found: manifest unknown: manifest unknown exited: signal: terminated INFO: exited: signal: terminated ERROR: Error in Chaincode deployment
- 環境の再構築が必要な場合
- 次のようなエラーが表示されることがあります:
Starting ca.example.com ... Starting orderer.example.com ... Starting orderer.example.com ... error ERROR: for orderer.example.com Cannot start service orderer.example.com: error while creating mount source path '/host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0/node_modules/@oracle/ochain-cli/runtime/network/basic-network/config': mkdir /host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0: operation not permitted Starting ca.example.com... error ERROR: for ca.example.com Cannot start service ca.example.com: error while creating mount source path '/host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0/node_modules/@oracle/ochain-cli/runtime/network/basic-network/crypto-config/peerOrganizations/org1.example.com/ca': mkdir /host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0: operation not permitted ERROR: for orderer.example.com Cannot start service orderer.example.com: error while creating mount source path '/host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0/node_modules/@oracle/ochain-cli/runtime/network/basic-network/config': mkdir /host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0: operation not permitted ERROR: for ca.example.com Cannot start service ca.example.com: error while creating mount source path '/host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0/node_modules/@oracle/ochain-cli/runtime/network/basic-network/crypto-config/peerOrganizations/org1.example.com/ca': mkdir /host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0: operation not permitted Encountered errors while bringing up the project. ERROR: Starting ca.example.com ... Starting orderer.example.com ... Starting orderer.example.com ... error ERROR: for orderer.example.com Cannot start service orderer.example.com: error while creating mount source path '/host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0/node_modules/@oracle/ochain-cli/runtime/network/basic-network/config': mkdir /host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0: operation not permitted Starting ca.example.com ... error ERROR: for ca.example.com Cannot start service ca.example.com: error while creating mount source path '/host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0/node_modules/@oracle/ochain-cli/runtime/network/basic-network/crypto-config/peerOrganizations/org1.example.com/ca': mkdir /host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0: operation not permitted ERROR: for orderer.example.com Cannot start service orderer.example.com: error while creating mount source path '/host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0/node_modules/@oracle/ochain-cli/runtime/network/basic-network/config': mkdir /host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0: operation not permitted ERROR: for ca.example.com Cannot start service ca.example.com: error while creating mount source path '/host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0/node_modules/@oracle/ochain-cli/runtime/network/basic-network/crypto-config/peerOrganizations/org1.example.com/ca': mkdir /host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0: operation not permitted Encountered errors while bringing up the project. ERROR: Error in Chaincode deployment
リモートOracle Blockchain Platformネットワークへのチェーンコードのデプロイ
チェーンコード・プロジェクトをローカル・ネットワークでインスタンス化およびテストして、設計どおりに動作することを確認したら、Oracle Blockchain Platformにデプロイできます。
接続プロファイルに必要なファイルのダウンロード
- ローカル・ストレージにフォルダを作成して、接続プロファイル、管理キーおよび証明書を配置します。
- 接続プロファイルをダウンロードします。Oracle Blockchain Platformインスタンスのコンソールの開発者ツール・タブ、アプリケーション開発、開発パッケージのダウンロードの順に移動します。
- インスタンスのコンソールから管理資格証明を取得します。「ネットワーク」、組織からの管理資格証明のエクスポートの順にクリックします。
- 管理資格証明から
artifacts/crypto/ordererOrganizations/<instance-name>/signcert/<instance-name>-signcert.pem
およびartifacts/crypto/peerOrganizations/<instance-name>/signcert/<instance-name>-signcert.pem
に管理者証明書をコピーします。 - 管理資格証明から
artifacts/crypto/ordererOrganizations/<instance-name>/keystore/<instance-name>-key.pem
およびartifacts/crypto/peerOrganizations/<instance-name>/keystore/<instance-name>-key.pem
に管理キーをコピーします。
- 管理資格証明から
ノート:
プロジェクト・フォルダに接続プロファイルを配置する場合、これをGithubなどのコンテンツ・リポジトリと同期すると、誤って秘密キーを共有する可能性があることに注意してください。プライベートなすべてのものが.gitignore
ファイルに追加されていることを確認します。
Oracle Blockchain Platformインスタンスへの接続の作成
このステップを実行するには、Blockchain Platformインスタンスが稼働している必要があります。
- VS Codeの「Environments」ペインで、「Create Environment」アイコンをクリックします。
- Environments Detailsウィザードで、次の手順を実行します:
- リモート環境の名前を入力します。
- 説明を入力します。
- Oracle Blockchain Platformから接続プロファイルを格納したディレクトリを参照します。
- チェーンコードをインストール、インスタンス化および呼び出す権限を持つユーザー名とパスワードを入力します。
- 「Test Login」をクリックします。これにより、プロファイルをリモート・ネットワークにログインしてデプロイできるようになります。
- 正常にログインしたら、「Create」をクリックしてプロファイルを保存します。
チェーンコードのデプロイ
- チェーンコード・ペインで、デプロイするチェーンコード・プロジェクトを選択します。
- チェーンコード詳細ペインで、「デプロイ」を選択します。
- デプロイメント・ウィザードでは、チェーンコード・プロジェクトの名前を事前に入力する必要があります。
- ターゲット環境を選択します。リモート・デプロイメントの場合、事前に設定したOracle Blockchain Platform環境を選択します。
- デプロイ先のチャネルの名前を入力します。
- 必要に応じて、必要な初期パラメータを設定します。
- 「デプロイ」をクリックします。
- チェーンコード・プロジェクトが正常にインストールされました。
- 各ピアおよびチャネルでチェーンコードが正常にインスタンス化されました。
チェーンコード・プロジェクトの更新
チェーンコードのアップグレードは、ブロックチェーン・アプリケーション・ビルダーによって自動的に処理されます。チェーンコードを変更した後、再度デプロイします。これにより、更新が自動的に実行されます。
- チェーンコード・バージョンが正常にアップグレードされました。
- チェーンコード・プロジェクトが正常にインストールされました。
- 各ピアおよびチャネルでチェーンコードが正常にインスタンス化されました。
Oracle Blockchain Platformへの手動デプロイメント用のチェーンコード・プロジェクトのパッケージ化
チェーンコード・プロジェクトをパッケージ化して、Oracle Blockchain Platform CloudまたはEnterprise Editionに手動でデプロイできます。
パッケージ関数は、ビルド・ファイルと配布ファイルのみを含むzipファイルを作成します。チェーンコード・プロジェクトのbinary
、libs
、node_modules
およびtest
フォルダは含まれません。このzipは、デプロイメントのためにOracle Blockchain Platformに手動でアップロードできます。
- チェーンコード・ペインでチェーンコード・プロジェクトを選択します。
- 右クリックして「パッケージ」を選択します。
- パッケージを保存する場所を選択し、出力フォルダの選択をクリックします。
コマンドが正常に完了すると、パッケージの場所が出力に返されます。