一、运行结构
联盟链是一个支持平行链和侧链的区块链网络。在联盟链网络中,有一条特殊的链——Zero 链。Zero 链管理联盟链 网络的其它平行链,并提供跨链服务。其中基于 Zero 链诞生的超级燃料 联盟链是整个联盟链 网络运行消耗的燃料。Zero 链有以下功能:
(1)创建独立的一条链;
(2)支持与各个链的数据交换;
(3)管理整个联盟链网络的运行参数。
联盟链是一个能包容一切区块链技术的区块链网络, 其平行链可以支持联盟链 的解决方案,也同时支持其它开源区块链网络技术方案。
二、共识机制
(1)可插拔共识机制
在当前的技术背景下,没有哪一种共识机制是完美无缺的,每一种共识机制都有其优点和缺点,不同的应用场景可能需要不同共识机制。为了应对不同的应用需求,联盟链设计了一套可插拔的共识机制,主要体现在两点:
1.联盟链不同的平行链允许采用不同的共识机制,以此来满足不同的共识应用需求,用户可通过 API 创建自己的区块链, 并指定初始的共识机制。
2.联盟链还支持在任意时刻通过投票表决机制实现共识的升级,从而实现共识机制的热升级。
联盟链的共识机制包括但不限于 POW、POS、PBFT、中心化共识(Raft)等。
(2)DPOS 共识算法创新
基于POS 基础上衍生出了很多改进算法,DPOS 就是其中一种。DPOS算法是用户通过投票选出代表进行区块的生产。
联盟链 在已有的 DOPS 算法基础上自主创新研发了一套DPOS 共识,我们称之为 CDPOS,依据这种算法,全网持有通证的人都可以给候选人投票。
CDPOS 的参数包括每轮的 proposer 个数、出块间隔、节点每轮出块个数等,在创建平行链的时候可以指定,也可以通过提案机制升级。通过GPS 和原子钟保证时钟同步。
(3)自定义共识机制
用户可通过智能合约和共识机制的编程接口,编写自己的共识, 并以智能合约的形式发布到联盟链中 。联盟链在启动用户创建的这条链的时候,会注入自定义共识,成为该链的共识机制。
三、主节点
主节点是一种分布式计算技术,保证每个节点的存储和计算是可扩展的。从而为区块链网络提供源源不断的存储和计算支持。
(1)存储支持
主节点会存储所有的历史事务的完整信息,如何支撑 PB 级别的容量非常具有挑战。
(2)计算支持
在非POW 的共识机制下,主节点的主要计算量为交易上链和合约执行。很多区块链软件对交易的执行以及合约的执行都是串行执行的,优化到极致也只能使用单核,对硬件的利用率很低。主节点采用多核并行计算与分布式计算相结合的方式以提升计算效率。
四、智能合约
(1)UTXO base 的智能合约模型
我们认为UTXO(Unspent Transaction Output)相对于Account余额模型, 并发性能更好, 对热门账户的性能也更优秀。
联盟链底层是基于UTXO 模型,因此任何针对比特币系统的优化都适用于联盟链。
联盟链在 UTXO 的基础上做了智能合约的扩展,在扩展区可加载各种不同的合约虚拟机,每个合约机需要实现运行合约和回滚合约两个接口。回滚机制是为了应付分叉设计的,用户可以选择以下优化去实现:
1)自定义回滚逻辑;
2)利用区块链数操作日志,生成反向回滚日志,自动生成回滚逻辑;
3)引入MPT,分叉无需回滚支持。
(2)智能合约兼容
1)联盟链内嵌合约机制
内嵌合约机制,规定智能合约编写的接口,可直接用编程语言
(Go,C ,Java 等)编写智能合约放到联盟链 里面。当前联盟链 的 Kernel API 和共识机制算法都是用这种方式实现的。
未来会引入智能合约 Store 和对智能合约的安全审计,保证发布的智能合约是安全的,从而让公开节点放心支持。
2)第三方兼容
联盟链直接支持以太坊的Solidity 语言。以太坊的智能合约代码可以在联盟链部署和 执行 。联盟链同时支持 WebAssembly,并通过其支持任意语言。理论上联盟链支持任何虚拟机的运行。
作者:香港国际新经济研究院;来自链得得内容开放平台“得得号”,本文仅代表作者观点,不代表链得得官方立场凡“得得号”文章,原创性和内容的真实性由投稿人保证,如果稿件因抄袭、作假等行为导致的法律后果,由投稿人本人负责得得号平台发布文章,如有侵权、违规及其他不当言论内容,请广大读者监督,一经证实,平台会立即下线。如遇文章内容问题,请发送至邮箱:linggeqi@chaindd.com