3

Hyperledger Fabric のチェーンコードはすべての検証ピアで実行されるため決定論的である必要があることを考えると (ブロックは HyperLedger Fabric でマイニングされていますか? )、一意の ID を取得して、一意の値で「InsertRow」できるようにするにはどうすればよいでしょうか。

たとえば、コードを実行して新しいレコードをテーブルに追加する場合、一意のキーが必要になります。Validating Peer 1 (vp1) で GUID を取得した場合、Validating Peer 2 (vp2) で GUID を取得した場合は別のキーになります。ミリ秒をキーとして使用した場合も同じです。

「クライアント」から渡すのではなく、チェーンコード内からチェーンコードで決定論的な一意の ID を取得する方法はありますか?

4

2 に答える 2

4

これを、テーブルと一緒に putstate に格納された単調に増加するシーケンス変数として実装する傾向があります。IOW、Init() 関数で PutState("nextsequence", 0) のようなものを初期化し、新しい ID が必要なときはいつでも RMW を実行します。RMW ミューテーションは行挿入に暗黙的に結合され、すべてのインスタンスで決定論的である必要があります。

于 2016-05-18T15:05:21.980 に答える
0

チェーンコードによって ID を生成する必要がある場合は、単調に増加するカウンターが適切なソリューションです。ID を tx 生成アプリで選択する必要がある場合は、ID を再利用できないというルールを適用し、tx ジェネレーターが衝突耐性 ID を選択するために使用するプロトコルを奨励する必要があります。

于 2016-05-24T22:13:06.467 に答える