首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Hyperledger Caliper原理及使用指南

介绍 前段时间花了一段时间来研究Hyperledger Caliper的原理以及使用方式,研究的时候正处于Caliper改动较大的时候,因此也踩了不少的坑,也发现了一些问题,同时也加深了对这个项目的认识...在调用区块链北向接口时,每个交易的关键指标(如创建交易的时间、交易提交时间、交易返回结果等)都会被记录下来,并用于生成最终的预定义性能指标统计信息。...caliper-cli:用于命令行参数解析。 caliper-core:用于整个项目的核心流程接口的实现。...目前Caliper测试Fabric v1.4以上版本使用的SDK采用的是SDK的高级API,封装效果好,但是测试结果发现,在8核16G的服务器上,测试的sendRate在800TPS左右的时候,服务器CPU...就已经满负荷运行了,无法提升单机的发送速率,和社区开发者交流后证实,在此版本之前,Caliper单机发送速率通过多进程的方式是可以达到4000TPS的,所以目前作者仅仅采用Caliper进行测试网络的初始化

1.6K20

Fabric 2.x 智能合约开发记录

byte, error)在开发 Fabric v2.2 的智能合约时, 使用 github.com/hyperledger/fabric-contract-api-go/contractapi 替换 github.com...时,在其使用教程发现一些限制: 合同的函数只能接受以下类型的参数:stringboolint(包括 int8、int16、int32 和 int64)uint(包括 uint8、uint16、uint32...string 类型)合同的函数还可以接受事务上下文,前提是:它作为第一个参数传入二选一:它要么是类型为 *contractapi.TransactionContext 的对象,要么是在链码中定义的自定义事务上下文...如果函数被定义为返回两个值,那么第一个值可以是参数列表中列出的任何允许类型之一(除了 interface{}),第二个值必须是错误。...结果就在issues里发现了这个Possible issues with byte[] as return type,一看日期Oct 20, 2021,快两年了也没官方的回应......结论最后搜了一圈也没找到原因

22721
您找到你想要的搜索结果了吗?
是的
没有找到

联盟链智能合约安全浅析

(3)链码发送最终输出结果给peer节点,节点对输入(propsal)和 输出(propsalreponse)进行背书签名,完成第一段签名提交。...(4)之后客户端收集所有peer节点的第一段提交信息,组装事务(transaction)并签名,发送事务到orderer节点排队,最终orderer产生区块,并发送到各个peer节点,把输入和输出落到账本上...)如果函数执行成功,则返回第一个参数 int;如果发生错误,则返回 error,如果没有对函数返回值进行检测,那么当读取发生错误时,则可能因为忽略异常和错误情况导致允许攻击者引入意料之外的行为。...当出现越界时,由于无法得知被访问空间存储的内容,所以会产生不确定的行为,可能是程序崩溃、运算结果非预期。 ? ?...•异常处理问题 通常每个函数调用结束后会返回相应的返回参数错误码,如果未认真检查错误码值而直接使用其返回参数,可能导致越界访问,空指针引用等安全隐患。

2.1K10

【技术贴】从拜占庭问题,谈区块链技术实现及政务应用

