2017-04-26 7 views
0

IBM Hyperledger Fabricを初めて使用しました。delStateはどのようにFabricで動作しますか?

文書を越えるしようとしますが、私は夫婦の状態 getStateを、putState、delStateがある参照してください。、など

https://github.com/hyperledger/fabric/blob/master/core/chaincode/shim/chaincode.go

台帳「は不変との連鎖」である場合、私はどのように、することができます思ったんだけど状態を「削除」しますか?

各トランザクションまたはトランザクションによってチェーン化された元帳であるとすれば、状態を削除したり、少なくともハッシュチェーンを破損したりすることは不可能ではないでしょうか?

ありがとうございました!

+0

あなたの質問を改善するためにこの[how-to-ask](http://stackoverflow.com/help/how-to-ask)をお読みください。 – thewaywewere

+0

申し訳ありません...固定! – alwayscurious

答えて

0

キーとその値を格納する状態データベースがあります。これはブロックチェーンを構成するブロックのシーケンスとは異なります。キーとその関連値は、DelState関数を使用して状態データベースから削除することができます。しかし、これはブロックチェーン上にブロックの変更があることを意味するものではありません。キーと値の削除は、以前の追加と同じようにブロックチェーンにトランザクションとして格納され、変更はトランザクションとしてブロックチェーンに格納されます。

異なるハッシュに関して、ブロックハッシュは、非確定的なチェーンコードが存在すると発散する可能性があります。非確定的なチェーンコードの作成は避けるべきです。ここには、非確定的なチェーンコードについて説明するdocumentation topicがあります。

キーの履歴は、キーが削除された後に取得できます。ヒストリを取得するGetHistoryForKey()APIがあり、レスポンスの一部は、キーが削除されたかどうかを示すIsDeletedフラグです。キーの作成、キーの削除、キーの再作成が可能です。 GetHistoryForKey()APIはこのようなケースを追跡します。

状態データベースには現在の状態が格納されているため、キーとその値は状態データベースから削除されます。 GetHistoryForKey()APIは、以前のキー値を見つけるためにステートデータベースではなくチェーン履歴をレビューします。

GetHistoryForKey()APIの使用方法を示すexampleがあります。 getHistoryForMarble関数を参照してください。

+0

ありがとうございます! 私もコードを見ました。私が正しく読むと、たとえdelStateを使ってキーを削除しても、以前の値が残っているということですか? – alwayscurious

+0

私はこの質問に、元の応答の編集で回答しました。 –

関連する問題