Hyperledger Fabric — コントラクトをアップグレードする Maven の方法

1.1 コントラクトをアップグレードする前に、変更されたコードをリモート ウェアハウスにアップロードする必要があります

最初に、fabric-samples ディレクトリの下の chaincode ディレクトリに入ります。

cd /root/fabric-samples/chaincode

次に、自分のプロジェクトのソース コード ディレクトリに入り、git pull コマンドを実行すると、git アカウントのパスワードを入力するよう求められます。ここに画像の説明を挿入

1.2 test-network のあるディレクトリに戻る

test-network が配置されているディレクトリに戻り、チェーンコードを他のネットワーク コンポーネントと一緒にパッケージ化できるようにします。

cd ../../test-network

1.3 bin ディレクトリのバイナリ ファイルを CLI パスに追加する

ピア CLI を使用して目的の形式のチェーンコード パッケージを作成できます。次のコマンドを使用して、これらのバイナリを CLI パスに追加します。

export PATH=${PWD}/../bin:$PATH

1.4 FABRIC_CFG_PATH を設定して、fabric-samples の core.yaml ファイルを指すようにします。

export FABRIC_CFG_PATH=$PWD/../config/

1.5 チェーン コード パッケージの作成

peer lifecycle chaincode package hyperledger-fabric-contract-java-demo.tar.gz --path ../chaincode/hyperledger-fabric-contract-java-demo/ --lang java --label hyperledger-fabric-contract-java-demo_2

ここに画像の説明を挿入

2 チェーンコード パッケージをインストールする

hyperledger-fabric-contract-java-demo スマート コントラクトをパッケージ化したら、チェーンコードをピア ノードにインストールできます。チェーンコードは、トランザクションを承認するすべてのピアにインストールする必要があります。Org1 と Org2 の両方からの承認を要求する承認ポリシーを設定するため、両方の組織のピア ノード (peer0.org1.example.com と peer0.org2.example.com) にチェーンコードをインストールする必要があります。

2.1 Org1 ピア ノード インストール チェーン コード

Org1 管理者としてピア CLI を操作するには、次の環境変数を設定します。

export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_LOCALMSPID="Org1MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/[email protected]/msp
export CORE_PEER_ADDRESS=localhost:7051

peer lifecycle chaincode install コマンドを使用して、チェーンコードをピア ノードにインストールします。

peer lifecycle chaincode install hyperledger-fabric-contract-java-demo.tar.gz

ここに画像の説明を挿入

インストール中に別のウィンドウを開いて、チェーンコード パッケージのインストール ログを表示できます。

// 查看所有容器
docker ps

// 查看最新容器的日志
docker logs -f  容器id

ここに画像の説明を挿入

コントラクトを Maven 方式でインストールするには、毎回 Maven 環境を構築し、プログラムの実行に必要な依存関係をダウンロードする必要があるため、インストール コマンドを実行する前にしばらく待つ必要があります。

peer lifecycle chaincode install hyperledger-fabric-contract-java-demo.tar.gz

'InstallChaincode' のバッキング実装の呼び出しに失敗しました: インストールが成功したことを示す、既に正常にインストールされたチェーンコードが表示されます
ここに画像の説明を挿入

2.2 Org2 ピア ノード インストール チェーン コード

次の環境変数を設定して、ピア CLI を Org2 管理者として操作します。

export CORE_PEER_LOCALMSPID="Org2MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org2.example.com/users/[email protected]/msp
export CORE_PEER_ADDRESS=localhost:9051

peer lifecycle chaincode install コマンドを使用して、チェーンコードをピア ノードにインストールします。

peer lifecycle chaincode install hyperledger-fabric-contract-java-demo.tar.gz
注: チェーン コードをインストールすると、ピア ノードによってチェーン コードがビルドされます。スマート コントラクト コードに問題がある場合、インストール コマンドはチェーンコードからすべてのビルド エラーを返します。Java チェーンコードをインストールするプロセスは、maven ビルドと依存パッケージのダウンロードのプロセスを経る必要があるため、このプロセスは遅くなる可能性があり、インストール コマンドはタイムアウト エラーを返す可能性があります。しかし実際には、この時点ではまだビルド タスクがチェーンコードの docker コンテナーで実行されており、完了していません。ビルドが成功すると、チェーンコード パッケージが正常にインストールされます。 #3 チェーンコードで定義

チェーンコード パッケージをインストールしたら、組織のチェーンコード定義を渡す必要があります。この定義には、名前、バージョン、チェーンコード承認ポリシーなど、チェーンコード管理の重要なパラメーターが含まれています。

