本文由Ultrain技术总监苏羽撰写,深度对比解析Ultrain跨链与波卡跨链的异同,欢迎感兴趣的读者查看。
逻辑示意图
图一 Ultrain主侧链跨链结构示意图
图二 波卡跨链结构示意图
首先我们从概念性原理图来观察一下这两个跨链的解决方案。乍一看,貌似完全不一样,但是实际上二者没有本质区别。它只是从不同角度阐述了相似的解决方案。Ultrain的原理图更加注重关系,展现多链结构在某一时刻的关系图。而波卡的示意图从交互的视角,展现了不同角色的相互作用关系。他们只是用了不同的名称来指代了链中的角色。
平行链(parachain)类比于侧链
见证节点(validator)和钓鱼人(fisherman)类比于矿工
收集人(collator)类比于交易节点
中继链(relay chain)类比主链
根据波卡相关文档的描述,parachain 可以接入中继链,共享安全,而这是波卡重点推介的一个特性。简单说就是中继链的见证节点不仅要运行中继链的逻辑,还要为parachain 提供共识和出块服务。而中继链的见证节点在某一时刻是分成若干组为接入parachain 做共识和出块服务的。了解了这个基本逻辑。我们就可以看出,在某一时刻,波卡就变成一条中继链和连接在它上面的若干parachain的拓扑,正如链化未来的架构示意图。
二者唯一不同是主链(中继链)的组成。Ultrain的设计是由一组矿工来维持主链的运行,而波卡是由所有见证节点共同运行中继链的逻辑,以实现跨链交易以及其他管理逻辑。在协议展开的章节,我们会重点分析这个不同点。
有人可能看出来了,上面并没有提到平行链转接桥,那是因为在Ultrin设计的框架里面,这个桥也是作为一条侧链存在,下面也会具体介绍。
链协议详解
这一章节,我们会就角色和功能的类别,详细展开,来阐述一下,为什么它们具有相似性,可以类比,进而来展示Ultrain的设计和波卡框架上的相同和不同点。
1. 平行链和侧链
平行链就是由独立状态转移逻辑的链,它支撑起区块链的业务逻辑,实现某种功能。而侧链也是如此,都是运行业务逻辑的区块链。他们有很多相同点
都与WebAssembly (Wasm)运行时紧密集成
都允许用户定制共识协议
都可以部署合约来完成业务逻辑
都可以无缝接入链交换系统,实现跨链交易
substrate 是波卡提供的一个快速建链的框架,然而最大的亮点并不是一直宣称的快速,因为快速建链的方案有很多,用户可以基于开源的以太坊,eos,hyperledger等项目,快速建立区块链,这并不是什么难事。他们的难度跟使用substrate 是差不多的。substrate 模块可插拔是他一大亮点,官方介绍用户可以快速替换默认模块,比如共识模块。Ultrain也正在加快模块隔离,完成后也是将支持模块可替换的快速建链。之所以优先级比较低,我们认为这个需求没有想象那么大。但是不可否认的是,基于substrate 可定制性更高。
2. 中继链与主链
这一节,将重点解释前面留的几个疑问
为什么波卡框架中的三个角色功能,都可以在Ultrain链的矿工中实现
中继链跟主链的异同
2.1 收集人 vs 交易节点
收集人是运行在parachain全节点,他们可以打包并执行交易,最终提供一个未密封的区块给验证人集合,同时提供了零知识证明的证据给见证节点。交易节点同样具有这样的功能,它收集上链的交易,并将交易广播到链上,唯一不同的是,它不负责打包成块,打包出块的工作是矿工完成的。
2.2 见证节点,钓鱼人 vs 矿工
共享安全是波卡重点推介的一个功能,简单说就是relaychain 的超级节点(见证节点)来帮助所有parachain验证交易并打包成块。
2.3 共识节点
relaychain 的见证节点并不是全部服务于某条parachain的,而是随机的集合服务于某条parachain。为了防止作恶,波卡设置了钓鱼人,它可以监督网路,发现作恶节点,并提交证据可以获得奖励。在Ultrain的设计中,矿工提供了验证交易的服务并打包出块,同时他可以发现网络中的作恶行为并举报。所以矿工从协议层面充当了见证节点和钓鱼人。
2.4 钓鱼节点
我们再说钓鱼人的存在,其实这角色挺尴尬的。从白皮书上看他要求跟parachain的全节点相似,抵押很低,并且对他的在线时间没有要求。随着区块链的运行,全节点数据也将越来越冗余,资源消耗也变大,所以钓鱼人节点硬件要求并不低,而给他的奖励就成了一个问题。首先钓鱼人有没有保底奖励,从白皮书上看应该是没有,那么它的收入完全来自发现作恶。由于作恶的惩罚很重,所以见证节点作恶的可能性并不大。那就意味着钓鱼节点运行了一个硬件却不一定能获得奖励。而波卡的安全完全寄托在不一定上线,收益不稳定的钓鱼人身上,似乎不够完备。所以Ultrain在设计的时候由矿工来监督链的安全运行。
3. 共识,安全,治理与经济
3.1 链安全
parachain 的共识是有见证节点的一个子集来完成的,而relaychain 的业务逻辑和共识是由全部的超级节点(见证节点)完成,一定程度上保证了核心模块relaychain的安全。但是为了保证共识效率,当前的见证节点规模在100个左右,而parachain 的共识节点就要更少,从资料上看,parachain 的规模初期4-5条,见证节点随机分配为不同parachain提供验证和共识出块的服务,那就意味着parachain的共识节点20个左右,这个规模跟EOS的DPOS很难讲有本质区别。
3.2 共识设计
Ultrain和波卡最大的不同点来自共识协议,Ultrain采用R-PoS 同步BFT算法,即链上出的块都是确定,不可回滚的。而波卡采用的是混合共识,即出块和敲定分离,是异步BFT算法。围绕共识的一系列设计也就有所不同,关于这块,后续将有针对性的文章详细阐述。
3.3 投票治理
投票治理Ultrain跟波卡也是不同的:
波卡限制了验证人的数量,通过NPOS的策略,引导持币人尽量平均的选出见证者,同时见证者会均匀获得抵押币的支持,而避免过度代表。
Ultrain的矿工是由抵押了足够多币的账号组成,Ultrain关于链的治理,只控制总的抵押量占可流通货币的比例来保证系统安全。
3.4 经济体系
简单说,波卡是通胀货币体系,白皮书里面描述每年通胀10% 到 100%。Ultrain是通缩货币体系,随着链上经济活动频繁,币值会增加。这两个经济体系各有优缺点。不能简单的说哪个更好,只有适合与不适合。对于通胀和通缩,每个人也有自己的认知,比如,我们是为什么会来到区块链世界?治理和经济也是很大的话题,值得独立的文章来详细讨论。
进度
上面几节已经详细论述了Ultrain与波卡在多链架构上有总体是一致的,多链实现框架也非常相似。任何项目都是迭代开发,开发的进度安排依赖团队对功能优先级的排序。显然Ultrain和波卡有不同的认识。
1. Ultrain
Ultrain致力于构建可编程的商业社会,目标是服务更多商家包括传统行业以及区块链新兴创业者,低成本无障碍的实现他们的区块链服务,所以将链的可靠运行,以及多链框架带来的低成本扩容排在最重要的位置,并优先实现,主网已于2019年4月15日上线。至于合约跨链调用,可定制的快速建链等功能,我们认识是重要但不紧急,将在后续的开发中迭代进行。
1.1 当前已经上线的功能包括:
基于R-PoS的高效稳定的共识
创新的区块链服务模式
区分了区块链应用开发和普通用户的角色
简化了区块链应用开发者获取链资源部署DAPP的流程和难度
普通用户0障碍使用DAPP,方便区块链应用开发者推广应用
侧链便利的注册模式
链间矿工动态随机调度以保证每条链的安全,防止恶意节点集中到某条链实施攻击,所有链可以共享全局安全
高效的节点链间迁移方案,可以帮助节点在不同链间快速切换
链上资产的跨链转移
目前已经有有货、优速、电魂等传统企业在使用Ultrain提供的信任计算服务。
1.2 正在开发中的功能:
跨链的合约调用
快速可定制的建立区块链
根据实际业务需求逐步迭代开发实现。
2.波卡链
2.1 阶段完成的功能
substrate,快速可定制的区块链构建框架
2.2 正在开发的功能
已有版本发布,并仍在继续开发的功能
Cumulus框架 方便基于substrate 构建的区块链一键接入relaychain,成为parachain
relaychain 的核心逻辑,包括但不限于共享安全,混合共识,见证节点随机服务不同parachain等。