1

またはを使用して、Hyperledger ファブリックでトランザクションを送信した後、特定のピアから裏書を取得する方法はありますcontract.submitTransaction()channel.sendTransaction()? これまでのところ、承認は常に、組織内の他のピアからではなく、同じピアから返されているようです。以下の私の環境の詳細を参照してください。また、node sdk sendTransactionProposal(request)'sChaincodeInvokeRequest の優先リストまたは無視リストを使用して特定のピアをターゲットにしても、違いはないようです。この問題に対処するための特定のドキュメントや代替リソースはありますか?

ChaincodeInvokeRequest{ targets: allPeers または peer2, // または別のピアが優先: peer2, ignore, peer1 }

環境の詳細 現在のセットアップ: 2 つのピアを持つ 1 つの組織

シンプルな承認ポリシー:

{"identities":[{"role":{"name":"member","mspId":"Org1MSP"}}],policy:{"1-of":[{"signed-by":0}]}}

Fabric SDK ライブラリ:

fabric-ca-client - v1.4.1
fabric-client - v1.4.1
fabric-network - v1.4.1

ハイパーレジャー ファブリックのバージョン:v1.4.1

次のアプローチを使用して、sdk 内の特定のピアをターゲットにします。

const request = {
      targets: peers or peer[1] or [peer2], -- target specific peer
      chaincodeId: chaincodeName,
      txId,
      fcn: functionName,
      args,
      transientMap: transientMapData // , // private data,
      ignore: list of peer[s] to ignore
      preferred: list of peer[s] to prefer
    };


    const endorsementResults = await channel.sendTransactionProposal(request);

    if (channel.verifyProposalResponse(endorsementResults[0][0])) {
      const transactionRequest = {
        proposalResponses: endorsementResults[0],
        proposal: endorsementResults[1]
      };
      invokeResponse = await channel.sendTransaction(transactionRequest);
    } 

予想された結果:

transaction1 - クライアントはトランザクションを peer1 に送信し、peer1 から承認を取得します。transaction2 - クライアントはトランザクションを peer2 に送信し、peer2 から承認を取得します。

実績:

transaction1 - クライアントはトランザクションを peer1 に送信し、peer1 から承認を取得します。transaction2 - クライアントはトランザクションを peer2 に送信し、peer1 から承認を取得します。

4

0 に答える 0