Zhuang's Diary

言之有物,持之以恒

1. PBFT https://github.com/yeasy/blockchain_guide/blob/master/evaluation/hyperledger.md

Hyperledger Fabric v0.6 - PBFT 性能评测

环境配置

类型 操作系统 内核版本 CPU(GHz) 内存(GB)
物理机 Ubuntu 14.04.1 3.16.0-71-generic 4x2.0 8

每个集群启动后等待 10s 以上,待状态稳定。

仅测试单客户端、单服务端的连接性能情况。

评测指标

一般评测系统性能指标包括吞吐量(throughput)和延迟(latency)。对于区块链平台系统来说,实际交易延迟包括客户端到系统延迟(往往经过互联网),再加上系统处理反馈延迟(跟不同 consensus 算法关系很大,跟集群之间互联系统关系也很大)。

本次测试仅给出大家最为关注的交易吞吐量(tps)。

query 交易

pbft:classic
clients VP Nodes iteration tps
1 4 2000 193.05
pbft:batch
clients VP Nodes batch size iteration tps
1 4 2 2000 193.99
1 4 4 2000 192.49
1 4 8 2000 192.68

invoke 交易

pbft:classic
clients VP Nodes iteration tps
1 4 2000 141.34
pbft:batch
clients VP Nodes batch size iteration tps
1 4 2 2000 214.36
1 4 4 2000 227.53
1 4 8 2000 237.81

PBFT结论

PBFT单客户端连接情况下,TPS 基本在 190 ~ 300 范围内。

============================================

2.tendermint https://www.inf.usi.ch/faculty/pedone/Paper/2021/srds2021a.pdf

我们使用 Tendermint 版本 0.33.8 和 Go 版本 1.15,使用默认配置。 内存池最多可存储5000笔交易,最大字节大小为1GB,块大小为20MB。 这些默认限制足以应付未完成交易的最大数量。两个都连接的最大发送和接收速率为 5000 KB/s,控制gossip通信的时间间隔是 100 毫秒。
我们在地理分布式环境中进行了实验,验证器节点均匀分布在各大洲的 16 个 AWS 区域中。另一个 AWS 实例托管 1 个以种子模式运行的非验证器节点和所有客户端。
我们将所有客户端托管在单个 AWS 服务器中,以将所有测量集中在一个位置。客户端在闭环中均匀地向验证器提交 1KB 交易。

图中比较了 Tendermint 在 16、32、64 和 128 个验证者规模下的性能。 我们并不期望通过增加验证器的数量来提高性能,因为消息复杂性和共识成本随着进程数量的增加而增加。 本次比较中使用了 128 个验证器的参考工作负载,在实验中的验证器之间均匀分配 1536 个客户端。 采用了第 VII-B 节中考虑的相同实验设置。图中,在相同的工作负载下,当我们将验证器数量增加一倍时,吞吐量会适度下降。

Tendermint结论

Tendermint 的 TPS 基本在 400 ~ 600 范围内。交易延时在2~4秒。

根据以上性能数据,可以在设计区块链系统时,预先分析得出系统综合来看,性能瓶颈到底在哪里。如,某些外部的SaaS服务,性能可能会低于上述区块链指标,从而拖累系统的整体性能。

The best of CBDC technical whitepaper

Corda的共识容错能力较弱

Version 1~5,Corda会分享交易直接相关的前一笔交易信息,可以防止的错误包括:

  1. 前一笔交易的签名错误;
  2. 前一笔交易的金额错误;

不能够发现的错误包括:

  1. 前一笔交易双方共同伪造交易,用以欺骗第三方;
  2. 间隔多笔的伪造交易,用以欺骗第三方;
  3. 交易的排序由Kafka决定,或者如ABC均提出向D购买某资产,D可以不按照合约逻辑,或者时间顺序,而是按照D在规则外的某种喜好,来完成交易,进而欺骗其他参与方。

可能发生的效率问题:

  1. 如若某节点在接收到某交易时,想校验其前序交易,不仅仅是前一个交易,而是全部的前序交易,首先是及其困难的,而且随着链的增高,其校验时间也在升高。
  2. 即使增加校验节点,但并不能够解决上述问题。另外,校验节点的可信性,效率等都成为新的系统问题。

综上,针对需要区块链的共识机制来增强信任的场景,Corda不是一个好的选择。但是,如果在无需算法来建立信任(如工农中建四大行的某种资产交易系统,他们相互之间的欺诈风险非常低),而是需要某种账本系统,来减少对账摩擦的话,Corda可以帮助到企业,完成分别记账的任务。

参考:如上,多年的困惑,得到Corda的指导和确认,感谢。