取引裏書の基本ワークフロー

5463 ワード

2.取引裏書の基本的なワークフロー次のように、トランザクションの高度な要求プロセスを概説します.
注:以下の契約*は、すべての取引が確定的であるとは考えられません.すなわち、非確定的な取引を許可します.
2.1.クライアントはトランザクションを作成し、選択した同業者に送信します.トランザクションを呼び出すために、クライアントは選択した承認されたピアのセットにPROPOSEメッセージを送信します(2.1.2と2.3節を参照).与えられたchaincodeIDの承認された仲間のセットは、ピアを介して顧客に提供することができ、後者は、承認ポリシーによって認可されたピアのセットを知ることができる(第3節参照).例えば、取引は、所与のchaincodeIDのすべての支持者に送信することができる.つまり、一部の支持者はオフラインになる可能性があり、他の人は取引を承認しないことに反対し、選択する可能性があります.クライアントをコミットして、使用可能なサポートによってポリシー式を満たすようにします.
以下では、まずPROPOSEメッセージフォーマットを詳細に説明し、次に、コミットクライアントとエージェント間の可能なインタラクションモードについて説明する.2.1.1. PROPOSEメッセージフォーマットPROPOSEメッセージのフォーマットはであり、txは以下に説明する強制およびアンカーオプションパラメータである.tx = 、そのうち
ClientIDはコミットクライアントのIDであり、chaincodeIDは取引所に関連するチェーンコードであり、txPayloadはコミットされたトランザクション自体を含むペイロードであり、タイムスタンプはクライアントによって維持される整数が単調に増加する(新しいトランザクションごとに)clientSigはtxの他のフィールド上のクライアント側の署名である.txPayloadの詳細は、呼び出しトランザクションと配置トランザクションの間で異なります(すなわち、特定のシステムチェーンコードの配置に関連するトランザクションを呼び出します).呼び出しトランザクションの場合、txPayloadは2つのフィールドで構成されます.txPayload = .ここで、動作はチェーンコード動作(function)およびパラメータを表し、メタデータは呼び出しに関連する属性を表す.配置トランザクションの場合、txPayloadは3つのフィールドで構成されます.
txPayload=
source ,

, 。 , txPayload , txPayload ID ( 3 )。
, , ( , KxN ), PROPOSE “ ” KVS ( 1.2 )。 , KVS ( , 2.2 )。
tx tid( ,tid = HASH(tx))。 , 。

2.1.2。
。 , (すなわち、アンカーパラメータがない)は、 のコードに され、その 、バージョン (アンカー)が され、クライアントは で、そのPROPOSEメッセージのパラメータとして のサポート に することができる. の では、クライアントは、 されたすべてのサポートに(アンカーなし)を することができる. なるコミュニケーション が であり、お はこれらを に することができます(2.3 を ).
2.2. された は、 をシミュレートし、クライアントから した , epID , 。 , KVS ( ) , 。に を する.
シミュレーショントランザクションは、トランザクション のチェーンコード(chaincodeID)と、ピアがローカルに した のコピーに することによって、ピアの なトランザクション (txPayload)を することに する.
として、DB のMVCC+postimage とも ばれるピアコンピューティング み しバージョン (readset)およびステータス (writeset)をサポートする.
い すと, はキー/ (k/v)からなる.すべてのk/vエントリはバージョン され、すなわち、 エントリには されたバージョン が まれ、 の に された を するたびに する.トランザクションを するピアレコードチェーンコードがアクセスするすべてのk/vペアは、 み りまたは き みに されますが、ピアはステータスを していません.さらに えば、
がトランザクションを することを する の が えられ、トランザクションによって み す キーワードkに して(k,s(k)が える.バージョン)を み みセットに します.また、トランザクションによって された キーワードkから しい v’に して、 (k,v’)が き みセットに される.あるいは、v′は、 しい から の (s(k)とすることができる.)の .クライアントがPROPOSEメッセージでアンカーポイントを した 、クライアントが したアンカーポイントは、トランザクションのシミュレーション にサポートピアによって された み りセットに しくなければなりません.
その 、ピアは、 (txであってもよい)を、その の(ピア) に し、サポート と ぶ.デフォルトでは、 の ロジックは スキームを け れ、 に スキームに します.しかしながら、 ロジックは、 えば、トランザクションをサポートするかどうかの を するために、 およびtxを とするレガシーシステムと するなどの の を することができる.
ロジックが を すると、メッセージがコミットクライアント(tx.clientID)に されます.
tran-proposal:=(epID,tid,chaincodeID,txContentBlob,readset,writeset),
ここで、txContentBlobはチェーンコード/トランザクション の である.txContentBlobをtxのいくつかの として することを している( えば、txContentBlob=tx.txPayload).epSigは の をサポートしていない 、 ロジックが の を した 、エージェントは クライアントにメッセージ(TRANSACTION-INVALID,tid,REJECTED)を することができる.
このステップでは、エージェントはその を せず、エージェントを にトランザクションシミュレーションによって された は に しません.
2.3.お が の を し、 サービスを じてブロードキャスト クライアントが するまで(TRANSACTION-ENDORSED,tid,) の「 な」メッセージと を し、 が されるまで します.2.1.2 で べたように、これは、1つまたは の との に する がある.
「 」の な は、チェーンコード ポリシーに する( 3 ). が たされれば、 は された.まだ していないことに してください. された の の は が されたものとみなされ, され として される.
クライアントがトランザクション の を しようとしない 、トランザクションは され、 で するオプションが されます.
に められた については、 から サービスを します.コミットクライアントはbroadcast(blob)を して サービスを び し、blob= である.クライアントが サービスを び す がない は、 したピアを してブロードキャストをエージェントできます.このようなピアは、 からメッセージを しないで、 に されなければなりません.そうしないと、 は とみなされる があります.ただし、エージェント は な を すことができない があります.
2.4. サービスは、イベント (seqno,prevhash,blob)が し、シーケンス がseqnoより いblobのすべてのステータス が に された 、 に を す.
するチェーンコード(blob.tran-proposal.chaincodeID)のポリシーに づいてblobをチェックする.endorsementが かどうか. な 、 (blob.endorsement.tran-proposal.readset)も しているかどうかを します.より な では、 の が なる があるが、この 、 ( 3 )は がどのように するかを している.ステータスに して したコンシステンシ を するか、 に づいて の を なる で うことができます.Serializableは、チェーンコード ポリシーが なる を しない り、デフォルトの です.シーケンス は、リードセットの キーに けられたバージョンがこの のキーバージョンと しいことを し、この を たさないトランザクションを することによって できます.
これらの がすべて した 、 は または と なされます.この 、ピアは、PeerLedgerのビットマスクにおいてトランザクションを1としてマークするblob.endorsement.tran-proposal.writesetはブロック に されます( スキームが じ 、 ポリシーロジックはBlobを する を します. ).もしblob.endorsementの ポリシーの に すると、トランザクションは になり、ピアはPeerLedgerのビットマスクでトランザクションを0とマークします. な は を えないことに することが です.これは、 されたシーケンス を する イベント(ブロック)を した 、すべての( しい) が じ になるのに であることに してください.すなわち、 サービスの により、すべての しいピアは、 じ (seqno,prevhash,blob)イベントを する. ポリシーの とreadsetのバージョン の は であるため、 しい もblobに まれるトランザクションが であるかどうかにかかわらず、 じ を すだろう.したがって、すべてのピアが じトランザクション・シーケンスをコミットして し、ステータスを じ で します.
トランザクションフローチャート( パス).
1. なトランザクション・プロセス( なケース・パス)の .