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

一个关于区块链公链的巧妙设想

从2008年中本聪在比特币社区发布比特币白皮书,《比特币——一种点对点的电子现金系统》算起,比特币已经走过了十年,从鲜为人知到几万块一枚比特币,我们有幸见证了一个新神话的崛起。现在,比特币及其底层技术——区块链蓬勃发展,大有席卷世界,一飞冲天的气势。不过虽然有志气吞山河,但是区块链技术现在仍然还有着很大的局限性,尤其是在公链领域,还有瓶颈等待突破。

前几天,WanShare君在推特上看到一些专家发表看法,认为比特币不能称为数字黄金的重要原因在于比特币不能实现大规模应用,甚至有时需要支付比交易费更高的手续费。虽然有很多比特币支持者对此持反对意见,认为数字黄金就跟现在的黄金一样只履行储值手段,现实生活中也没有人用黄金交易。

其实,比特币网络的拥堵问题才是制约其落地的重要原因。每秒7笔的吞吐量确实很慢。

现在世界各地的专家、高手、技术团队都在为解决区块链落地难题在出谋划策,但是到目前为止仍然没有一个好的解决方案。WanShare君最近在浏览相关的消息的时候,发现了一篇干货,王嘉平老师所写的一文《区块链公链如何才能快起来》,顿时有种耳目一新的感觉。

大家可以在网上搜索看看,当然也可以读一读WanShare君的解读版,或许会更通俗易懂一点。

文章中提到,在当前以类金融为主流应用场景的情形下,区块链系统最首要的性能瓶颈是区块数据的广播延迟造成的,本质上受限于互联网的带宽和通讯延迟,这一点直接制约了吞吐量(TPS)。

为什么这么说呢?以比特币为例,比特币是一种点对点的电子现金系统,更直接地说,是节点对节点。每笔交易由发起方向周围的节点进行广播,节点收到之后再广播给自己周围的节点,最终扩散至全网。每一个比特币钱包都是一个节点,其中拥有完整区块链账本的节点叫做全节点。因为节点与节点之间的广播需要时间,那么每个区块就不能太大,出块频率也不能太高。不然就容易出现我这边话还没讲完,你又让我传新的话,传来传去就不仅容易混乱,而且把人给累垮了,系统就崩溃了。而这个问题现在还没有切实可行的解决方案。

系统第二个瓶颈是受限的账簿容量,本质上受限于单台全节点的内存容量,这一点直接制约了链上可以承载多少个用户(地址)以及多少个 DApp。因为无论具体采用了什么共识算法,只要交易验证/执行过程随时可能涉及到任何一个用户,那么单台全节点就必须随时保持全网每一个用户、每一个 DApp 相关的状态在内存里面,以供交易验证实时访问。

以比特币为例,现在一个全节点信息高达200G,也就说你如果打算成为一个比特币矿工,成为比特币网络里面的一个节点,你就必须下载高达200G数据包(这个数据包里面包含着所有的比特币已交易信息和未花费的输出)。而如果将来系统用户规模都扩大 100 倍,那将需要下载 400GB 数据包,而且随着时间的推移,这个数据包将会越来越大,基本上大部分互联网上的普通服务器都无法顺利部署一个全节点。如果我们不解决这个问题,节点将会越来越少,区块链将会失去“去中心化”这一重要特性。

而现在大部分的团队在做的区块链技术升级,其实并没有围绕着这两个瓶颈来展开,基本是在优化共识算法,但无论是工作量证明(POW)、权益证明(POS)、拜占庭容错(BFT),还是委托权益证明(DPOS),即使设计的再好,区块形成的再快,都不会提高区块链系统单位时间的吞吐量。这就是为什么比特币的全网 hash 算力提高了万亿倍,但是其吞吐量一直是 7 TPS 左右。因为区块广播延迟主要由区块大小和全网各个节点间的带宽决定。

对此,王嘉平老师提出了一个新的思路。

在区块链的系统里面,存在着所谓的“不可能三角”——安全、去中心化、性能,王老师的想法巧妙在于绕过了这个“”不可能三角”从另外的角度出发。

王老师的灵感来自于计算机技术发展史中,大容量高吞吐的设计范式——屡获大规模成功的“横向扩展 Scale-Out。”

一根筷子撑不住,那么就用十根筷子组合在一起,如果不行,就用一百根一千根甚至更多的筷子组合在一起。

举个例子,GPU 用了几千个性能普通的Core 一起并行工作,实现超越 CPU 计算性能几个数量级的性能提升,而 GPU 所依赖的半导体技术并没有和 CPU 芯片有什么本质的不同。再如,现今的在线云服务系统,是用几千甚至上万台性能普通的服务器一起并行工作,来支持大容量高吞吐的在线服务。

王老师的设想是让成千上万个“同质的单链实例”一起并行工作,切分全网的工作量,以实现整体上的大容量和高吞吐。

这样的一个系统,可以在大幅提高 TPS 的同时,支持 10 亿以上级别的用户量,并且保持每一个参与到这个网络的中的全节点仅有一个合理的负荷,让大部分互联网上的普通服务器都可以轻松部署一个全节点,共同参与网络的维护和治理。

不过,在这样一个彻底去中心化的设定下,如何一起并行工作,如何切分工作量,又如何保证每个单链实例的安全,都是极具挑战的问题。这样的系统似乎并不容易实现,但也绝非不可能实现。

大家认为以后区块链技术将如何发展呢?欢迎留言探讨。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181024G1Q3J300?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券