请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

扫一扫,登录网站

首页 区块链生态 查看内容
  • 5192
  • 0
  • 分享到

如何提升区块链(联盟链)的性能?

2018-11-29 10:07

来源: 巴比特 作者: 海伦


11月28日,在由Odaily星球日报主办的新区势区块链峰会上,徐葳教授带来了以《区块链与数据融合技术的一些探索》为主题的演讲。徐葳教授毕业于宾夕法尼亚大学,后在加州伯克利攻读硕博,现在清华大学交叉信息研究院担任博导,主要研究方向是大数据、人工智能金融科技。

如何提升联盟链的性能


以下为徐葳教授的演讲内容精编,由巴比特整理。

我过去是做分布式系统的,特别早的时候做了P2P,然后我就对这个东西失望了,所以我是非常典型的反去中心化的思想,我们是一个学术单位,希望能在区块链一些模块的核心技术方面寻找突破。

区块链为什么有趣?它确实是集计算机科学之大成。包括分布式系统的可靠性和一致性技术、密码学理论、博弈论和机制设计、P2P网络、大数据等等。同样因为它集成了这么多技术,所以很难找到一个人,或者一个研究组把它们统统搞懂。好在区块链大部分是开源的,我们就想大家可以单点突破,做一些科研尝试,最后把这些东西集合起来。为此,我们主要专注于两件事,一是提升区块链(联盟链)的性能,二是保护隐私的数据融合。

我们要做的事情首先是提升区块链的性能,我这里指的是联盟链,暂时不考虑公链那种比较复杂的情况。现在很多链说自己性能很高,但其实是因为它有多个分区,这是另一回事,我们重点做的事提升单个分区(partition)的性能。

Gosig的基本目标

我们做了一个系统,叫Gosig,这个系统是基于PBFT的,这是一个非常经典的共识协议,它的优点是在集群里即时产生共识,不想比特币的POW机制需要几个区块后才能共识,因此PBFT的性能比较高。当然相对应的它的安全性不如POW,因为它只能防范小于1/3的节点作恶,坏人可以控制整个网络,任意造成网络分割,但是在联盟链里一般不会存在说我今天想攻击谁就攻击谁,而是说我来领导这一轮吧,要是不行这个块就空了。

我们希望既能满足PBFT的所有假设,但是把它的协议扩展到一个很大的范围。坏人可以任意瞬时杀掉一些节点,只要仍满足f<N/3。另外其他的联盟链节点数量一多,性能就不行了,我们希望可以提升它的可扩展性,支持广域网,这是我们设计时的一个基本目标。

Gosig的设计思路

我们基本没有改动PBFT,只是简化了正确性证明。因为分布式系统是个很复杂、很专业的领域,不是拍脑袋就能想出来的。那怎么让它的效率变高呢?原先是要进行多轮投票,而且每个人都要把消息广播给所有人,这种方式听起来就很慢。我们是用Gossip协议边传输数据边投票,具体怎么实施呢?就是我把消息发出去,不会等别人回复的,通过聚合签名来避免投票中的双向通讯,每一轮随机的秘密选出leader,避免针对leader的攻击,所以在生成新的leader之前,我不会知道它是谁。它是一个协议层和网络层的共同优化,我要把所有的操作全部流水线化,充分利用所有的计算和网络资源(PBFT+BitTorrent),任何人在任何时间都有事做,把网络填的满满的。

Gosig的性能实现

我们测试的性能,如果用280个节点,在14个不同的数据中心里面,在广域网环境中,就是它是跨全球的,数据中心的那个延迟性还是蛮高的。在这样一个环境下,我可以实现60MB的block,可以承载单个分区每秒15000笔交易,确认一个块的时间是16秒。

后来我们又找了1000个节点,仿真5000个节点,限制在20Mbps的带宽下,在全网共识下,能达到每秒3000笔交易,确认出块时间是24秒。然后你再观察一下的话,会发现所有的网络带宽全部用上了,平均带宽使用达到16.8Mbps,也就是说物理网络带宽说唯一的瓶颈了,它的物理极限就这么多了。当然我还可以把带宽再加一些,性能会更高。

这样极致的性能有什么好处?天下武功唯快不破,你只有把下层做得足够快,上层应用才能做,这是我做系统设计的一个理念。

版权申明:本内容来自于互联网,属第三方汇集推荐平台。本文的版权归原作者所有,文章言论不代表链门户的观点,链门户不承担任何法律责任。如有侵权请联系QQ:3341927519进行反馈。
123下一页
相关新闻
发表评论

请先 注册/登录 后参与评论

    回顶部