1. 链一财经首页
  2. 资讯

直播回顾 | 创始人龙凡深度解读Conflux树图结构算法及最新研究成果

直播回顾 | 创始人龙凡深度解读Conflux树图结构算法及最新研究成果


主持人:贾永政,EverChain创始人&CEO,清华大学姚班2009级本科,交叉信息研究院博士。主要研究方向为在线约会与在线教育,并将人工智能和区块链技术应用到百万级用户的产品中。

 

嘉宾:龙凡,Conflux联合创始人,多伦多大学的助理教授,本科毕业于清华大学姚班,后获得麻省理工学院(MIT)的计算机科学博士学位。他的研究方向包括系统安全,编程语言和区块链。

项目介绍:Conflux是第一个,也是目前唯一一个在不牺牲任何去中心化程度的情况下实现高TPS的公有链。Conflux巧妙地使用树图结构,并结合其独特的先进算法,使共识不再是提高区块链扩容性的瓶颈。

 

直播内容回顾

 

贾永政:各位朋友,晚上好! 欢迎大家来到本期的链动名人堂,我是Ever Chain的创始人贾永政。

今天Ever链动直播间邀请到了我的姚班师兄:龙凡教授,龙凡师兄是全世界顶级公链项目Conflux的创始人,多伦多大学的助理教授,本科毕业于清华大学姚班,后获得麻省理工学院(MIT)的计算机科学博士学位。他的研究方向包括系统安全,编程语言和区块链。 

欢迎师兄的到来,也感谢大家的关注。

 

龙凡:大家好,我是龙凡,很高兴来Ever链动参加这个直播,我也很期待和大家的交流。

 

贾永政:Conflux原来使用的是DAG(Directed Acyclic Graph)技术,现在称为树图(tree graph),来全面提高中本聪共识的TPS问题。这是一件非常难的事情。

为什么说这件事非常难呢?我想用图灵奖得主Tony Hoare的话来说明,他说有两种方法来构建一个软件:一种是设计非常简单,所以它明显没有缺陷;另一种是让设计变得超级复杂,所以它没有明显的缺陷。前一种方案远比第二种难。

Conflux做的就是第一件事。Conflux用一种极其简单的底层设计,即通过改变比特币记账的数据结构来提高区块链全网共识的效率,这个设计的初衷非常简单,但是想要把这件事做得没有任何缺陷,这是一个非常难的问题。

今天我们就来给大家分享一下Conflux底层的共识算法及其激励机制是如何设计的。接下来我们就进入详细的讨论。

 

贾永政: 我们都知道Conflux是通过树图(tree graph)结构来提高TPS,那么首先我想跟师兄聊一下,Conflux这个项目是如何开始的?通过树图结构打算解决什么样的问题,中间遇到了哪些困难?

 

龙凡:其实Conflux使用现在的树图结构源于一个非常简单、直观的想法,这个想法其实在比特币社区里面就有很多人提过,我们既然吞吐量有限,确认时间太长,那我们可以通过改变出块的时间,让出块变得更快,让整个区块的吞吐量变得更高。

 

比如,我们块更大从而得到更高的TPS、更快的确认时间,这是一个非常简单和直观的想法。

 

但如果沿着这个想法往前走的话,就会遇到一个问题:当你直接使用中本聪共识时,所有的区块会并行起来。由于网络传输的延迟,很多区块会变成分叉,这样不仅会极大的降低区块链网络的安全性,而且也会让区块链网络变得不好用,很多吞吐量被浪费。我们提出树图结构,就是希望能够安全地处理这些并行区块,让所有并行的区块能够直接应用。

 

其实这是一个很简单的想法,我们没有去做现在流行的分片,或者说一些更复杂的设计。可能有人会说你从简单的想法出发去实现这个东西,会更难、更有挑战一些。在我们的研发过程中,我们也遇到了一些问题,比如说怎么让树图结构更加安全?怎样更高效地处理树图结构,使得处理它本身不成为瓶颈?以及怎么把树图结构形成的共识交易顺序打包在上面,并且把这些交易都执行?怎么设计出一个好的智能合约执行engine?这些都是我们需要解决的问题。

 

贾永政:我看过Conflux去年发的paper,paper里不仅有非常巧妙的共识算法设计,也有非常严谨的数学证明。Conflux解决了一个在DAG领域困扰已久的问题,即确定唯一的全序问题。

师兄能说一下您认为在上一个版本里Conflux核心的共识算法的优缺点分别是什么吗?

 

龙凡:在我们的上一个版本里,我们使用的是GHOST算法,现在以太坊也有部分在使用它,我们通过它来确认轴链(pivotchain),再用conflux的排序算法,通过轴链划分成很多时期(epoch),最终通过epoch进行排序,这样不仅不浪费任何处在分叉里的区块,还能够在我们的参数下保证网络的安全性。

 

