AMA:如何打破区块链共识机制的性能瓶颈

AMA:如何打破区块链共识机制的性能瓶颈

newblockpro 发布在 海盗号 51657

在3月20日 Neutrino 追问 AMA 第17期交流中,我们邀请到 Conflux 创始团队成员兼  CTO  伍鸣博士与 Neutrino 中国社区用户进行了一场关于《如何如何打破区块链共识机制的性能瓶颈》的线上分享。在关于开发团队先做公链在拓展 Dapp还通过 Dapp 升维做公链的问题上,伍鸣表示,从一个应用发展出一条公链,从积累用户上来说,或许是一个更容易的途径。先有应用再搭平台,我相信搭出来的平台会很好满足应用的需求,但底层技术很难往前迈进一个时代。
 

以下为第17期Neutrino追问®AMA交流整理

话题主持@Neutrino 问题1:在最新项目介绍报道中,说 Conflux 使用了树图结构。在此,请教一下伍博士什么是树图结构?它与DAG是有什么不同的地方?另外,有一种观点说 DAG 或树图不是区块链,因为它的数据结构不是链表而是 Graph 图,对此您是怎么看的?

伍鸣:如果从一两千字才能说清楚的Conflux共识机制中,精炼出一个词来描述最本质的内容,我们认为用 DAG 结构概括可能会给人带来误解。树图结构可以更接近本质。

在Conflux里有两种类型的边,父边和引用边。如果我们只看父边,账本的结构只是一棵树。当我们同时去看父边和引用边的时候,账本的结构才是一个图。所以我们所说的树图结构就是在图中包含了一颗树的结构。这个树的结构非常重要,它帮助我们决定了主链如何选择。而现存的其他的基于DAG结构的系统中都只有一种连接区块或交易的边。

在Conflux里有两种类型的边,父边和引用边。如果我们只看父边,账本的结构只是一棵树。当我们同时去看父边和引用边的时候,账本的结构才是一个图。所以我们所说的树图结构就是在图中包含了一颗树的结构。这个树的结构非常重要,它帮助我们决定了主链如何选择。而现存的其他的基于DAG结构的系统中都只有一种连接区块或交易的边。

 

话题主持@Neutrino 问题2:公链项目非常依赖开发者社区和用户群。之前看到一个讨论,大致是说,现在国内很多团队走入做公链的误区,都在从上向下做降维,从底层公链到应用。但相反由落地应用升维做公链相对会更可行些,比如币安 dex 等,毕竟从应用来说从一个公链到另一个相对会更轻松。因为Conflux就是致力于打造下一代高性能的 DApp 公链平台,伍博士您是怎么看待这个问题的?另外,你们如何扩大自己的社区影响力及吸引开发者进入?

伍鸣:我觉得这不能叫做误区。至少来说,打造一个真正能够推动底层技术的公链,并不是一个错误的事情。

1.底层技术决定应用的形态。

在黑白屏的手机时代,你只有像素游戏可以玩。在触屏手机出现之前,按键是游戏进行交互的唯一途径。智能手机普及以后,才迎来了移动互联网应用的爆发。如果没有网速的提升,就不可能有快手抖音这样的小程序应用。

从一个应用发展出一条公链,从积累用户上来说,或许是一个更容易的途径。先有应用再搭平台,我相信搭出来的平台会很好满足应用的需求,但底层技术很难往前迈进一个时代。一个爆款按键游戏厂商如果去做手机,一定以适配自己的游戏为第一目标。他可能会做出更舒适,更灵敏的按键,或者更大的屏幕。但很难超越时代,做出一个触摸屏手机出来。

2. 复制现有的技术很容易,但推动底层技术的进步,并不是一个低门槛的事情。

在过去一波的区块链泡沫中,出现了很多不靠谱的项目,虽然很多不靠谱的项目死掉了,但留下了一个不好的影响,就是让很多人误以为搭建一个高性能的公链,是一件很容易的,已经被解决很好的问题。但其实不是这样,搭建一个高性能的公链和 DApp 平台,需要有理论安全性保证,需要不依赖于中心化的安全,需要能够抵抗各种攻击,需要代码足够健壮,能够应对在高负载的场景,需要有合理的机制设计、让遵守协议成为矿工的最优策略。这些都不是一个很简单的事情。

3. 即使公链是一个底层技术,也不妨碍 Conflux 积累社区和用户群。

现在我们已经和很多优秀的dapp开发者和团队建立了联系,大家已经达成了一些共识,Conflux测试网上线后,他们很快会围绕Conflux的测试网来做一些对应的DApp的开发,以及Bata版的测试,在测试网阶段我们也会和他们保持联系,对开发者们提出的问题作出解答。

