Conflux & TokenGazer AMA活动内容回顾

12月27日,Conflux受邀参与TokenGazer举办的在线问答活动,Conflux CTO伍鸣博士与参与活动的百余名研究员进行了深度问答、科学辨析。这次活动让你们深入的了解到Conflux的技术优点和发展潜力,也让更多人对Conflux的将来发展坚决了积极的信念。算法

(如下为这次活动的文字整理版)浏览器

问题1:Conflux使用的有向无环图(DAG)跟比特币、以太坊的区块链结构有什么具体不一样,优点是什么?

伍鸣@Conflux: 这个问题是一个很是本质的问题,我愿意展开来谈一谈,这要从比特币的效率局限性谈起。根据一些论文,在比特币协议中,不管如何调整出块速度和区块大小这两个参数,速度与安全不可兼得。安全

这其中的原理是什么呢?咱们想象一下,若是两个区块都是由诚实节点生成的,可是由于网络延迟,他们在生成的时候互相没有看到对方,那么在两个不一样的分叉上,那么它们就会在不一样的分叉上。一旦进入到不一样的分叉上,两者即是你死我活的竞争关系,最终有一个区块被丢弃。诚实节点的区块被丢弃,损失的诚实节点的总算力。网络

分叉越多,好人区块的内讧越多,坏人的攻击门槛越低,比特币越不安全。为了安全,比特币必须维持一个低的吞吐量。学习

Conflux使用有向无环图结构 (DAG),咱们容许每一个区块引用多个区块做为本身的祖先区块,能够避免好人之间的这种竞争,从而打破比特币的矛盾,在提升效率的前提下不牺牲安全性。区块链

以太坊与比特币相比特殊一些,以太坊其实有了DAG的雏形。关注区块链技术的朋友可能知道,以太坊中有叔块的概念。一些区块选一个父块,几个叔块,看似也构成了一个DAG。可是,以太坊的叔块只是为了给没有进主链的区块发一点鼓励安慰的系统奖励,叔块中的交易依然会被丢弃。若是将以太坊的出块速度提升,致使分叉过多,其有效吞吐率依然很低。测试

下面有图能够更好地展现优点,这张图展现了4MB大小区块下不一样出块时间下被保留区块的数量。Conflux保留了全部区块,比特币和Ghost (以太坊协议改自这个协议) 则因为分叉丢失了大量的区块。spa

总结一下:设计

①Conflux是和比特币、以太坊相似的PoW公链,但容许一个区块引用多个区块做为祖先,从而构成一个DAG。排序

②比特币、以太坊的实际吞吐率很低,即便你尝试减小出块间隔或者增长区块大小,也没法获得一个安全性和效率兼得的公链。

③和比特币、以太坊相比,Conflux能够在不牺牲去中心化和安全性的状况下,提升吞吐率。

问题2:基于DAG的智能合约会遇到“交易顺序问题”,好比谁先预约到某航班的座位跟交易顺序有关,Conflux有没有比较好的设计解决这个问题?

伍鸣@Conflux: “预约航班座位”是一个很好的例子,从这个例子能够看到,在DAG中,若是不一样的交易须要竞争合约中的资源(好比航班座位),区块排序与交易排序是一件十分必要的事情。这将决定谁的交易在前,谁的交易在后,谁最终获得了这个座位。

也是由于这一点,咱们须要对DAG中的区块设计一个拓扑排序算法,将全部区块排一个顺序,而后根据区块的顺序决定交易的执行顺序。并且这个拓扑排序须要知足如下几点:

· 一致性:不一样矿工节点排的结果是一致的。若是一些矿工告诉你选座成功,一些矿工告诉你选座失败,你就会很困惑。

· 安全性(不可更改性):排序结果不能被坏人的攻击更改。好比说,你选了一个座位,5分钟后,这笔交易确认成功了,你很开心。三天后你登机的时候,发现排序发生了更改,你的座位没了。这也是很严重的公链安全事故。

Conflux设计了一个知足上述要求的安全拓扑排序算法,算法输入一个DAG,输出DAG中区块的一个拓扑排序。每一个矿工(全节点)将本地机器的DAG上输入这个算法,就能够获得区块排序,根据这个结果,就知道了应该先执行谁,后执行谁。

“一致性与安全性”可能比较抽象,咱们举个例子。今天,这个DAG中有10000个区块,9900个区块里的交易已经被确认。明天,这个DAG有20000 个区块,那么把明天的DAG和今天的DAG分别做为算法的输入,前9900个区块应当是同样的,哪怕有坏人在作双花攻击。这就是一致性与安全性。

Conflux 的算法设计能够保证一致性与安全性。关于这个排序算法具体是如何设计的,感兴趣的伙伴们能够阅读咱们的论文或者科普文章。

总而言之,Conflux经过设计安全的拓扑排序算法,解决“交易顺序问题”。

问题3:如何解决不一样区块内的打包交易的交易冲突问题,了解到当交易冲突时时间稍后的冲突交易会被“discard”掉,这个被丢弃的交易是怎样和有效交易进行状态区分的?

伍鸣@Conflux: 在问题2中,咱们已经解决了交易顺序问题。那么当全部节点对DAG获得一个一致的区块排序时,只要遵循一个规则:“发生重复或冲突者,排序居后的交易无效”,就能够判断哪些交易是无效的交易,而后本身在本地标记一下就行。区块排序的一致能够保证“无效交易标记”的一致。