上一个版本的优点是实现了我们想要的吞吐量级别,也就是我们在20Mbps到40Mbps时分别达到了3000和6000这个量级的TPS,我们在云上租了超过1万个全节点机器,在真实的网络环境下达到了这个量级的TPS。

 

我们的缺点是需要大概3到6分钟的时间才能够确认一个交易,以达到很高的确认率(很高的交易不被双花的概率)。3到6分钟的确认率是我们的一个瓶颈,我们现在也进行了一系列的技术探索,在这方面我们现在有了更好的解决方案,我相信我们新版能够做得更好。

 

贾永政:师兄,我听说Conflux新版采用了一个全新的共识算法,对之前GHOST(Greedy Heaviest-Observed Sub-Tree)协议做了比较大的改动,来解决一些攻击方面的问题,据说新的这个共识算法叫GHAST(Greedy Heaviest-Adaptive Sub-Tree),您能简单的跟大家介绍一下GHAST共识算法是怎么设计的吗?

 

龙凡:说到GHAST算法,我们可以先看GHOST算法,GHOST算法有一个很大的缺陷:当整个网络的出块速度非常非常快的时候,攻击者可以进行liveness攻击。liveness攻击的意思是攻击者不以双花为目的,而是以让这个网络没有办法确认交易为目的。

 

核心原因是GHOST算法其实是在不断的选择最重的子树(sub-tree),而且每个区块的权重是一样的。如果出块速非常非常快,那么坏人可以有一个策略,比如说,把好人在好人分叉成两个子树的时候,坏人分别在两个子树上进行一些算力的挖掘,但他并不把挖的区块完全放出来,当好人有一边progress大于另一边的时候,他就在另一边放一些区块,使得两边总是保持平衡。

 

因为当两边指数保持平衡的情况下,GHOST算法是没有办法确认交易的,而当出块速度很快的时候,坏人有一点点算力就可以让网络一直保持平衡下去,没有办法确认任何交易,这其实是GHOST一个很大的缺点。

 

另外,在原来的版本中,我们使用GHOST来确认轴链(pivot chain),只能五秒钟出一个块。由于出块速度并不理想,我们选择了GHAST算法,在使用了GHAST算法后,我们内部测试网已经达到一秒钟出四个块的高速出块速度,最终我们可以在一分钟内确认一笔交易,也就是说我们现在的网络不止能达到3000TPS。目前我们内部测试结果是23秒可以确认一个交易,达到和比特币的六个块同样的安全性。

 

贾永政:师兄我可以这么理解吗?新的GHAST协议(Greedy Heaviest-Adaptive Sub-Tree),通过算法重新计算了子树和区块的权重,然后再实现在子树(sub-tree)权重算法之间的自适应切换问题。

那如果在这个切换的过程中,类似于GHOST,有一个攻击者,他反复在看子树的权重,然后在差不多权重的情况出现后执行liveness攻击,那么在GHAST协议中是如何应对这个问题的呢?

 

龙凡:其实GHOST和GHAST最大区别在于,GHOST中所有区块的权重是相同的,我们其实是不断在选区块最多的子树往前走。GHAST是定义在我们树图上的综合算法,在GHAST中每个区块的权重是由该区块所处树图中的拓扑位置所决定的。

 

贾永政:师兄的意思是说,在GHOST协议里,对于子树我们只看节点的数量,因为每个节点的权重都是1,所以我只需要看子树有多少节点,由此来决定最重子树来得到pivotchain。

在传统的GHOST里,我们并不在乎每个节点在子树中的相对位置,比如节点跟节点在图上的关系,而在GHAST里我们不仅看子树有多少个节点,同时看节点的拓扑关系。这就类似于搜索引擎的page rank算法,在GHAST中我们通过类似的算法来对节点进行权重的计算,是这样的吗?

 

龙凡:是这样的。事实上GHAST是给每个区块打了权重,当攻击者在做双花攻击的时候,这个树图的拓扑结构会变得非常奇怪,因为你需要两棵子树都非常大,并且它们甚至是一样重。

 

虽然你是一个好人,但在这个共识协议里面,你是没有办法区分这两个子树到底是怎么形成的,坏人到底在哪,但是你一定可以通过图中的拓扑结构发现问题。而这个计算权重的机制能保证所有好人看到有问题的时候,会反应过来并切换成另一种运行方式。

 

在普通的时候,GHAST和GHOST会给所有权重区块打同样的权重,但是当坏人攻击的时候,它们就会切换成另外一种运行模式,通过看这个图的错误结果给相应区块打上不同权重。

 

不同权重后会切换到一个更保守、但是能够确保共识往前走的算法,最终实验效果是如果坏人没有攻击大家一切正常,那我们可以很高速的确认交易。

 

