- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在使用 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
}
但是,当我使用以下代码等待订购者确认交易时:
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 的屏幕截图:
如果我错了请纠正
我知道这需要时间,因为排序者
确认交易并提交到分类帐
。但您不认为只有在排序者
同意交易并提交到账本
时我们才应该继续。如果是,则需要 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/
我的 React 项目需要更新 nodejs。那么我如何将我的 Node js 重新安装到 Ubuntu 16.04 中的最新版本。 我当前的 Node 版本是 node -v v6.0.0 我当前的
我正在寻找逐步调试 NodeJS 服务器代码的有效方法。目前我使用了几十个console.log(),这非常困难。完美的工具可以让我检查堆栈中每个变量的值并逐行跟踪我的程序。首选操作系统 = MacO
我的网站上有以下两个文件: firebase.js gridsome-server.js firebase.js 是一个“常规”javascript 文件,包含以下内容: import firebas
我有一个nodejs应用程序从文件夹A执行,二进制X也在文件夹A中执行(使用子进程exec)。二进制 X 在文件夹 A 中生成输出文件 O,因此始终从调用位置开始。 我需要nodejs应用程序来在仲裁
我有以下nodeJS服务器,它似乎工作正常。我想编写一个客户端,从服务器接收消息并根据消息调用一些 JS。 涉及的步骤是: 用户访问网址http://server.xyz.com:8080/pa no
我想从 Node 服务器进行其余 api 调用。我目前脑子里有请求模块。 您是否会建议用于 Nodejs 中生产实践的 REST 调用(get/post)的任何其他最佳模块? 问候,公羊 最佳答案 R
我正在尝试像这样使用 mainModule: const { mainModule } = require('process'); module.exports = path.dirname(main
我现在对那些版本号真的很困惑。我正在计划一个新项目,想知道这两个版本之间有什么区别。这两个版本之间似乎有很大的跳跃,但现在我找不到区别。 使用 4.1 版安全吗? 感谢您的帮助! 最佳答案 跳转到 v
我试图找到我的问题的解决方案,但找不到,并且正在寻找一些“最佳实践示例”。我有一个 nodejs express 应用程序,我的函数在文件中拆分。例如我有这个 Controller (oktacont
这看起来像是一个非常简单的问题,但作为一个 JS 初学者,我想知道是否可以在 webextension 中使用 NodeJS 模块(例如我想使用这个:https://github.com/yaronn
我有一个文件。a.js class A{ constructor(name){ this.name = name; } displayName(){ conso
我想做的是这样的: node x.js | node y.js 文件 x.js 只是打印一个字符串: console.log("hi"); 文件 y.js 旨在通过 process.stdin 获取字
对于这个新的nodejs debugger I am working on我想对显示的源代码行进行着色。有什么关于 npm 使用的建议吗? 有很多语法荧光笔,但使这种情况有点不同的是 输出是到终端;它
有没有什么方法可以从 ejs View 中引用包含在 node_modules 文件夹中的 Nodejs 库? 我正在使用 expressjs 并且我的客户端库由 /public 文件夹提供,如下所示
我是 NodeJS 的新手,我正在尝试根据 NodeJS 站点上的指南在 NodeJS 中创建一个服务器。我已经在我的电脑上安装了 NodeJS 并使用以下代码制作了 app.js 文件。 const
我有一个 nodejs-express 服务器 (1) 与 mongodb 通信,还有一个 web 服务器 (2) 在 nodejs-express 和 Angularjs 中。我正在尝试发出 pos
我一直在解决(firebase 和 nodejs)问题,这是该问题的第四部分,如何在登录到 server.js 后传递数据 我已经尝试过this但未能使其正常工作。 基本上,我正在尝试将用户idTok
每次页面刷新时,NodeJS 都会在套接字上多次写入数据。当我刷新页面时,nodejs 服务器写入套接字的计数增加,在多个页面刷新时,写入计数固定为 3。 请检查控制台输出是否有此奇怪的响应。请提出同
我在尝试更新文件夹并再次部署其内容时遇到问题。我必须使用 NodeJS 并已获得端口 8080 来使用。我尝试创建一个 php 脚本(update.php): 现在我想启动NodeJS脚本进行更新,
我不明白java多线程系统和Nodejs多线程系统在性能和资源共享方面的区别。由于 NodeJS 为您的程序使用事件循环单线程,但在幕后,它将任务分配给不同的线程,如文件读取或数据库查询。所以它使用多
我是一名优秀的程序员,十分优秀!