分片技术如今已成为区块链行业最受关注的区块链扩容方案之一,但也长期被认为存在算力分散并易受攻击的缺陷。
微软总部研究院前主管研究员王嘉平博士于年初发表的论文中提出了名为Monoxide的区块链扩容方案以及连弩挖矿机制,并表示其分片技术可以解决跨片交易与算力分散问题,在测试环境中TPS达到11000,预计测试网将于7月上线。
近期,链捕手(ID:iqklbs)与王嘉平博士进行了一次深入的对话,谈及Monoxide的机制与理念创新之处,以及共识组、连弩机制等具体概念的解读分析,相信对读者们理解更多扩容方案有所帮助。
作者/龚荃宇
未经授权,谢绝转载
链捕手:你在技术领域拥有非常深厚的资历,可以谈谈为什么看好区块链技术吗?
王嘉平:第一,区块链技术可以用计算构建信任,而不是找背书站台,它的信任保证来自于密码学、共识技术。区块链干的不是业务本身的事情,而是给具体业务增加一个很好的湿润剂,比如我做溯源+区块链,我上面放的信息就是溯源相关的信息,我上面的计算就是跟溯源相关的计算,我不能任意部署别的计算,也不能任意把用户的数据拿去干别的事情,有了这么一个技术所保障的信任技术,这就使得大家更容易相信并参与到这件事情。
第二,区块链技术可以用计算保证执行,可以避免扯皮钻空子。现实社会几乎在所有规则在执行过程中都有人的因素在里面,一旦有人的因素就不可避免存在潜在的问题,而将规则执行写在区块链上后,就没有人能篡改它。
第三,区块链技术可以通过计算自证清白,规避风险、明晰责任。在一个不太规范的行业,如果有些企业已经自证清白,将是一个良币驱逐劣币的过程,这是一个正向的循环,存在很大的想象空间。
说实话,区块链行业存在严重的信息不对称,有些人吹区块链是万能的,明显不是。没有一个技术是万能的。当然一开始大家对区块链有些误解,觉得区块链是一个不可篡改的数据库,这个认识也是不对的。区块链的本质在于它可以让计算规则不被改变,这是区块链技术本身最独特的地方,也会是它未来面向新业务的支点。
链捕手:你提出的Monoxide异步共识组如今在业内引起很大的反响,可以先大致介绍下吗?比如,该解决方案最大的突破与亮点。
王嘉平:在 Monoxide方案中,一个并发的多链系统取代了单链 ,每一个链称为「共识组」,共识组是由多个同质的、功能上完全一致、地位上也完全平等,并逻辑上尽量隔离的独立共识系统的实例所构成,它们并行工作,分摊全网的吞吐、计算、存储的压力,分摊全网状态的维护工作。
由于共识组之间完全并行、异步也无需锁定和同步,所以即便某一个共识组发生拥塞也不会干扰其它共识组的吞吐和出块,从而大幅提升区块链的吞吐量和容量。
这其实也是一种分片技术,有些分片方案单独做状态分片或者交易分片,但我们做的是全分片,从通讯计算、交易的处理执行到状态的维护全部都会分片。
而全分片主要解决两个问题,一是跨片交易问题,我们做到了跨片交易的负担与分片个数无关,这意味着分片个数可以不断上升,实现较好的线性伸缩性;二是算力分散的问题,很多分片方案会因此更容易受到算力聚焦的攻击,我们提出了一个针对PoW算法的机制,使得每一个分配到算力都很高。
链捕手:这个突破具体是怎么实现的?
王嘉平:一般来说每次算力挖矿能出一个块,我们提出了「连弩挖矿」,允许一次成功的算力哈希刺探可以获得在多个共识组同时出多个块的权益,但这些块最多一个分片一个块,从而使得算力可以重复被用。对矿工而言,这个算力并没有被稀释,每一个分片的实际出块速度跟它在全网的物理算力是等价的。
此时,如果攻击者想要攻击Monoxide的分片网络,他们攻击一个分片或一个公式组的成本跟攻击整个网络是一样,即需要全网51%以上的算力,所以使得网络的安全性可以得到保证。
链捕手:什么是「连弩挖矿」?
王嘉平:在PoW共识机制中,矿工需要不断随机刺探块头中的Nonce并重算哈希函数,以使得这个块头的哈希值满足当前算力难度的要求,可以最终出块。这个过程的瓶颈在于计算哈希函数的速度,所以挖矿算力被定义为哈希速率。在这里,我们将实际计算哈希的速度定义为物理算力,而提高物理算力的唯一方法就是部署更多的矿机,消耗更多的电能。
那么,攻击者在对有n个共识组的Monoxide系统实施攻击的时候,如果将其所有物理算力T分配到一个特定共识组,在这个共识组中获得有效算力T。那当其物理算力超过 T > H/n × 51%(n为共识组数量,H为全网有效算力) 的时候,攻击将可以成功,并构造不一致交易(例如双花交易)。
因此,Monoxide引入了连弩挖矿,它允许矿工同时参与多个编号连续的共识组,每次出块的时候哈希函数将覆盖多个将要出块的块头进行计算,同时这些块头将共用一个Nonce,具体做法是将这些块头按序排列,构造Merkle树。出块时,其数据结构会被广播到特定的共识组 ,仅包含该共识组的块头以及一个该块头被包含在内的证明,不涉及到其他共识组的块头。
其效果是将使得全网的有效算力放大为物理算力的n倍,同时也放大了单位物理算力可以获得的出块奖励,并且在协议的数据结构层面约束了这种放大后的有效算力必须平均分配到各个共识组,从而规避了前述算力聚焦的攻击模型。
同时参与到多个共识组挖矿,需要更多的IT资源用来同步和验证每个共识组的交易和区块(不仅仅是块头),也需要更多的磁盘存储和内存。基于去中心化的考虑,参与连弩挖矿与否,以及参与的共识组个数是一个矿工可以自行配置的选项,Monoxide并不要求所有矿工都参与所有共识组的挖矿。
链捕手:Monoxide对区块链系统的性能提升不仅仅体现在吞吐量上,也体现在状态容量上,那么状态容量的意义体现在哪些方面?Monoxide具体是如何在状态容量方面实现突破的?
王嘉平:吞吐量与状态容量是两个非常重要的区块链性能指标,吞吐量在业务层面意味着用户的活跃度,而状态容量则是指这个区块链系统可以记录多少用户的状态,意味着这个系统用户量的天花板。
以前各大区块链网络在状态容量方面都没什么突破,一直就是一个单机容量,所以都没怎么提。但在我们现在这个系统里,状态容量也可以随着更多的计算机参与而得到线性提升,这个线性提升不打任何折扣。由此,Monoxide也大幅降低了全节点的进入门槛。
链捕手:降低全节点门槛能产生哪些作用?
王嘉平:在当前的主流区块链网络,存在全节点与轻节点两个概念,其中全节点是是拥有完整区块链账本的节点,负责把用户交易信息广播给矿工。同时,全节点的存在有两大意义,一是保护矿工节点不受攻击,例如日蚀攻击;二是帮助外部在不信任其他节点的情况下独立验证交易、重建账簿状态,例如有没有分叉、运行状况如何,而不是像云计算那样需要依赖于信任特定的节点(或服务器),这是区块链和云计算的本质区隔之一。
任何区块链网络都需要大量的全节点,但如果用户希望自己运行一个全节点,会消耗非常多内存,像比特币全节点至少需要几个T,远超出普通电脑的承受范围,这就会直接导致电脑无法正常运行。
Monoxide通过源源不断的分片提升网络的状态容量,每一个全节点的工作压力(带宽、计算、内存、磁盘IO)都不会显著加大,大概只需要几十兆或者几百兆内存,始终保证一台普通中档价位的电脑可以轻松地作为网络的一个全节点,通过普通家用宽带网络接入主网。
链捕手:你曾在多个场合提到Monoxide性能数千倍于比特币,能否更具体地谈谈Monoxide的性能表现吗?这些数据又是怎样得出的?
王嘉平:我们在世界各地租用了一千多台计算机的云服务并构造了一些节点,然后把这个算法部署上去。从测试结果保守来看,我们每一个分片的TPS是15,然后实验室最高做到了了2048个分片,这时候TPS达到了11000。
这个数字已经远超现今所有公开发表的运行于互联网上的公链项目,当然那些只在机房里面跑,单节点采用怪兽般服务器的项目除外。
链捕手:随着分片的越来越高,其TPS会无限增长吗?它的天花板在哪里?
王嘉平:为了完成跨分片交易我们需要传递一个证明,这个传递过程会与分片的总数相关,这就意味着分片的总数不能太大。按照我们现在的分配设定,分片数量大概最多能上几十万,这就是我们的天花板,但这时Monoxide的TPS基本上已经达到千万级,已经可以应付大部分互联网级别应用的峰值流量。所以,Monoxide的性能存在天花板,但这个天花板实际上足够高。
链捕手:这样的性能数据实际上比绝大多数已经上线以及正在开发的区块链网络或扩容方案更加优越,假如Monoxide扩容方案得以完全实现,TPS等数据远超当前区块链网络,那这会意味着当前这些公链将失去其市场与价值,纷纷走向衰亡吗?
王嘉平:任何事情都需要有取舍,Monoxide对编程模型有一定限制,这意味着有些算法搬运到Monoxide上面来的话会比较麻烦。换句话说,大部分产品可能会比较适合运行在Monoxide上,但某些更加复杂的产品可能也需要其他的公链一起去配合。
而且现在公链竞争还没有走到那一步,都没有什么正儿八经的业务,未来公链能否活下去不取决于公链本身是怎样的,而是取决于公链是不是适合大体量的业务,谁能有大业务把公链带起来,谁就能赢。同时,公链也要自己准备好,当有大体量业务出来的时候,它需要能兜得住。在我们看来,只有不断演进的技术,才是存活下来的唯一法宝。
值得看看:
NEO的至暗时刻
波场变形记:挥舞着百亿钞票的RMB玩家
专访原海豚浏览器创始人杨永智:我为何在去年就不做区块链了
专访分布式资本沈波:我对区块链的理解与投资原则
区块链的五大挑战以及AI带来的四大机遇
多数人只知道去中心化,却并不真正理解DApps
这是「链捕手」的第179期文章,
欢迎转发朋友圈,转载请务必联系后台,感谢阅读。