当坏人攻击,所有好人会发现这件事,一起行动起来,自动切换成另一个确认交易模式,但当攻击过去后,可以再切换回来,最终进行高速出块。

 

贾永政:师兄,我又有一个问题,GHOST的整个算法看上去比较简单,而GHAST不仅涉及到了权重的计算问题,还涉及到在不同算法之间自适应切换来抵抗双花攻击的问题。那我想问一下,在实际执行中,GHAST有没有增加额外的区块链系统开销,而Conflux又是怎么应对这个问题的呢?

 

龙凡:GHAST协议其实并没有增加额外的区块链开销,但是在真正实现中我们设计了更新颖的数据结构来维护整个子树。事实上GHOST算法本身也有很大的计算量,大家都知道以太坊采用了一个修改过的GHOST,它只算七层,如果它算所有层的GHOST,那么它直接实现的维护是O(N)复杂度的开销,即现在图中的区块大小。我们其实是有一个全新的、实现上的算法,能够把GHOST、GHAST算法,最终每一步添加的区块都能够在O(log N)的时间复杂度内能够做到。 大家如果感兴趣,可以参考我们接下来马上会放出来的论文和相关的资料。

 

贾永政:感谢师兄的精彩回答,让我们一起期待Conflux的最新研究论文,我相信这个论文在整个区块链圈,特别是对于树图结构的共识算法研究一个里程碑式的研究成果。

那我们接下来问一些应用层面的问题,Conflux在今年发布了测试网,目前测试网已经吸引了很多的社区开发者,大家都在参与测试网络,目前测试网的运行情况如何呢?

 

龙凡:我们在4月底发布了测试网,它现在的运行状况符合我们预期,最重要的是它成为了一个我们和大家一起共建Conflux生态的地方。我们希望更多对Conflux感兴趣的人能够尝试测试网,如果大家未来想要在Conflux上做开发,那么现在就可以来测试Conflux的各方面性能,和Conflux对接。

 

测试网的优势,就是现在我们和上下游的生态伙伴合作的时候,不会受到需要硬分叉才能改规则的限制,如果上面有什么技术需求,可以马上得到满足。其实我们在和合作伙伴的Layer-2服务以及DApp的交互过程中,已经在不断迭代这方面的接口。

 

贾永政:感谢师兄的精彩解答,我相信大家都听得十分过瘾!接下来就让我们进入媒体朋友提问环节!

 

 

 

碳链价值:龙凡教授您好,我是碳链价值的蒋璐,有一个问题希望可以得到您的回答:现在有什么机制可以让社区一起参与建设Conflux?

 

龙凡:关于社区建设,我们马上会出新的方案吸引更多人参与进来。其实Conflux社区建设的原则是:希望更多的人在社区里帮助Conflux,不管是为Conflux做各种各样的工作,还是一起传播Conflux的技术。我们会对每个人做的工作记账,最终以Token的形式记到区块链上,我们现在的想法是下一个测试网版本更新后,我们会在Conflux的测试网上跑一个关于社区成员贡献的小账本。

 

这个小账本会类似以太坊的ERC-20,但它是在Conflux的测试网上跑,而不是以太坊上跑,这个账本记录的是每一个Conflux社区成员所做的贡献。在每一次测试网迭代时,我们会把账本迁移到新的测试网中。当真正主网上线的时候,我们会把这个账本中记录的信息和主网连接在一起做一个承兑。

 

总的来说,如果你为Conflux的社区或者生态做了贡献,那么你就会被这个账本记录,拿到属于你的那一份激励,我也希望通过这样的形式吸引更多的人参与Conflux的建设。

 

上个季度对我们社区做了贡献的人,我们有一个社区自发组织的贡献分享和评定大会,下一个季度,尤其当我们分布式账本上线之后,我们会推出更多的奖励计划(Bounty Program),不管你是帮Conflux某个软件上的小组件做了改进,还是你帮Conflux社区做了推广,亦或者你还做了什么其他贡献,都能拿到我们社区账本中的奖励。

 

 

耳朵财经:龙教授您好,我来自耳朵财经,我想问问Conflux的实际应用会在哪些方面?

 

龙凡:我认为Conflux最终会做一个高性能的区块链平台,会成为有价值的比特在这里互相验证,互换。这是我觉得这是一个公有链平台最终应该去的地方。从应用的探讨来说,什么样的比特是有价值的会上到Conflux上,这就是应用可能的方向。

 

比如抛开数字货币以外,Conflux可能会在解决跨境支付的结算上起到作用,因为现在Conflux网络有足够的TPS和交易处理速度,来承载类似的支付场景。另外一个想法是,其实我们每个人都有对个人非常重要的信息,比如说我们俩约定一件事情,这个事情对我们俩非常重要,那么我们愿意引入一个像区块链这样的平台,把我们俩的公证信息放到链上来。

 

