の前にinitデータを失いました。チェーンコードを変更して展開するたびに新しいchaincodeIDが返されましたが、私は再びプロダクション環境を実行しなければなりません。チェインコードを更新したい場合は、履歴データを保持する必要があります。私はseached、https://jira.hyperledger.org/browse/FAB-22このURLは今私には、チェーンコードのアップグレードをサポートしていないhyperledgerので、私は今これが必要な場合はどうすればいいですか?私がそれを誤解すれば、あなたは私に教えてくれるでしょう。ありがとう!チェーンコードを更新した後、私は
0
A
答えて
3
FAB-22で見つかったように、Fabric v0.5-0.6はチェーンコード「アップグレード」をサポートしていません。このような動作の理由は、Fabricが情報を元帳に保存する方法です。 chaincodeがPutStateメソッドを呼び出ししようとします:
PutState(customKey string, value []byte) error
ファブリックが自動的にキーにChaincodeIdを追加し、名前CHAINCODE_ID + customKey
を使用して提供された「値」を保存しますが。 その結果、各チェーンコードは、それ自身の変数にのみアクセスできます。更新後、チェーンコードは新しいChaincodeIdと新しい可視領域を受け取ります。
この制限に対処するには、いくつかの回避策があります。あなたは「stub.RangeQueryState」メソッドを使用して総勘定元帳からすべての変数をロードする機能「readAllVars」を作成することができ、あなたのchaincode(V1)で
- :
は、カスタム機能をアップグレードします。
- 新しいバージョン(v2)がデプロイされている場合、 "InvokeChaincode"を使用して(v1)にクロスチェーンコードを要求し、 "readAllVars"から以前の状態を読み取り、すべての(v2)可視領域のすべてを保存できます。
DAO層:
あなたは責任を「読み取り/書き込み」操作になります別のchaincodeを作成することができます。すべてのバージョンは、この "DAO"をすべての "PutState"および "GetState"要求のプロキシとして使用します。そのようなアプローチでは、すべてのChaincodeのバージョンは同じ可視領域で動作します。同時に、このDAOレイヤーはセキュリティの責任を負うようになり、他のチェーンコードがプライベート情報にアクセスできないことを保証する必要があります。
関連する問題
- 1. 変更後のチェーンコードのアップグレード方法は?
- 2. 私は25に私のFedora 24を更新した後、Fedora25
- 3. 2.1〜2.2ベータ2アンドロイドスタジオを更新した後で、私は「EnclosingMethod」エラー
- 4. 私は2.3にアンドロイドスタジオを更新した後2.3
- 5. データベースを更新した後にredisを更新するには?
- 6. MVCGridを更新した後のMVCGrid/MVCForm MVCFordを更新した後の行
- 7. は、Xcodeの8にアップデートした後、私は、最新のXcodeに更新した後、私は、私のXcodeで、これらのエラーを取得エラー
- 8. 更新日時私はデータベースに日付を更新したい
- 9. Firebaseで値を更新した後にテーブルビューを更新する
- 10. JComboBoxを更新した後、長さを更新する方法
- 11. 更新は後
- 12. のNode.jsを更新した後、私のAPIが更新されたバージョンに応答を送信しないNPM
- 13. 更新Drupalは私が更新をsuccededている、8.1.9で最新のバージョンに私のDrupalを更新した
- 14. ユニティを最新バージョンに更新した後、ユニティランチャーは空です
- 15. 角2を更新した後のエラー
- 16. Ajaxを更新した後のイベントリスナー
- 17. グラデルバージョンを更新した後のTransformException
- 18. Firebaseデータを更新した後のコールバック
- 19. アンドロイドスタジオを更新した後のWebView
- 20. DSLRファイルを変更した後のルールの更新方法は?
- 21. 更新後、私のarduinoはスケッチをコンパイルしません
- 22. xamarinフォームを更新した後、私のプロジェクトは極端に遅いです
- 23. ng-bindは更新されません。ページを更新した後にのみ
- 24. 更新後の更新後のPostgreSQLトリガー
- 25. 問題は削除されたブランチを更新した後
- 26. update()呼び出し後のDjangoクエリーセット?クエリセットを更新した後
- 27. CodeBlocksコードを変更した後にプログラムを更新しない
- 28. カバールファイルを変更した後にIntero flycheckを更新します
- 29. JAVA:データベースを変更した後にテーブルを更新/更新する方法
- 30. リピートコントロールで更新した後のランタイムエラー
ありがとう、私はこれを試して、v1の結果を見て、これは大丈夫だと思います。 – teddy