組織のピア ノードにチェーンコードがインストールされている場合、組織から渡されたチェーンコード定義にパッケージ ID を含める必要があります。パッケージ ID は、ピアにインストールされたチェーンコードを渡されたチェーンコード定義に関連付けるために使用され、組織がチェーンコードを使用してトランザクションを承認できるようにします。

3.1 パッケージ ID のクエリ

peer lifecycle chaincode queryinstalled

queryinstalled コマンドは、ピア ノードにインストールされているチェーンコードのリストを返します。

Installed chaincodes on peer:
Package ID: hyperledger-fabric-contract-java-demo_1:762e0fe3dbeee0f7b08fb6200adeb4a3a20f649a00f168c0b3c2257e53b6e506, Label: hyperledger-fabric-contract-java-demo_1
Package ID: hyperledger-fabric-contract-java-demo_1:762e0fe3dbeee0f7b08fb6200adeb4a3a20f649a00f168c0b3c2257e53b6e506, Label: hyperledger-fabric-contract-java-demo_2

チェーンコードを通過するときにバンドル ID を使用するため、バンドル ID を環境変数として保存します。返されたバンドル ID を以下のコマンドに貼り付けます。


注: バンドル ID はすべてのユーザーで異なるため、この手順は、前の手順でコマンド ウィンドウから返されたバンドル ID を使用して実行する必要があります。コマンドを直接コピーする代わりに!! !

package タグを使用して、新しいチェーンコードのパッケージ ID を見つけ、新しい環境変数として保存します。

export NEW_CC_PACKAGE_ID=hyperledger-fabric-contract-java-demo_4:993171856031ede4117405448c930c57ef99b4d54623d9b7247ee6f7152d8b71

3.2 チェーンコードで定義された Org2

Orig2 管理者として動作するように環境変数がピア CLI に設定されているため、Org2 組織レベルで hyperledger-fabric-contract-java-demo のチェーンコード定義を渡すことができます。チェーン コードを介して定義するには、peer lifecycle chaincode approvalformyorg コマンドを使用します。
ここでは、バージョンとシリアル番号の変更に注意する必要があります: バージョン 2.0 とシーケンス 2

peer lifecycle chaincode approveformyorg -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --channelID mychannel --name hyperledger-fabric-contract-java-demo --version 2.0 --package-id $NEW_CC_PACKAGE_ID --sequence 2 --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

3.2 チェーン コードで定義された Org1

次の環境変数を Org1 管理者として実行するように設定します。

export CORE_PEER_LOCALMSPID="Org1MSP"
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/[email protected]/msp
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
export CORE_PEER_ADDRESS=localhost:7051

ピア ライフサイクル chaincode approvalformyorg コマンドを使用したチェーン コード定義を介して

peer lifecycle chaincode approveformyorg -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --channelID mychannel --name hyperledger-fabric-contract-java-demo --version 2.0 --package-id $NEW_CC_PACKAGE_ID --sequence 2 --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

4 チェーンコード定義をチャネルにコミットします

ピア ライフサイクル チェーンコード checkcommitreadiness コマンドを使用して、チャネル メンバーが同じチェーンコード定義を承認したことを確認します。

peer lifecycle chaincode checkcommitreadiness --channelID mychannel --name hyperledger-fabric-contract-java-demo --version 2.0 --sequence 2 --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem --output json

コマンドが次の JSON を返す場合、チェーンコードをアップグレードする準備ができています。

{
	"approvals": {
		"Org1MSP": true,
		"Org2MSP": true
	}
}

ここに画像の説明を挿入

チェーンコードのアップグレード:

peer lifecycle chaincode commit -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --channelID mychannel --name hyperledger-fabric-contract-java-demo --version 2.0 --sequence 2 --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem --peerAddresses localhost:7051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses localhost:9051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt

ピア ライフサイクル チェーンコード querycommitted コマンドを使用して、チェーンコード定義がチャネルにコミットされたことを確認できます。

peer lifecycle chaincode querycommitted --channelID mychannel --name hyperledger-fabric-contract-java-demo --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

バージョンが 2.0 で、シリアル番号が 2 であることがわかります。これは、送信が成功したことを示しています。
ここに画像の説明を挿入

注意点:

チェーンコードを定義し、チェーンコードをアップグレードしてインストールするときは、バージョン番号とシリアル番号を変更することに注意してください

おすすめ

転載: blog.csdn.net/qq_44154912/article/details/124859101