当然这里就涉及到一个成本问题,而Conflux提供了一个很高的TPS,可以降低做这件事的成本,我们最终可以把对我们自己相关的,我们在意的、有价值的比特放到Conflux上来做验证。

链世纪财经:龙教授您好,我来自链世纪财经,我想问一下两位姚班大神怎么看隔壁学校的孙宇晨拍下巴菲特天价午餐的事情?

 

链世纪财经:龙教授您好,我来自链世纪财经,我想问一下两位姚班大神怎么看隔壁学校的孙宇晨拍下巴菲特天价午餐的事情?

 

龙凡:这个问题非常切中热点,但我不想对这个具体事件做点评,我想对TRON本身做一下点评。

 

我觉得TRON除了它本身没有太多技术,以及除了它可能不是一个区块链外,其他方面还是很好的。我之所以说TRON不是区块链的最大原因是,我作为一个研究分布式系统的人,在我看来几十个点这样的你可以称它为超级节点,或者DPOS,由它们连在一起形成的所谓区块链,其实并不是区块链,充其量算是一个分布式系统。

 

这是在二三十年前,分布式系统的研究人就会做的事,这并不是新颖的事,也不是区块链。在我的理解里,区块链不能够牺牲它的本质,即任何人都可以参与进来,这指的是任何人都可以参与确认共识打包交易的过程,这件事本身没有门槛,所有的人都可以平等参与共识的过程。

 

我还想说,其实TRON还是有很多我们可以学习的地方,它作为一个分布式的博彩平台还是做得很成功的。只是从跨界的角度去研究他做的好的地方,吸收学习还是可以的,只能说它做得好的地方,Conflux可能想学也学不来罢了。

 

贾永政:我认同师兄的观点,TRON在区块链底层技术上的创新确实比较有限。

Ever Chain做区块链社交的,之前孙宇晨也有做过社交的创业项目,他在产品的marketing方面做得是很好的,在互联网圈就是摸爬滚打出来的。现在做TRON,各种战略和营销上的打法比较到位,造就了今天TRON的市值,这体现了其深厚的创业功底。作为技术出身的创业团队,我们在这方面需要像他学习,他敢想,并且有足够的魄力。

 

 

观众提问一:龙教授您好,您认为什么样的里程碑算是到达第三代区块链?

 

龙凡:首先不管三七二十一,我们得先做区块链,我们不能做一个30年前就存在的东西。这也是为什么我一直不觉得EOS、TRON这样的系统是区块链,它可以称为一个分布式系统,因为上面有一个记账单位,大家如果愿意把它叫数字货币,也可以叫数字货币,但这真的不是区块链。我觉得区块链的核心是每个人都能参与共识的机制,你想要加入就可以加入,而DPOS系统其实是没有做到这一点的。当然他们做的好的地方,我们肯定是需要学习。

 

从区块链3.0来讲,在这个原则的基础上,我们把性能真正的提高,也就是说在不牺牲去中心化、也不牺牲安全性的情况下,把TPS真正的提高。其实很多人会提到不可能三角这个问题,我们不能够既满足完美的去中心化,又满足安全性,同时能够把性能做得很好,因为每个机器的处理速度是有限的,所以我们必须得用分片或者其他技术来实现。

 

我对不可能三角的反馈是,我承认不可能三角这样东西的存在,但是一台机器,比如说我们常见的笔记本的处理能力肯定不是每秒几十个交易,它的处理能力一定是千这个量级。

 

所以当现在的去中心化的区块链,只能够处理几十个交易每秒的时候,那一定是有提升空间的,在这个基础上没有必要去谈不可能三角,我们先把它做到千这个量级,再来谈不可能三角更好。

 

观众提问二:龙博士,作为价值通证,在未来应用后,Conflux如何避免价格大幅度的波动?

 

龙凡:我觉得Conflux上未来的原生资产价值将由市场决定,在我看来很多的价值波动是因为它背后没有技术或者逻辑在支撑这些东西的价值,最后成为炒作和传销,而我们一直以来走的路径也在尽量避免这种事情的发生,我们整个团队也是专心在做技术。我们项目也不可能某一天在官方推特上说赶快怎么样,我们下个月就要涨10倍、20倍、50倍。

 

我可以很诚实的说,Conflux上线之后一个月大概是涨不了50倍的,所以指望涨50倍的不要碰它。而且Conflux的Token是延伸资产,一定是在我们主网上线之后才会产生,不会在我们主网还没有做出来之前先有代币的流通,我们也不希望有这样的事情发生。如果在我们主网还没做出来之前,就已经有二级市场,这对于整个项目也是不好的。

 

根据国家《关于防范代币发行融资风险的公告》,大家应警惕代币发行融资与交易的风险隐患。

本文来自LIANYI转载,不代表链一财经立场,转载请联系原作者。

发表评论

登录后才能评论