除了技术的交流和结合之外,在早期我们也会给DApp开发者提供很多的支持,比如你是一个DApp开发者,如果你的dapp被用户所使用,在早期Conflux基金会将会覆盖掉开发的手续费。

然后就是社区宣传上予以支持,我们会联合大家一起去各地做路演,也会在我们的公众号里去转载大家的技术文章以及他们对行业的一些思考等,这个大家已经可以看到,我们已经转了一些关于随机数,还有预言机等等的一些文章。

 

话题主持@Neutrino 问题3:根据你们的设计,未来 Conflux 会有怎样的性能表现?有具体的量化数据吗?目前公链比较常见的扩容解决方案,如分片与分层,而Conflux与它们相比,有什么不同或创新的地方?还有现在大家都比较重视layer2方案,在这点上你们有什么规划吗? 

伍鸣:在目前 Conflux 的开发进度中,在现实网络条件设定下,实现了智能合约等功能的测试网实现了 3000 TPS 的稳定运行。

Conflux 致力于提高基础链的性能,而分片与分层基于基础链的特点,实现一些应用场景下进一步的性能提升。其实Conflux 和分片与分层的技术是不同方面的技术,是正交的,并不矛盾。

这些技术可以应用在比特币等区块链上,提升它们的效率。自然也可以应用在 Conflux 上。

 

话题主持@Neutrino 问题4:Conflux 如何确认交易,如何防止双花问题,如何解决树形结构下的交易冗余问题?

伍鸣:关于双花攻击的解决。我们首先来看一下一个攻击者如何能够逆转在账本中的一个交易,比如下图中交易:

 

 

为了做到这一点,一个攻击者需要产生一个交易4的双花交易,打包到一个区块里面,并且将这个区块在区块的全序中插入到区块B的前面。但攻击者很难做到这一点,主要有两个原因。第一个就是除非攻击者能够改变主链,不然他不能够逆转交易,因为交易的顺序是由主链来决定的。比如一个攻击者想把一个块插在靠前的位置,他能做就是在一个很早的Epoch里面的区块后面接着产生新块。但是只要这个块不在主链上,它就最终还是会属于一个很晚的Epoch。因为当一个诚实的新块产生以后,它会通过引用边把这个攻击者的区块给拉到新的Epoch里面。

第二个原因就是,如果攻击者没有超过50%的算力,他就没有办法改变主链。为什么是50%呢。下图给出一个直观的解释。

假设区块A是一个主链上的块,一个攻击者想要用区块A’来取代A在主链上的位置。那么所有攻击者产生的块都会在A’的子树下面,然而所有诚实的节点所产生的块都会在A的子树下面,这样的话,攻击者就需要超过50%的算力才能让A’的子树超过A的子树。根据理论的分析,A’能够取代A的概率是随着时间的增加而指数下降的。

因此,一个交易的确认就包含以下几步。用户首先对攻击者的算力比例以及他所能承受的风险有一个假设。给定这个假设,Conflux首先找到这个交易所属的Epoch,然后找到和这个Epoch相应的主链区块。最后再检查这个主链区块被逆转的概率是否小于用户所能承受的风险。如果小于,则该交易可以确认。

对于交易冗余问题,也是一个和激励机制紧密相关的问题,解决这一问题,概括来说就是两句话:

  1. 矿工从交易等待池(加权)随机选取交易 ;
  2. 设计激励机制,鼓励矿工遵守上一条规则。

在比特币和以太坊系统中,每个节点会选择交易费最高的若干交易来打包,这样的选择在比特币或以太坊这样链式结构的的系统中是没有任何问题的。

但是在 Conflux 中,如果依然采用这样的策略,就可能会导致每个节点选择的交易都差不多一样,都是那几笔交易费最贵的。那么区块中就会出现大量的重复交易,导致吞吐率降低。而对于每个矿工节点来说,这种情况下,交易费最贵的交易必然很多人去抢,平均每个人能分到的就不多。

所以,在 Conflux 中,这样的策略并不是最优选择。矿工只需要选择那些交易费稍低,但没什么人竞争的交易,就可以获得更高的收益。

那么我们在代码中,设计的策略是,那就让矿工们从交易等待池中,根据交易费选择权重,随机地选取交易。交易等待池中的交易越多,重复交易的比例就越小。

话题主持@Neutrino 问题5:据了解,Conflux 在第一阶段依然会采用经典的 POW工作量证明机制。但在比特币上我们也看到了它存在诸多限制,如区块大小、出块时间、资源浪费等,后来因此还出现了扩容争议与分叉事件,你们是基于什么考虑来选择 POW 的?这看上去与解决扩容有些矛盾。还有你们会有预挖矿吗?如果有,哪些人会有这个机会?

