当前位置:首页 > 区块链新闻 > 正文

Dora网络一个免交易费的高性能高并发公有链

来源: 互联网时间:2019-02-24 09:00:01

Dora网络是一个免交易费的高性能高并发公有链。为了解决目前公链存在性能不足,无法满足更广泛的应用需求,Dora网络从三个方面解决性能问题: 纵向扩容、横向扩容和共识算法。

1)Dora网络愿景

Dora网络作为下一代公链,目标是变成一条人人可用,人人易用的公有链。Dora网络采用全新的开创性区块链架构设计,旨在用区块链技术满足全球范围商业活动的需要。Dora网络从CPU设计中受到启发,将流水线模型和分支预测算法应用于区块链设计中,提出了针对区块链可扩展性问题题的独特解决方案,大幅提高区块链的性能,并兼顾安全性和去中心化。

2)Dora网络纵向扩容

传统的区块链扩容解决方案分为两种:状态通道和多链分片。这些传统方案都以交易的串行化执行为假设条件,交易的串行化使得每个矿工节点可以独 立去执行和验证,从同一个创世块出发经过同样的串行操作序列,得到一致的输出结果。交易的串行化执行导致系统的TPS 受限于单个节点的性能。Dora网络为了解决上述的性能问题,将区块中普通转账交易以及智能合约转账交易并行执行,优化系统性能。

2.1)普通转账交易并行化

将账号看成一个节点,A 转账给 B,则在 A 节点到 B 节点之间添加一条有向边,边上的数 字表示转账金额。一个区块内的所有交易可以构成一个图。举一个例子,假设一个区块中包含如 下一些交易 {A 转帐给 B 10 个 token,A 转帐给 C 5 个 token,D 转账给 F 3 个 token,E 转账给 G 2 个 token},如下图:

从图上明显可以看到这些交易被划分为三个子连通图:{A,B,C}, {D,F} 和 {E,G},同一个 连通图内的交易存在依赖关系,只能串行执行,但不同连通图之间是可以并行执行的,比如 D转账给 F,E 转帐给 G 的先后执行顺序只是在中间临时状态不同,但不会影响区块最终的状态。

2.2)智能合约交易并行化

智能合约的执行逻辑上可以分成两部分:一部分用白色标识 EVM 解释执行部分,另外一部分用灰色标识真正改变世界状态的部分。灰色部分是影响最终世界状态的关键组成部分。Dora网络在智能合约的执行过程中收集智能合约所依赖的外部 账号的世界状态,也收集最终影响的外部账号的世界状态。只要一个智能合约所依赖和改变的账号集合与另外一个智能合约所依赖和改变的账号集合 有交集,这两个智能合约是连通的。将一个区块中所有的智能合约交易划分成不同的连通子 图,各个子图之间可以并行执行,示意如下图:

3)Dora网络横向扩容

Dora 以子母链的方式对区块链做横向扩容。通过把智能合约集合划分成一些独立 的子集(基本都是按 dApp 来划分),让这些子集都独立运行在一条子链上,让主链的交易得以分流,相当于在输入集上做了一次分片处理。子母链均采用账号模型,账号可以在子链和母链上共用的,但其在不同链上的状态会分别记 录,同一个账号在不同链上各自记录在该链上的世界状态。Dora网络的字母链结构如下图:

3.1)子链安全性

Dora网络主链每隔一段时间子链中生成区块的矿工负责把还未记录在主链上的子区块信息 ChildChainBlock 打包递交到主链上,但注意母链上不会记录完 整的子区块信息,而只是记录子区块头信息,这些数据仅仅只是记录,母链的矿工打包时不负责验证。为了保证子链数据的安全性,Dora网络设计了一个新的监察者角色。

监察者同时会监听母链和子链的所有交易,当检测到母链上有子链区块打包消息 Child- ChainBlock 时,结合之前收到的子链交易数据去做验证,一旦检测到有子链区块存在问题,则把证据递交到母链上,母链的矿工检查确认后会对这条特定子链的打包矿工进行惩罚。

3.2)数据剪枝和快照

为了解决数据膨胀问题,Dora网络母链支持子链区块信息的剪枝裁剪,记录在母链上的子链的 数据只保留近期区块的数据(比如 2048 个区块),更久之前的数据可以从母链上移除。

同时母链还支持快照,一个快照包含当前区块所有账号的世界状态信息,新的节点可以只从 某一个快照块出发从而快速同步,甚至轻量级节点可以删除快照以前的所有区块数据。

