gpt4 book ai didi

node.js - Hyperledger Fabric nodejs sdk性能问题

转载 作者:太空宇宙 更新时间:2023-11-04 00:10:09 24 4
gpt4 key购买 nike

我在使用 Hyperledger Fabric Node.js sdk 时遇到性能问题。

当我向 sdk 发出调用请求并使用以下代码消耗链代码给出的响应时

var proposalResponse = results[0];
var proposal = results[1];
let isProposalGood = false;

if(proposalResponse
&& proposalResponse[0].response
&& proposalResponse[0].response.status === 200){
isProposalGood = true;
var res = JSON.parse(proposalResponse[0].response.payload.toString());
res.event_status = 'VALID'
resolve(res);
}else{
reject(createErrorResponse(proposalResponse[0].message,500))
return
}

API 在 50 毫秒内响应,如下面的屏幕截图所示: enter image description here

但是,当我使用以下代码等待订购者确认交易时:

if (code === 'VALID'){
//get payload from proposal response
var res = JSON.parse(proposalResponse[0].response.payload.toString());
res.event_status = 'VALID'
resolve(res);
}else{
var return_status = createErrorResponse("Transaction was not valid", 500);
return_status.tx_id = transaction_id_string
reject(return_status)
return
}

大约需要 2500 毫秒才能响应,您可以在下面看到 postman 的屏幕截图:

enter image description here

如果我错了请纠正

我知道这需要时间,因为排序者确认交易并提交到分类帐。但您不认为只有在排序者同意交易并提交到账本时我们才应该继续。如果是,则需要 2.5 秒才能响应(网络在本地机器的 docker 上运行,sdk 在同一台机器上运行),这是一个性能问题。

如果数据写入链码,但排序者拒绝将交易写入账本,会发生什么?

如有任何帮助,我们将不胜感激

最佳答案

the orderer confirms the transaction and commits into the ledger.

排序服务的任务(顾名思义)只是将接收到的背书交易按时间顺序排序,然后将它们传递给 channel 中的所有 Node 。订购者实际上并不将交易提交到分类账中。

提交者同行会这样做。提交是一个耗时的过程,因为所有 Node 都会验证 block 内的所有交易,以确保背书策略得到满足,并确保自交易执行生成读取集以来,读取集变量的账本状态没有发生变化。区 block 中的交易被标记为有效或无效。然后每个对等点将 block 附加到 channel 的链中,并且对于每个有效事务,写入集都将提交到当前状态数据库。 发出事件,以通知客户端应用程序交易(调用)已不可更改地附加到链中,并通知交易是否已验证或无效。

了解 Transaction Flow 中的所有这些详细信息后,需要注意的是,客户端应用程序不应等待排序者收到的响应。相反,它应该只请求排序者传递已背书的交易,并且应用程序应该订阅对等方发出的事件,以便它应该知道或被通知交易实际上在 channel 的链中不可变地提交。

您可以在Fabric Node SDK docs中获得有关事件订阅的进一步帮助。 。

What happen if data is written into the chaincode and after that orderers deny to write the transaction into the ledger?

这是根本不可能的,因为只有当交易通过背书 Node (由背书策略指定)的适当背书进行验证时,数据才会附加到链上,然后最终传递给提交 Node 以在链中附加新值并更新世界状态。数据只有在通过所有验证后才会写入链中,因此排序者永远无法否认数据中所做的更改。

关于node.js - Hyperledger Fabric nodejs sdk性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50161129/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com