伍鸣:首先我们需要区分清楚,哪些局限性是比特币特有的问题,哪些问题是 PoW 公有的问题。

比如说,在最长链规则下,无论如何调整出块大小和出块时间,提高吞吐率必然要以增加孤块数量为代价,而孤块的比例又与安全性直接相关。但是,我们不能把比特币的设计当成金科玉律,如果把最长链规则改成最重链规则,避免孤块对安全性的影响,其实就可以解决比特币这个效率难题。也就是说,这个难题并不是 PoW 带来的,而是最长链规则带来的。而对于扩容争议和分叉事件,这和社区治理有关,和 PoW 自身的问题。

需要消耗大量能源,这确实是 PoW 的特性。但消耗的能源,其实变成了保障安全的屏障。就像和平年代的军费开支一样,一个国家的武装力量足够强大,可能没人敢进攻。武器从生产到退役可能都没有上过战场。但你要是敢把这笔开支省了,虎视眈眈的敌人可能就真的来打你了。所以能源的消耗究竟是浪费,还是必要的运行成本,是不确定的。这取决于是否有替代方案实现同样的安全保障。

在现阶段,PoS 等方案并没有实现等同于 PoW 的去中心化和安全性,所以我们选择了 PoW 方案。考虑 PoW 方案的原因有很多,主要是考虑到 PoS 中无利害攻击和长程攻击的安全性,以及担心早期代币的相对集中使 PoS 链成为一个本质上中心化的东西。具体关于我们的选择,可以读我们的一篇文章《在公链项目早期,为什么PoW是一个更好选择?》。

话题主持@Neutrino 问题6:相比于比特币、以太坊用交易费和区块奖励来激励矿工,Conflux的激励机制又是怎么样的呢? 对于不诚实节点或作恶行为,你们如何判断及预防此类情况发生?

伍鸣:与比特币,以太坊类似,Conflux 对矿工的奖励包括2部分,一部分是区块奖励,一部分是交易费奖励。我们的文章《DAG 下的激励机制的挑战与对策》很详细地讨论了这件事情。这里我简单讲一下要点。

首先对于区块奖励,Pivot Chain 和不在 Pivot Chain 上的奖励规则是一致的,我们分析的结果表示没必要区别对待这两类区块。但是,每个区块的奖励不是一个定值,而是取决于这个区块的 anti-cone block 有多少。

其次对于交易奖励,我们主要考虑的是如何设计合理的交易奖励机制避免交易重复问题。关于这个问题,其实我们之前避免交易重复的那个问题已经讨论过了。

时间有限,更详细的内容可以读一下我们的文章。

话题主持@Neutrino 问题7:我们发现对于新兴公链,有一个项目常拿来和Conflux 比较,同样声称解决区块链不可能三角的Algorand,而且也有着强大的学术科研背。伍博士您是怎么看待Algorand的?两者有哪些可比性?

伍鸣:Algorand 其实也是一个很不错的项目,但 Conflux 和 Algorand 在公链建设上选择了两个不同的方向,Algorand 使用 VRF,基于 Stake 加权选择出块者,是一个典型的基于 PoS 的共识机制。如果将 Conflux 和 Algorand 进行对比,其实更多的就是基于 PoW 和基于 PoS 两个技术路线的对比。这两个技术路线可能就像芯片历史上 CISC 和 RISC 之争一样,需要在两个方向进行长时间的研究投入,才能够发现各自的极限在哪里。

之前我们已经讲了为什么 Conflux 认为在公链早期 PoW 是一个更好的选择,但 PoS 也有自己的优点。比如,基于 PoS 设计的链往往在确认时间上有更好的表现。我们也有一篇技术文章《Conflux杨光:PoW和PoS的全面比较》,从相对客观的角度,对比了 PoS 和 PoW 各自的优缺点。

话题主持@Neutrino 问题8:目前我们了解到,DAG(有向无环图)结构的代表项目包括IOTA、Hashgraph等项目。Conflux 相比于这些项目有哪些不一样的地方?

伍鸣:我们最近被问得实在是太多了,尤其是像以IOTA为首的DAG,当时我们不想谈论这些事情。但还是有人不停的在问我们,我们有一天总得面对这些问题,那不如一吐为快。于是我们开了一个吐槽专栏,现在已经写了两期,《IOTA物联网电磁炉-让PoW的耗电没有遗憾》、《Conflux 吐槽君:Hashgraph 是一个真正的企业级去中心化平台吗?》,之后我们也会一直做下去。