3.3)跨链交易

通常来说一种代币只会在一条特定子链内部流通运转,Dora网络设计了一个特殊的 CrossChain- Transaction 交易能让同一账号内的代币在子链和母链上互相流通。

CrossChainTransaction: {

blockno:区块编号,rawtransaction 这笔交易在具体哪个区块内blockhash:blockno 对应区块的 Hash

merklepath: 验证 rawtransaction 是否在区块 blockno 内的默克尔树路径rawtransaction:{

owner: ""0xfbc2a4...ed"",

symbol: “UT”,

value: 100,

direction: 0 or 1 (0 表示从子链到母链,1 表示从母链到子链)

}

假定账号 A 转移 100 个 UT 到母链上,当跨链交易发生时:

1. A 先在 UT 子链上发起一笔特殊的转账交易,表示将 100 个 UT 从子链账号 A 转移到母链账号 A;

2. 该特殊交易在子链上得到确认后,等待子链的矿工将包含该交易的区块信息记录到母链上;

3. A 接着在母链上发起一笔从子链到母链的 CrossChainTransaction 交易,附带上步骤 1 的转账交易,区块高度和 merkle 路径供母链做验证;

4. 母链矿工验证 CrossChainTransaction,如果验证通过则打包进母链区块,并修改母链账号 A 的状态记录转入 100 个 UT; 反之,代币可以遵循同样的规则就可以从母链上再转移回子链,这种方案的好处是整个转移过程中代币还保留在同一个账户下,不像其他跨链解决方案引入额外的受控制账户。

Dora网络母链上设计了一个特殊的 TokenSwapAction,允许两种代币之间的原子互换,需要携带双方签名的订单信息,并同时会检查双方的余额来决定是否能执行互换。

TokenSwapAction:

{ taker: "LRC",

takerAddr: “0xfbc2a4...ed”takerValue: 1000,

maker: "RDN",

makerAddr: “0xabc35e...ef”makerValue: 500, takerOrderWithSignature:makerOrderWithSignature:

}

通过这个原子互换代币操作 TokenSwapAction 和跨链操作 CrossChainTransaction,可实现子母链之间的跨链交易。

4)DVBC共识算法

为了平衡高性能和高安全的两个需求,Dora网络提出了一种兼顾安全和效率的混合共识算法DVBC(Delegate Verifiable BFT Consensus)。DVBC 基于 DPoS,VRF和 BFT,分为 3 个层次。假设 M 个节点,一共选出 N + 1 个节点,N 初始取为 21。在每一轮共识开始时,Dora网络首先使用第一层算法 DPoS 根据选票的大小从 M 个节点中选择出得票数排名前N /3 个节点,这些节点会自动成为本轮的记账者。第二层算法将剩下的节点 M − N /3 作为候选节点,在这些节点中采用可验证随机数 VRF 算法随机挑选出其中的 2*N/3+1 个候选节点作为 本轮的记账者。最后一层运用 BFT 算法在 N + 1 个记账者之间来达成区块共识。该共识算法能 保证在 N + 1 个节点中只要不超过 N /3 个作恶节点,区块的正确性仍然得以保证,而且不存在 任何分叉,防止超级节点联合作恶。此外,由于其他候选节点也能被选中作为记 账者,能让更多的节点愿意作为候选节点,从而增加网络的安全和鲁棒性。

考虑到每个 dApp 对安全和性能的要求不同,Dora网络允许在创建子链的时候指定子链的共识 算法:DPoS+VRF,BFT 或者两者混合。

4.1)BFT算法并行优化

假设每个区块的 propose, prevote, precommit, commit 四个状态的时间分别为 T1,T2, T3,T4,按串行执行生成和确认 N 个区块所需要的时间为 N ∗(T1 + T2 + T3 + T4)。

从流水线的角度来考虑这个问题,四个状态可以有序并行执行,理想情况下,如图11所示, 按照流水线的方式执行生成和确认 N 个区块所需要的时间为 N ∗ T1 + T2 + T3 + T4。当 N 足 够大时,经过这种流水线操作后,时间近似为 N ∗ T 1。

Dora网络和区块链生态一起成长,持续关注区块链领域最新的研究方向,吸收和改进已有的研究成果。

免责声明:

1.本文内容综合整理自互联网,观点仅代表作者本人,不代表本站立场。

2.资讯内容不构成投资建议,投资者应独立决策并自行承担风险。