额外说一点,因为每笔交易是否有效是每一个矿工本身作出的判断,而没有持久化写在区块中,因此没法实现像比特币那样,经过Merkle Path向轻节点证实一个交易在区块中,由于你没法经过Merkle Path知道它是有效的仍是无效的。可是,Conflux采用帐本模型,每一个区块头会存储当前帐本状态的哈希值。经过这个哈希值,很容易向轻节点证实指定地址的余额等。

总结一下:

①被丢弃的交易由全节点本地进行标记,一致的排序结果保证一致的标记。

②基于这一点,Conflux轻节点的交易验证与比特币有所不一样。

问题4:那无效的交易会被追加一个状态么,或者说我在区块浏览器只查看交易哈希时,可否看出这两笔交易(有效和无效)的区别?

伍鸣@Conflux: 交易是否无效能够当作是交易执行的某种结果,这种结果状态是能够记录在区块中的,这样,在区块浏览器中就能够查到这种状态。

问题5:这个交易执行结果是标记在本地仍是在链上?

伍鸣@Conflux: 标记是在本地,但链上也会有所提现。以前的回答中其实提到,每一个区块头会存储当前帐本状态的哈希值,经过主链区块的帐本状态,会体现历史区块中每笔交易是否有效。

问题6:跟其余链不一样,无效的交易不会记录在链上,Conflux是须要对无效交易本地打标,这是否可能对不了解的用户有学习成本,以及利用这一点来混淆用户的可能?

伍鸣@Conflux: 经过浏览器提供标记,能够帮助普通用户判断一笔交易是否有效。

问题7: DAG结构中不存在“叔块”问题,网络中是否会存在过多的空块或者区块中的交易重复致使区块数据冗余,从而对节点的网络和硬件配置带来压力?

伍鸣@Conflux: 首先,DAG中每个区块都是须要消耗算力才能生成的,因此网络中各类区块,不管是正常的区块仍是空块,其数量受挖矿难度的制约,是有一个上界的。因此,对节点的网络和硬件不会带来额外的压力。

其次,空块或重复交易过多确实会影响利用率和实际的交易吞吐率。因此咱们须要为矿工们设计一个交易选择算法,从交易等待池中,根据交易费加权随机抽取交易,以最大限度避免交易重复。这个算法的设计应当考虑激励兼容性 (Incentive Compatible),以从经济激励上鼓励矿工遵照这个算法。

问题8: 这个算法是否已经完成?

伍鸣@Conflux: 这个算法的设计和理论分析已经有了,如今在咱们的系统中开发实现,尚未完成。

问题9:理论基础就是姚教授的新论文?

伍鸣@Conflux: 姚老师的论文是基于比特币进行分析的,对咱们这个算法的理论基础有必定的启发。

问题10:项目是否会进行预挖?主网启动后矿工奖励是否会有变化,枢轴链和分叉链上的区块的区块奖励是否同样。

伍鸣@Conflux: 和以太坊同样,创始块会分配必定比例的代币。每一个区块的基础系统奖励开始比较多,时间长了之后会逐渐减小。

在 Conflux 中,每一个区块的系统奖励不是一个固定值,是根据一个规则算出来的。枢轴链和分叉链的区块奖励计算规则是一致的。

(小编注释:在介绍这个规则以前,咱们先来考虑一下一种情形。在Conflux 规则里,每一个新的区块应该选择一些引用边,使全部已经存在的区块成为它的祖先。(具体的选边规则参见咱们的文章)。可是一个坏人可能会出于某种目的,在挖出一个新的区块时,伪装没收到或没看见一些区块,以获取更多的交易费。咱们就要惩罚坏人这种行为,伪装没看到的区块越多,这个区块的区块奖励越少。)

若是要具体地描述这个规则,就要先讲一个概念:“光锥外区块”(anticone-block)。什么是“光锥外区块”呢?在DAG中,若是两个区块之间没有一条路径,这两个区块的互为对方的 “光锥外区块”, 好比在下图中,B和C互为对方的光锥外区块。

一个区块的系统奖励会与基础系统奖励和它的光锥外区块的数量有关,光锥外区块越多,其奖励越少。(小编注释:当坏人挖出一个新区块时,那些伪装没收到没看见的区块,都会成为新区块的“光锥外区块”。)如此设计,是为了鼓励每一个矿工遵照选择引用边的协议。

问题11:项目预挖的比例是多少呢。还有区块减小的规则(好比比特币每隔4年减半)?

伍鸣@Conflux: 这些具体的数据会在咱们主网上线以前公布,你们能够关注咱们的公众号。

问题12:这个设计的会让区块内的奖励会有不一样,矿工要额外技术要挖快的预计奖励对吧?那这样的话,币的数量是否会有不肯定性?由于区块的奖励不肯定,致使一年以后挖的币的数量不可控?

伍鸣@Conflux: 这个设计会让区块内的奖励有不一样,可是,在正常状况下,这个差别不会很大。咱们但愿用这个差别,来鼓励矿工们遵照协议。

问题13:Conflux预计主网上线是什么时间,TPS能达到多少。

伍鸣@Conflux: 咱们的测试网预计在明年3月份上线,主网上线预计在明年Q3或Q4。

---

小编:

在此次在线问答中,咱们发现不少关心区块链的小伙伴对奖励机制和挖矿规则很感兴趣,咱们会在后期特别推出一篇关于此话题的技术文章,欢迎小伙伴们关注咱们的公众号来随时掌握更新状态!

相关文章
相关标签/搜索