龙凡:如何构建高效的区块链系统?

龙凡:如何构建高效的区块链系统?

龙凡|Conflux 创始人、CEO

我在2011年接触比特币,是在一堂MIT的课上。比特币作为一个案例被提出来,课堂上,我们讨论了比特币如何打通共识,以及比特币系统设计的优点、缺点,完全从纯技术的角度拆解比特币。
那时,比特币刚刚从极客的世界走出来,开始和现实世界接触。我对比特币很感兴趣,在比特币5美金的时候,我在Mt.Gox买了200个,然后在它涨到50美金的时候,很愉快地抛掉了。这段经历很好玩、很有意思。
1.我隐约感到比特币技术的革命性
互联网解决了人与人沟通问题,但人与人之间要协作完成一件事情,是需要达成共识的。共识是在沟通、信息传递之上更高层次的需求。而比特币,是第一个向所有人证明, 全世界几万台机器连在一起,可以共同协作维护一个账本。
在2017年博士毕业后,我决定全身心投入区块链研究,这时候区块链和加密货币世界已经不那么“好玩”,也不那么“革命”了,而更像一个“赌场”。
把人民币、美金在交易所换成BTC、ETH筹码,然后玩各种各样的游戏,ICO、IEO、共振、或者直接波场、EOS上的菠菜DAPP。赌满意了,再去交易所把筹码换成法币,或者只是想暂时离场,就换成变化没那么大的筹码——稳定币。
实际上,此时的区块链和加密货币领域,已经涌入了一批来自大公司和顶级大学的技术派高手,但在外界看来,区块链还是贴着“传销”、“诈骗”这样的标签。
我感觉自己应该做点什么。做研究、做技术最有意思的,是找到一个未来有意义的方向,出发点跟实现财富自由、赚多少钱其实没关系。
Conflux这个项目始于《将中本聪共识扩容至每秒数千计次交易》的论文。
2018年5月论文发表后,我只当是一篇论文,只是想做一个纯粹研究,但很多投资界的朋友都劝我,别停留在paper上,真的来做这个事。
后来,我和导师姚期智先生有一次对话,也深刻体会到,系统理论只有被用了,才有意义。
2018年6月,Conflux项目启动。最核心的开发人员来自三个圈子:一个是清华姚班,一个是学术圈,一个是竞赛圈。国际信息学奥林匹克竞赛、ACM竞赛,这里的金牌有一打。聚集这帮人,在计算机领域应该可以实现技术突破。
2018年12月,正是区块链投资最熊市的时候,Conflux获得了3500万美金的融资。这个消息横空出世后,好像区块链领域所有目光都转向了Conflux。
2. Conflux的技术出发点
事实上,如今公链技术在落地和商用过程中遇到各种问题,首当其冲的就是“不可能三角”——扩展性、安全性、去中心化不可兼得。因此,目前宣称能“打破不可能三角”、“突破不可能三角”的新公链项目大受追捧,针对比特币、以太坊的链上链下扩容方案也讨论热烈。
区块链圈的一些人,对不可能三角的理解,其实是有偏差的。“不可能三角”观点肯定是对的,但它不是一个技术问题,而是一个常识。
用大白话来解释不可能三角:区块链要实现“完美安全”,需要所有人都参与交易,但是,由于参与网络的机器不同,加上每台机器的参与能力有限,随着处理的交易越来越多,网络速度也越来越慢,这时候就出现了“不可能三角”问题。
而解决“不可能三角”方式是:要么限制参与的人的数量,要么限制网络处理信息的数量。比如“分片”,就是在牺牲部分安全性,打破“所有人都验证所有交易”限制。
但所有人都忽略的一点是,一台机器到底能够处理多少东西。很多人刻意回避这个问题,转而对“不可能三角”侃侃而谈。
要想回答“一台机器处理能力极限”问题,我们需要先回答另一个问题:比特币每秒只能处理七笔交易,以太坊能处理十多笔,到底是什么限制了他们的速度?
答案是共识协议。想要所有人一起处理交易,首先要达成的一件事是,所有人都得同意交易的先来后到的顺序。这个过程就是共识。比特币和以太坊处理交易速度被限制,是因为共识协议限制——确定顺序的算法比较慢。
在不牺牲任何去中心化程度及安全性的情况下,率先实现高TPS的公有链。这是Conflux技术的基本出发点。
Conflux首先在共识协议层面上,突破瓶颈。在确定交易顺序后,网络所有人都按这个顺序执行。这个执行过程,才是在考验每台参与网络的机器的处理能力。
在处理网络上的每一笔交易时,会涉及到CPU处理、网络传输和转发、硬盘的读写等能力。而目前,一台普通的电脑可承载能力,也远超比特币或以太坊每秒七或十几的处理次数。
在我们内部实验,把以太坊第一年几百万笔交易,放到Conflux链上来执行,能够达2000-4000的TPS,在一个小时内能全部跑掉。
如果想达到10万、20万TPS时,会遇到“不可能三角”挑战,但想达到几千TPS,其实并不需要触碰“不可能三角”问题。在我们把所有系统结构设计正确、协议足够优化,一台计算机的极限在哪?
在找到极限之前,我们没有必要去强调自己在解决“不可能三角”问题。Conflux自主研发的树图结构可扩容共识算法,使共识不再是区块链性能的瓶颈。
3. 另一个创新是高速的POW协议
虽然很多人宣扬“区块链改变世界”,但现在区块链能做的事情,无论是隐私还是交易,一个中心化的系统都能够做得更好。区块链唯一的价值,就是它产生的结果是由参与这个区块链一半的人的信誉一起来保证的。除非超过一半的人在做恶,否则区块链是遵照规则执行,结果是不可逆的。
而任何一个中心化组织,虽然效率高,但它永远有两个风险,一个是中心做恶,另一个是中心宕机。区块链在解决信用价值,其信用价值是参与共识的人来保证。
互联网没有“身份”的概念,比如论坛中成批的马甲号,无法确定一个账号背后到底是谁。而没有确定的“身份”导致了一件麻烦事:如何在互联网上定义“一人一票”,如何定义“多数人同意”?
为了实现抗女巫攻击,即一个恶意节点有多个“身份”,设计者需要找到一个不能被大量伪造复制的东西。POW找到计算资源,POS找到系统里面的钱、Stake。
但POW和POS不是共识算法,它们是抗女巫攻击的一种机制。中本聪共识、拜占庭共识时,这些是“共识算法”。POW和POS只是决定了在共识算法上的投票机制。打个比方,共识算法是决定“开会”的形式, POW、POS是决定谁能参与投票。
作为一个新公有链,我希望链上产出、验证的比特一开始就是有信任价值的。因此我希望,最开始参与共识的人,能够尽量多。
当然,POW和POS各有千秋,但我觉得一个公链的初期一定需要是POW。
那么多POS链,最开始投资人和项目方是唯一拥有stake的,所有共识都是他们说了算。也许他们所有的信用价值加在一起,还不如中心化的腾讯、阿里巴巴,那我们为什么不直接用微信支付、支付宝呢?
但POW协议,目前面临矿池集中化、算力军备竞赛、资源浪费等问题。这些问题,是因为POW协议设计上一些机制导致的。比如比特币每十分钟才出一个块,大家抢块概率像中彩票似的,为了平滑收益,最终攒出了矿池。
Conflux的另一个突破是,做一个高速的POW协议。
我们出块速度很高,最新的测试网上,我们出块的时间是5秒钟1块,1块4M;我们下一个版本希望做到1秒钟4块,块的大小在200k-300k之间。
除了避免出现“中彩票”现象,Conflux在一些博弈论的机制也会防止大的矿池对小的矿池、个人矿工有不对等的优势。比如,目前矿池会收1%-2%的手续费,如果能让加入大矿池的优势低于1%-2%,矿工也就没有加入矿池的必要。
4.从高效共识到高效区块链系统
目前区块链的发展遇到了几个关键性的挑战:首先便是我们如何用去中心化的方式,系统的将外部世界的信息搬运到区块链上;此外还有,如何让区块链在不牺牲去中心化和安全性的基础上接受更多的数据。
如果从整体上来分析区块链,当下的区块链技术包含四个维度,其中交易速度快的优点最为显著,其次是网络互联,然后是区块链数据的存储功能,最弱的是共识机制的发展。因此,如何解决共识机制的短板是区块链技术发展的重中之重。与此同时,我们同样也不能忽视其他三个方面的发展。
Conflux则能很好的解决上述的种种痛点,和其他公链不同的是,Conflux采用独特的树图结构,不同于链或 DAG 只有一类指针,它的每个区块都有两种指针,一种指针指向父亲区块,且只能有一个父亲,与传统的链式结构一样;一种指针指向引用区块,需要引用多个区块,表达不同区块间的先行发生关系。