话题主持@Neutrino 问题9:像以太坊、EOS等这些相对成熟的公链在不断升级优化,而在2019年,我们也看到好几个具有影响力的公链项目也在加速推进上线, Conflux 作为后起之秀,您觉得机会在哪里?近期Conflux有什么规划或进展?

伍鸣:Conflux是一个技术创新为主的公有链项目,Conflux的特点是不牺牲任何去中心化和安全性的情况下去提高吞吐量。

这种情况下,有很多之前受到吞吐量限制的这些去中心化应用就可以在Conflux 上的得到施展的舞台,近期已经有很多包括去中心化交易所等最顶尖的团队和我们联系,因为他们觉得在以太坊上吞吐量的限制没有办法很好的承载他们的分布式应用。

而在EOS上,因为中心化和安全性的的问题,他们又不能很好的吸引大量的机构的用户,这些机构的用户往往牵扯的金额都比较高,所以他们还是决定选择Conflux,和我们进行了很深度的洽谈,包括很多传统的金融行业包括信托、银行、信贷等等的机构都和Conflux进行了密切的洽谈,一旦测试网上线之后我们就会看到一些分布式应用开始逐渐的搭建。

本周末Conflux将在上海举办一场主题为《下一代公链和应用场景前瞻》的线下沙龙,到时候我和我们Conflux COO 张元杰、上海交通大学副教授TEEX首席科学家 夏虞斌还有红杉资本的资深投资经理会一起在本次沙龙和大家一起聊一下未来公链和应用场景,欢迎上海和上海周边的朋友们到时候一起线下交流。

————现场答疑————

Neutrino 社群成员: 在一些文章中,看到 ConfluX 能在分钟级别的延时内确认交易,这种延时因安全需要而特意设计的还是因为技术或什么方面限制?另外能否承载像交易所这种高频交易的应用?

伍鸣: 首先,基于 PoW 链,分钟级别的延迟基本上是极限。因为你永远无法避免攻击者运气好,在短时间内挖出了比平均值多的区块来进行双花攻击。你必须等一段时间,在后续的区块变多以后,才能够确认一笔交易。

其次,对于高频交易所需要的延迟,其实完全去中心化的系统是无法做到的。但是我们可以通过牺牲去中心化来实现。比如,做一个基于 BFT 的侧链来实现高频交易中的低延迟,然后这个侧链定期将每个人的持仓情况同步到 PoW 链。风险在于,交易完成以后,同步到 PoW 链之前,你需要信任参与这个BFT的多数人。

Neutrino 社群成员: Conflux 对于智能合约的设计是如何考量的?

伍鸣: Conflux目前的实现是兼容以太坊的solidity。这个我们目前通过移植EVM来实现。但是我们认识到EVM以及solidity的一些缺陷,同时也正在讨论和设计智能合约语言以及虚拟机的改进方案。

Neutrino 社群成员: 您好,Conflux对于落地项目怎么看?是否会在游戏这块先取得突破呢?据我所知,电竞名人2009伍声和你是堂兄弟关系,游戏圈资源非常厉害,本来就有自己的游戏产业,而且和斗鱼,王思聪,丁磊都有很大的交集 。

伍鸣: 我们正在积极的思考和探索Conflux上应用的落地方案。我们目前比较看好的一些场景有去中心化交易所,预言机,以及企业数据共享等等。我们在和一些相关的团队进行一些交流,以建立更好的合作关系。我们的确认为区块链在游戏中的应用会是一个比较好的落地点。我们之前在北京的meetup中,cobo钱包的VP李尧也提到过区块链游戏的前景和挑战。这个对公链系统的吞吐率的要求是很高的。因此我们认为Conflux在解决这个问题上是很有希望的

Neutrino 社群成员: 当TPS提高以后,执行交易与合约时,势必会出现对账本状态的大量读写,这个稳定性、安全性如何保障?ConfluX 是如何解决的。

伍鸣: 没错,在高交易TPS下,执行交易时,账本状态读写的吞吐量过低会导致很严重的问题。

我们设计并实现了新的账本数据结构来实现高效地对账本状态进行读写。近期,我们正在进行一些实验,将以太坊的交易作为测试数据,账本状态读写的吞吐量可以支持多高的交易 TPS, 也会和以太坊的实现进行对比。

Neutrino 社群成员: :公链在运行几年后会有大量数据,conflux如何应对大规模存储?

伍鸣:这个问题很好。首先conflux的网络中会有一种archive node,它具有超大规模的存储,可以存储所有的历史数据。而对于普通的全节点,我们会设计checkpoint的机制来可靠的裁剪掉很老的历史数据。

 

评论
登录 账号发表你的看法,还没有账号?立即免费 注册