2017-11-27 15 views

答えて

7

は2位Hyperledgerファブリック内の "ストア" のデータがあります。シリアライズされたブロックを格納するファイルベースの元帳です。各ブロックには1つ以上のトランザクションがあります。各トランザクションには、1つまたは複数のキーと値のペアを変更する読み取り/書き込みセットが含まれています。元帳はデータの決定的なソースであり、不変です。

状態データベースには、特定のキーに対する最後の既知のコミット値が保持されます。これは、各ピアがトランザクションを検証してコミットするときに設定されます。元帳は、元帳の再処理からいつでも再構築できます。現在のところ、状態データベースには、埋め込まれたLevelDBまたは外部CouchDBという2つのオプションがあります。

Hyperledgerファブリックチャネルに精通している場合は、各チャネルごとに別々の元帳があります。

+0

あなたが言及したが、「状態データベースは、任意の指定されたキーの最後の既知のコミットされた値を保持している」ので、我々はそれが1)チェーンからか、2)状態のDBからデータを取得するところから照会すると?状態データベースからのものであれば、「状態データベースは、指定されたキーの最後の既知のコミット値を保持する」と述べたため、特定のキーを取得する方法はありません。 – Moulali

+0

状態コードのクエリまたはGetStateは状態dbからデータを返します。キーの最後の値だけを返します。 鍵の履歴全体を取得する場合は、ピアの構成で履歴データベースを有効にする必要があります –

0

チェーンはトランザクション・ログで、ハッシュ・リンク・ブロックとして構成されています。各ブロックにはN個のトランザクションのシーケンスが含まれています。ブロックヘッダは、ブロックのトランザクションのハッシュと、前のブロックのヘッダのハッシュとを含む。このようにして、元帳上のすべてのトランザクションが順序付けされ、暗号化されてリンクされます。

状態データベースは、単にチェーンのトランザクションログへのインデックス付きビューであるため、いつでもチェーンから再生成できます。

出典:http://hyperledger-fabric.readthedocs.io/en/release/ledger.html

関連する問題