龙凡:如何构建高效的区块链系统?

所以,在 Conflux 里有两种类型的边,父边(父亲指针确定的边)和引用边(引用指针确定的边)。如果只看父边,账本的结构是一棵树;如果同时看父边和引用边,账本的结构是一个图。通过把把所有的区块都算进来,也就让所有区块都贡献到系统的吞吐率上,这使得系统的瓶颈就不再是共识机制,而是网络本身。这样一来,只要网络足够快,系统的性能就可以不断攀升,从而使得整个系统在不牺牲安全性的同时获得更高的吞吐率。
Conflux能够同时具备去中心化、最优吞吐量和最优延迟验证三个优点。
在最优吞吐量和延迟验证方面,Conflux能够达到9.38Mbps,在一秒钟之内可以验证4个区块。截至目前,Conflux已经扩展到了12000个全节点运行。目前,Conflux链上平均每秒有1392到3480笔交易产生,而平均17秒就能确认一笔交易。
Conflux 所采用的树图结构保留了所有区块,通过设计安全的区块排序算法,在保证去中心化的同时,实现了高 TPS 下的安全性。面对树图结构系统开发带来的各种挑战,Conflux 作为探路者还对可验证存储、合约执行等环节进行了重新设计,完成了从高效的共识到高效区块链系统的重要一步。
5.公链创业的窗口期已经结束
2018年曾被誉为公链元年,在ICO乱战后,带有明星光环的公链们依次登场,并且集中在近期几个季度,正式推出主网。
Conflux虽然自带光环,但我并不认为公链领域“竞争激烈”。
区块链是一个完全的蓝海,每个人都没有地图,每个人的航向也不一样。只是没有人知道,自己行驶的方向能否找到区块链和加密货币世界的宝藏。
只是现在整个加密货币的市场是以币价来评判项目好坏,只要币价大涨,无论技术是瑕疵、是夸大,都能被一些投资者们忽略、原谅。如果希望买一个币,下个月就能涨百倍,那就应该努力寻找、发掘,类似共振币类型的,争取在它崩溃前跑出来。
我知道,一个公链有“木桶效应”,如果想整体性能提升到几千量级,需要把共识算法、网络层、计算层等每一层都设计好,这才是最难的,做到了才是一个好项目。
目前公链创业的窗口期已经结束,现在很难让资本再带动一个公链。
“Conflux”是我拍脑袋想的名字。Conflux本意,是“很多东西汇聚在一起”。这就是我所向往的:一个区块链平台应该是让所有有价值的信息汇聚在一起。