Visual Studio Codeを使用したチェーンコードのデプロイ
チェーンコード・プロジェクトが作成されると、ローカルにそれを自動的に生成されたHyperledger Fabricネットワークにデプロイするか、リモートにOracle Blockchain Platform CloudまたはEnterprise Editionにデプロイできます。チェーンコード・プロジェクトをパッケージ化して手動でOracle Blockchain Platformにデプロイすることもできます。
ローカルHyperledger Fabricネットワークへのチェーンコードのデプロイ
チェーンコード・プロジェクトを作成したら、ローカルHyperledger Fabric基本ネットワークでテストできます。
VS Codeのブロックチェーン・アプリケーション・ビルダー拡張機能をインストールすると、1つのチャネルを使用してHyperledger Fabricネットワークが自動的に作成されます。これは、「環境」ペインにLocal Environment
としてリストされます。この環境を削除または変更することはできません。正しく作業を停止した場合、チェーンコードをデプロイするだけで再構築できます。
ブロックチェーン・アプリケーション・ビルダーのチェーンコード・デプロイメントでは、Hyperledger Fabricの基本ネットワークおよびその他のサービスを起動し、チェーンコードをインストールしてデプロイします。
- チェーンコード詳細ペインで、「デプロイ」を選択します。
- デプロイメント・ウィザードで:
- 正しいチェーンコード名が選択されていることを確認します。
- ターゲット環境を選択します。ローカル・デプロイメントの場合、ローカル環境を選択します。
- デプロイ先のチャネルを選択します。
mychannel
という名前のチャネルが拡張機能のインストールとともにデフォルトで作成され、テストに使用できます。 - 必要に応じて、初期パラメータを入力します。
- トークン・プロジェクトの場合、初めてデプロイするときは、パラメータとしてトークン管理者のリストを入力する必要があります。リストは、トークン管理者を指定する
{user_id, org_id}
情報の配列です。ローカルHyperledger Fabricネットワークの場合は、org_id
フィールドに値Org1MSP
を使用します。NFTチェーンコードの場合、adminList
パラメータのキーは、TypeScriptの場合はuserId
およびorgId
、Goの場合はUserId
およびOrgId
です。初めてデプロイした後は、adminList
パラメータに空の配列を指定するか、adminList
パラメータを使用してトークン管理者を追加できます。初めてデプロイするデプロイヤではない他のデプロイヤは、adminList
パラメータに空の配列を指定する必要があります。これを行うには、デプロイメント・ペインでInit
パラメータ・リストを開き、adminList
パラメータの横にあるマイナス記号(-)ボタンをクリックし、空の配列を選択します。
- 「デプロイ」をクリックします。
チェーンコードのデプロイが終了すると、「出力」コンソールに、チェーンコードが正常にインストールされ、指定されたチャネルにデプロイされたことが示されます。
トラブル・シューティング
チェーンコード・プロジェクトをローカル・ネットワークで実行すると、次の問題が発生する場合があります。
- 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インスタンスへの接続構成の作成
このステップを完了するには、Blockchain Platformインスタンスが稼働している必要があります。
- Visual Studio Codeの「環境」ペインで、「環境の作成」アイコンをクリックします。
- Environments Detailsウィザードで、次の手順を実行します:
- リモート環境の名前を入力します。
- 説明を入力します。
- 「リモートURL」に、リモートOracle Blockchain PlatformインスタンスのURLを入力します。
ADMIN
またはREST_CLIENT
ロールを持つOracle Blockchain PlatformユーザーのOracle Identity Cloud Serviceのユーザー名とパスワードを入力します。チェーンコードを起動するには、REST_CLIENT
ロールのみが必要です。チェーンコードをデプロイまたはアップグレードするには、IDCSユーザーにADMIN
ロールも割り当てられている必要があります。ユーザーおよびロールの詳細は、ユーザーおよびアプリケーション・ロールの設定を参照してください。
- 「Create」をクリックして環境を保存します。ユーザー名とパスワードは、ローカルのVisual Studio Codeセッションに一時的に保存されます。Visual Studio Codeを閉じてから、新しいVisual Studio Codeセッションを開始する場合は、ユーザー名とパスワードを再度入力する必要があります。
チェーンコードのデプロイ
- チェーンコード・ペインで、デプロイするチェーンコード・プロジェクトを選択します。
- チェーンコード詳細ペインで、「デプロイ」を選択します。
- デプロイメント・ウィザードでは、チェーンコード・プロジェクトの名前を事前に入力する必要があります。
- ターゲット環境を選択します。リモート・デプロイメントの場合、事前に設定したOracle Blockchain Platform環境を選択します。
- デプロイ先のチャネルの名前を入力します。
- 必要に応じて、必要な初期パラメータを設定します。
- 「デプロイ」をクリックします。
- Oracle Blockchain Platformの詳細が正常にフェッチされました。
- ピアのリストは正常にフェッチされました。
- チェーンコード・プロジェクトが正常にインストールされました。
- チェーンコード・プロジェクトが正常に承認およびコミットされました。
- チェーンコードは各ピアおよびチャネルに正常にデプロイされました。
複数の組織がある環境では、参加者インスタンスを介して同じチャネルにチェーンコードを再デプロイするには、コンソールを使用してチェーンコードをデプロイします。
チェーンコード・プロジェクトのアップグレード
チェーンコードのアップグレードは、ブロックチェーン・アプリケーション・ビルダーによって自動的に処理されます。チェーンコードを変更した後、再度デプロイすると、プロジェクトが自動的にアップグレードされます。アップグレード・プロセスの実行時に、adminList
パラメータに空の配列を渡すか、adminList
パラメータを使用してトークン管理者を追加できます。初回デプロイヤでない場合は、adminList
パラメータに空の配列を指定する必要があります。adminList
パラメータに空の配列を渡すには、デプロイメント・ペインでInit
パラメータ・リストを開き、adminList
パラメータの横にあるマイナス記号(-)ボタンをクリックし、空の配列を選択します。
- Oracle Blockchain Platformの詳細が正常にフェッチされました。
- ピアのリストは正常にフェッチされました。
- チェーンコード・プロジェクトがすでにインストールされているかどうかを確認するためのチェックが行われ、インストールされている場合はバージョンがフェッチされました。
- チェーンコード・バージョンが正常にアップグレードされました(たとえば、バージョン1.0から2.0へ)。
複数の組織がある環境では、チェーンコードをアップグレードするには、コンソールを使用し、参加者のチェーンコードを手動で承認します。
Oracle Blockchain Platformへの手動デプロイメント用のチェーンコード・プロジェクトのパッケージ化
チェーンコード・プロジェクトをパッケージ化して、Oracle Blockchain Platform CloudまたはEnterprise Editionに手動でデプロイできます。
Package関数は、ビルドファイルと配布ファイルのみを含むアーカイブファイルを作成します。チェーンコード・プロジェクトのbinary
、libs
、node_modules
およびtest
フォルダは含まれません。このアーカイブ・ファイルは、デプロイメントのためにOracle Blockchain Platformに手動でアップロードできます。
- チェーンコード・ペインでチェーンコード・プロジェクトを選択します。
- 右クリックして「パッケージ」を選択します。
- パッケージの保存先の場所を選択し、出力フォルダの選択をクリックします。
ソフトウェアの前提条件が変更されたため、TypeScriptチェーンコードに対してパッケージ・ファンクションを実行すると、パッケージを作成するOracle Blockchain Platformインスタンスのプロビジョニング日の入力を求められます。ブロックチェーン・アプリケーション・ビルダーで作成されたTypeScriptチェーンコードは、基礎となるインフラストラクチャに変更を加えることなく、以前のバージョンのOracle Blockchain Platformと互換性がありません。ブロックチェーン・アプリケーション・ビルダーは、選択内容に基づいてチェーンコード・インフラストラクチャを適切にパッケージ化します。
コマンドが正常に完了すると、パッケージの場所が返されます。