使用三台计算机进行万一其中一台出错的备份工作,并不能完全解决这个问题。三台独立的计算机按照少数服从多数的原则“投票”。要求其中一台机器提供了错误结果的情况下,其他两台仍然会提供正确答案。...而在编写证据的过程中,研究人员遇到了一个问题:“错误”的计算机可能给其他两台计算机发送互不相同的信息,而后者却无法区别正确性。这就需要使用第四台计算机来应对这类“拜占庭故障”。...图3 HyperLedger1.0系统结构图 事务交易流程 HyperLedger1.0的共识机制(Consensus)是通过事务背书策略(Transaction Endorsement Policy...图9 步骤6交付 步骤6:交付 排序服务集群交付事务执行结果的下个版本的账本数据块给各节点。 ?...HyperLedger采用乐观锁(多版本并发控制)机制来支持并发,当交付节点(Submitter Peers)提交事务之前,如果发现ReadSet和WriteSet已经不一致了,将回滚事务

989100

Redis:17---常用功能之(事务

如果使用了WATCH,DISCARD将取消监视连接监视的所有键 EXEC:提交一个事务 所以Redis的事务比较简单,主要是因为它不支持事务中的回滚特性,同时无法实现命令之间的逻辑关系计算,当然也体现了...Redis的“keep it simple”的特性 二、事务演示案例 MULTI+EXEC 下面使用MULTI开启一个事务,并且执行相关操作,最后使用EXEC提交执行事务内的操作 ?...备注:可以看到事务开启之后,每次执行的命令结果都会显示QUEUED,表示命令入队,但是没有被执行 MULTI+DISCARD 下面使用MULTI开启一个事务,并且执行相关操作,最后使用DISCARD终止本次事务...:下面操作错将set写成了sett,属于语法错误,会造成整个事务无法执行,key和counter的值未发生变化: ?...) 有些事务输入的命令没有错误,但是语法或逻辑有错误,这类错误不会被立即检测出来,只有当事务提交时才会被检测出来 即使在事务的执行过程中发生了错误,服务器也不会中断事务的执行,它会继续执行事务中余下的其他命令

48130

Fabric MVCC 简介

每个事务都会根据其启动时间戳或其他标识来选择适当版本的数据。这使得多个事务可以并发执行,提高了整个系统的吞吐量。 事务提交和版本更新:当事务成功执行并提交时,它将更新相关数据项的版本信息。...MVCC 冲突 MVCC冲突(Multi-Version Concurrency Control)在Hyperledger Fabric或其他使用MVCC机制的区块链系统中,通常在以下情况下会发生: 并发事务修改相同数据项...这包括多个事务同时尝试写入相同的键值对。 读取已被修改的数据:如果一个事务在读取数据时,另一个事务已经修改了该数据,那么在提交时可能会引发MVCC冲突。...这是因为读取事务在执行期间依赖的数据版本不再是最新的。 并发提交时的版本检查:当两个事务同时提交,并且它们的写集中包含相同的键值对时,MVCC机制会执行版本检查。...如果在此期间其他事务修改了该数据项,就可能引发冲突。 需要注意的是,MVCC冲突并不是一种错误,而是一个分布式系统中需要处理的正常情况。系统通过检测和解决这些冲突,确保事务的一致性和正确性。

28320

LoadRunner11-遇到问题及解决办法

错误分析:此处与请求URI相符的资源在录制脚本时已经被提交过一次,回放时不可再重复提交同样的资源,而需要更改提交资源的内容,每次回放一次脚本都要改变提交的数据,保证模拟实际环境,造成一定的负载压力。...去掉这两个勾选 后,测试结果将会只显示自己定义的用户事务。 28.测试结果中,Summary和平均事务响应时间图里的各个事务的最大值、平均值、最小值为什么显示不一样? 答:主要是受采样时间的影响。...30.有些Web测试结果分析图(例如每秒返回页面数)在测试结果分析图中无法看到,如何进行配置?...例如:有验证码的情况下,尽管测试时已经屏蔽了,但是录制的时候提交了请求,但回放的时候不存在响应。 4、参数化时的取值有问题,则报HTTP500错误。...日志发现报了很多0ra-01000错误,这是oracle达到最大游标参数值,google了下,最大原因可能是JDBC连接没关闭。最后查找weblogic连接池出了问题,很多连接没关闭。

2K50

LoadRunner11-遇到问题及解决办法

错误分析:此处与请求URI相符的资源在录制脚本时已经被提交过一次,回放时不可再重复提交同样的资源,而需要更改提交资源的内容,每次回放一次脚本都要改变提交的数据,保证模拟实际环境,造成一定的负载压力。...去掉这两个勾选后,测试结果将会只显示自己定义的用户事务。 28.测试结果中,Summary和平均事务响应时间图里的各个事务的最大值、平均值、最小值为什么显示不一样? 答:主要是受采样时间的影响。...30.有些Web测试结果分析图(例如每秒返回页面数)在测试结果分析图中无法看到,如何进行配置?...例如:有验证码的情况下,尽管测试时已经屏蔽了,但是录制的时候提交了请求,但回放的时候不存在响应。 4、参数化时的取值有问题,则报HTTP500错误。...日志发现报了很多0ra-01000错误,这是oracle达到最大游标参数值,google了下,最大原因可能是JDBC连接没关闭。最后查找weblogic连接池出了问题,很多连接没关闭。

1.3K10

企业应该选择哪种区块链

终局性决定了企业必须等待多长时间才能得到保证的结果,因为用区块链写的交易是不可逆转的,或企业提交事务不会成为孤儿块(orphaned block)。 这也是商业的重要考量标准。...HyperLedger Fabric是HyperLedger上的区块链项目之一,就如同其它区块链技术一样,它有一个账本,使用智能合约,并且是一个由参与者管理他们的交易的系统。...区块链数据结构与世界状态非常不同,因为一旦编写,就无法修改。它是一个不可变的块序列,每个块都包含一组有序事务。...HyperLedger Fabric支持需要将隐私(使用信道)作为关键操作需求的网络,同时也是相对开放的网络。 共识 事务必须按照它们发生的顺序写在帐本上,即使它们可能是网络中不同的参与者生成的。...要做到这一点,必须创建事务的顺序,并且必须在帐本中创建一种拒绝错误事务(或恶意的)的方法。 共识机制是一个经过彻底研究的计算机科学领域,目前有很多方法可以实现它,每一个都有不同的权衡。

1.5K00

故障分析 | Sql_slave_skip_counter 使用不规范对复制的影响

错误),无法发现需要更新的行记录。...) 错误,insert 中的 Duplicate entry(1062) 错误可以使用类似的方法去分析。...id=1的情况下,主库再更新数据,然后通过复制将主库id=1的记录传递到从库,在 SQL 线程回放时造成从库无法更新不存的记录 (报1032错误),导致 SQL 线程故障(此时 SQL 线程已经停止)。...按照 binlog 记录的提交顺序,可以看到非事务表会先提交,innodb 事务表在 commit 执行之后提交,所以1032报的是 replica_myisam 表相关的错误操作。...2.3 sql_slave_skip_counter 清零 为了防止 sql_slave_skip_counter 对复制的影响,需要在错误跳过之后及时的恢复,将参数置为零。

