首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

EKT CEO周迅:如何理解DApp的共识机制?

huoxing24h

区块链先锋门户

关注

编辑:Joyce 作者:王运嘉

北京时间4月5日晚上10点,“3点钟火星财经创始学习群”分享继续,轮值群主方军邀请EKT CEO周迅,那么在他眼中,共识机制到底是什么?以及DAPP的共识又会是怎么样的新见解呢?

嘉宾介绍

周迅, EKT CEO,90后程序员,设计了多链多共识的区块链机制,以及基于DPOS+Paxos的DApp共识机制。

以下内容根据群聊记录整理:

周迅:啥叫共识机制呢?共识就是让不同节点之间拥有相同的状态,在区块链中,区块就是实现共识的基础,通过默克尔证明来实现各个节点的强一致性。那么什么是DAPP的共识呢?就是让运行在不同服务器上的数据有相同的状态。

DAPP的共识和普通的Token链(如比特币和以太坊)的共识有什么区别呢?本质上,DAPP的共识和token链的共识没有本质上的区别,但是两者对效率的要求是不同的。对于一个Token来说,有的Token确认需要一个小时,有的Token可以实现十几秒确认。但是对于一个DAPP来说,是无法接受十几秒的延迟的,因此DAPP就必须要有一个特别高效的共识机制。

下面我来跟大家分享一下EKT的DPOS+Paxos机制的设计思路是什么样的,可以做到什么程度。

大家对DPOS都比较熟悉,我着重跟大家介绍一下Paxos。在Paxos中,有三种角色:Acceptor,Proposer和Learner。在一个分布式系统中,如果要使用Paxos算法,那么节点的数量一定是确定的。在我们的共识机制设计中,委托人节点是Acceptor(相当于法官的角色),所有的全节点都是Learner(当一个提案被通过之后,所有存储数据的全节点都要执行),Proposer是用户。每个用户都会拥有自己的提案编号,每次提交提案的时候会带着自己的提案编号发起提案。在这种情况下,不同用户的提案是可以并行执行的,而不是竞争同一个区块里面能不能存储自己的提案。在这种情况下,用户数量越多,锁的粒度越小,所以用户数量越多,TPS越高。

那么我下面继续说一下这种做法的好处是什么。在一个用户发起提案之后,可以在1秒内得到所有节点的确认和执行,也就是说,如果你做一个微博DAPP,你可以不用等十几秒,1秒中就可以了。

不少人都认为DAPP的共识不需要在链上完成,那我说一下我的看法。假如说你在某电商平台买了一个商品,但是因为某些原因电商平台对你的订单进行了修改,导致你的订单信息和你之前记忆的不太一样了(比如发票,比如发错货之类的),这种就是中心化的电商。

蒋纯:这里的DAPP是不是侧链?

周迅:DAPP是一条有自己的共识机制(DPOS+Paxos)的链,不属于某一条链的侧链。

下面我接着介绍我们的共识机制,其实有个特别关键的问题:时间戳。假如说DAPP里面需要在节点上记录时间戳怎么办呢?如果对于不同事件,需要排序怎么办(比如抢微信红包)?

这就又回到了上面的Paxos上。在BTA大会上,我分享了我对DAPP的看法:1,开源;2,所有人对数据库的修改都会被记录。既然使用了区块链,那么所有人对数据库的修改自然会被记录。

想要时间戳怎么办?不同节点的时间戳肯定不一样。答:所有节点对提案进行投票的时候达成共识。

想要随机数怎么办?共识的时候获取。

所以时间戳和随机数这种智能合约中的需求都是可以异步1秒内确认和执行的。

那么回到抢红包的问题上,如果我要做一个抢红包的功能,我要怎么设计我的共识机制呢?

有两种方法:

1,异步的抢红包结果。当一个人向区块链发起抢一个红包的请求时,通过记录全局时间戳,当抢红包的人数大于红包数量的时候进行计算,实现全局一致性。

2,也是DPOS+Paxos的核心了,当我必须要按照一定顺序执行的情况下怎么办?答案就是区块打包后执行。,在DAPP链中,区块头记录的不再是交易的默克尔证明,而是已执行事件的默克尔证明+需要排序事件排序后的有顺序的默克尔证明(或者Hash证明)。当一个区块打包完成之后,前面的自然就被确认了

问答

Beechat烧鸡:抢红包要是没抢完呢?

周迅:我上面说的是处理竞争的情况,没抢完说明没有竞争,皆大欢喜,大家都抢到。

有了两种类型的事件:

1 用户相关的,就是每个用户发起此事件的顺序不同、次数不同,对全局一致性没有影响的

2 全局时序相关的 上面分享的抢红包的第二种实现方式就是全局时序相关的,区块中打包所有全局时序相关的事件的顺序,打包后执行。

Paxos有一个最基本的共识,也就是Paxos系统认的一个“公理”:如果所有节点的初始状态一致,经过相同的操作序列,那么所有节点的最终状态一定一致。

方军:能再分享分享更具体的实现架构吗?现在EKT的多链和这个DAPP共识机制,是什么关系?EKT的多链是怎么设计的?

周迅:在EKT中,是把Token链和DAPP链分开了。Token链是一个多链多共识的设计,什么是多链多共识呢?就是在EKT上你可以发自己的链,而且你链的共识是可以在我们支持的共识机制里面选择的(POW、POS和DPOS),链的运营权归链的社区,我们是无权干涉的。

DAPP链是一个基于DPOS+Paxos固定共识的区块链。在DAPP链中,用户相关的事件是投票后执行,由打包节点打包进区块;全局时序一致性的事件,区块打包后执行。通过这样的机制实现大部分事件的秒级确认和执行,让DAPP的效率和传统互联网应用基本上没有太大差别。

方军:我们先来理解一下你的链的设计:你的主干链就是Token链?然后多链还是有自己的币?DAPP还有专门的DAPP链?

周迅:多链多共识中,每条链都是公平的,并行主链。每条链都有自己的主币,链上的token交易的时候消耗的是当前链的主币作为交易费。token链有一个主干链用来存储token和链的关系,起的只是一个路由的作用。DAPP是有专门的链的,用于完全去中心化的应用开发。当然如果只需要token,可以只用token链。

方军:所以是主干链(主Token)-Token链(其他人发的Token链)-DAPP链,是吗?还是你的平台Token,也是一条Token链?

周迅:白皮书和代码都在github上,地址:https://github.com/EducationEKT/EKT

多链多共识的token链这个月20号会完成,欢迎感兴趣的PR和issue。主干链(主Token)-Token链(其他人发的Token链)-DAPP链的表述非常形象的表明了我们链之间的关系。

方军:你的平台Token,在哪层?是主干链,还是Token链这个部分?

周迅:EKT是所在的链是我们的主干链,主干链的交易费自然也就是EKT。主干链也是Token链并行多链中的一条链

方军:最后一个问题,你怎么处理你这些多链和别的公链资产的跨链?

周迅:首先从技术上来说。

1,内部多链。在EKT中的多条链因为共享用户地址,所以天然是支持“跨链交易”的,因为不同链的资产可以自由的在整个EKT网络中流通。但是实际上我们并没有真正的跨链,而是有了一个前端多链大钱包,实现了多条链中的资产流通。

2 ,跨公链的方式其实有两种,跨链协议和实现侧链。跨链协议在github上有详细介绍,简单的说就是两条公链达成Token共识、用户共识,之后通过跨链协议实现。侧链,比如在EKT上实现比特币的完整功能,作为比特币的侧链,然后这条链实现与EKT链的交互,实现与比特币的跨链(目前没有开始)。

然后说商业上的。国家是命令禁止爱西欧的,所以给新链的募资带来困难,所以新链如何增加流动性变成一个难题。我们可以按照固定汇率借给新链一定额度流动性,这样的话,新链就可以有流动性。其他的公链也可以在EKT上借给新链一定的流动性。这样就满足了新链在没有募资没有上交易所的情况下如何拥有流动性的问题。

陈昕:固定汇率由哪个“我们”来定呢?全社区投票?

周迅:由我们或者是其他公链和新链两个项目方商议决定,在有竞争的情况下应该由社区投票。

蒋纯:您的dapp是公链还是私链?

周迅:算特定类型的私链,因为是基于固定数量节点的,项目方可以允许别人进入,也可以不允许。所以具体每个项目方可以有自己的决定。

方军:如果这个地方是私链,是不是用中心化服务器的技术架构也可以,不必要用区块链?用区块链技术带来什么提升?

周迅:DAPP与传统的服务器架构并没有效率上的提升,我们带来的只是可被监督的方式。用中心化服务器当然好了,但是我们现在想做的是想做一个去中心化的方案。这与通过数据库binlog的同步不同,这个只需要看账本就行,而不是看数据。数据别人改了再同步跟没监督是一样的。

本文为火星财经原创稿件,转载须注明来源:"火星财经(ID:hxcj24h)”

END

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180406A1817B00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券