2017-10-27 1 views
0

説明されたアーキテクチャ(http://hyperledger-fabric.readthedocs.io/en/latest/arch-deep-dive.html)によれば、注文サービスはトランザクションをコミットするピアへの分配のためにブロックに集める(RWSets)。次に、ピアをコミットすることにより、承認ポリシーとRWセットが検証され、トランザクションが元帳に適用されます。HLF v1で取引が確定したら?

トランザクションが成功したことを確認するには、コミットしているすべてのピアが「成功」イベントを返すまで、クライアントアプリケーションは待機する必要がありますか?または、「成功」イベントを1つだけ検証する必要がありますか?

答えて

1

トランザクションが成功したことを確認するには、クライアントアプリケーション は、コミットしているすべてのピアが「成功」イベントを返すまで待ち​​ますか?または、ただ は「成功」イベントを1つだけ検証する必要がありますか?

田中、それは非常に良い質問です! 短い答えはいいえです。

理由は、既存の人気blockchainsとは対照的に、HLFはないユニークなトランザクションのライフサイクルを持っていることである。

  • は、トランザクションがそれを発注に送信され、いくつかの裏書人または数エンドーサー
  • 上でシミュレートされましたサービスがブロックされてブロックされる
  • ブロックはピアに送信され、同じ検証コードを実行し、特定のトランザクションのすべての検証コードは、すべてのピアで同じ結論に達することが保証されます。同じ順序でacrすべてそれらのoss。

したがって、あるピアでトランザクションが検証された場合 - 他のピアがトランザクションが存在するブロックを受信すると、それも有効と見なされます。

ただし、データの可用性と同期性を考慮する必要があります。 たとえば、10のピアを使用するアプリケーションがあり、1つのピアだけがイベントを取得し、残りのイベントがなかった場合、他のピアで別のトランザクションを呼び出すと、他のピアが計算する保証が古いデータ(イベントを取得していないにもかかわらず、そのトランザクションのブロックを処理していないことを証明しているという事実)をシミュレートするので、無効なトランザクションにする必要があります。

+0

ありがとう、非常に良い説明です。それが本当に私が確認したいことです。今はFabricのトランザクションの最終性について非常に明確です。 –

関連する問題