46730

使用IBM Blockchain Platform extension开发你的第一个fabric智能合约

提交事务后,将使用关键字myAssetId和值创建一个新资产。...这样的事务,称为“查询”。如你所见,此函数仅采用myAssetId并返回键所指向的任何状态的值。 可以详细看下合同中的其他交易。然后,你可以继续打包和部署该合同,从而来使用它。...image 提交和查询事务 Fabric网关和Hyperledger Fabric网络的peer进行连接,客户端应用程序可以使用该网关提交事务。...系统将要求你提供交易参数:尝试[“ 001”,“my asset one”](或你喜欢的任何键和值,但请确保记住使用的键!)。...参数以JSON格式提交,因此请确保你完全按照显示的方式输入输入内容,以便你根据此交易要求提交由2个字符串组成的数组。 接下来,以类似方式提交updateMyAsset。

1.3K20

超级账本-如何贡献

反馈错误 如果你是一个用户,并且发现错误,请使用JIRA来提交问题。在您创建新的JIRA问题之前,请尝试搜索是否有人已经提过类似的问题,确保之前没有人报告过。...提交你的修复 如果你在JIRA上提交了你刚刚发现的问题,并希望修复它,我们很乐意并且非常欢迎。请将JIRA问题分配给自己,然后您可以提交变更请求(CR)。...评论“我在系统X上尝试过这个CR,是正确的”或者“我在系统X上运行这个CR发现了一些错误”将帮助维护者进行评估。因此,维护人员也能够更快地处理CR,并且每个人都能从中获益。...因为没有这些,我们无法知道你的代码是否真的正确地工作。 单元测试需要没有额外的依赖。你应该使用 go test 或者等价的语言的测试方式来运行单元测试。...相关的主题 - 维护者 - 使用Jira来了解当前的工作流项 - 设置开发环境 - 构建Hyperledger Fabric - 配置 - 申请一个Linux Foundation账号 - 使用Gerrit

1.1K20

故障分析 | OceanBase Proxy 无法连接 OBserver 集群

---一、问题现象:使用RPM的方式部署proxy实例,部署之后使用OBclient进行连接,报错提示:ERROR 2013 (HY000): Lost connection to MySQL server...RSlist参数决定的,登入proxy实例,查看proxy内的root service list参数,存在10.186.90.63图片5.3 日志检查观察obproxy.log发现两条警告信息,意思为无法通过...的IP:Port中的端口,应为OceanBase数据库的SQL port端口2881,而不是2882(RPC端口)这次的问题引起的原因其实很好理解,但是排查起来比较费劲儿(进程能正常启动运行、日志只有找不到数据库集群名的错误...七、其他:使用过程中发现了两处缺陷,分别是:a. obproxyd.sh脚本的启动参数说明有误b. obproxyd.sh脚本结束符存在错误导致无法运行已向官方提交了PR,感兴趣的可以关注一下:https...如不符合预期可以退出进程将错误输出至STD上。或者在detail日志内增加一些描述,如:为什么找不到集群的cluster_name。这样会更方便定位问题。

89430

关于http 500错误的小结分享

一般情况下,http 500内部服务器(HTTP-Internal Server Error错误说明IIS服务器无法解析ASP代码,访问一个静态页面试试是否也出现这个问题。...如果是其中的一种情况,请一一将 改变的参数设置回来看是否解决问题。 如果静态空间也无法访问,则说明解析还没生效。...3、录制时请求的页面、图片等,在回放的时候服务器找不到,则报HTTP500错误,若该页 面无关紧要,则可以在脚本中注释掉,问题将会得到解决。...例如:有验证码的情况下,尽 管测试时已经屏蔽了,但是录制的时候提交了请求,但回放的时候不存在响应。 4、参数化时的取值有问题,则报HTTP500错误。...错误是 '没有注册类别'。 无法启动 MS DTC 事务管理器。 MS DTC 事务管理器启动失败。LogInit 返回错误 0x2。 找不到 MS DTC 日志文件。

5.3K10

hyperledger fabric1.0整体架构与记账逻辑架构的分析

))) err = stub.PutState(B, []byte(strconv.Itoa(Bval))) 1.客户端SDK把'{“Args”:[“invoke”,”a”,”b”,”10″]}’这些参数发送到...5.Orderer节点只是负责排序和打包工作,处理的结果是一个Batch的Transactions,也就是一个Block,这个Block的产生有两种情况,一种情况是Transaction很多,Block...6.打包好的一堆Transactions会发送给Committer Peer提交节点, 7.提交节点收到Orderer节点的数据后,会先进行VSCC校验,检查Block的数据是否正确。...这是我完全无法接受的一点!...不管在提交节点对事务的读写数据版本验证是否通过,因为Block已经在Orderer节点生成了,所以Block是被整块写入区块链的,而在State Database不会写入,所以会在Transaction

40430
领券