版本号 0.3 2019.1.21
超块链是一种全新的区块链技术,以高性能和高度数据兼容为设计目标,主要解决块效率低下、算力耗费严重[1][2]和设计以交易导向为主而引发的应用局限性。区块链作为下一代互联网基础设施的候选技术,仍需要解决诸多不足,超块链以此为目标,提出分布式系统下的CAP分时一致性方法,并以此理论基础设计出全新的Buddy共识算法,为区块链技术提供了三种全新的特性:可并行出块,可处理离散数据,链上可承载虚拟链。其他次要新特性包括如内建的跨链操作、自定义共识等可被应用层直接调用,这些都极大的拓宽了区块链的适用范围。超块链同样支持交易事务、智能合约等现有区块链的全部缺省特性,而且更加高效。
目 录
1 介绍
1.1 超块链是什么?
1.2 背景和愿景
2 概念和原理
2.1区块链的定义
2.2超块链设计目标
2.3 基本原理
2.3.1 数据结构
2.3.2 共识算法
2.4 技术特点和优势比较
3 技术方案
3.1 整体架构
3.2 对等层
3.3 数据层
3.4 封装与处理层
3.5 共识层
3.6 应用层
4 运行与部署
4.1 初始化和节点建立
4.2 共识与防作弊
4.3 提交与查询
5 总结
6 术语表
7 附录
7.1 目标应用场景
7.2 应用案例:确权与鉴权
7.3 应用案例:数字加密货币与账本
8 参考文献
超块链是一种全新的区块链,具备以下技术特征:
- 并行链结构
- 支持并行出块的共识算法
- 支持应用层对共识自定义扩展,支持多共识并存
- 完全开放的,可自定义的链上数据结构
- 无基础货币,支持多币并存;无统一帐本,支持多账本
- 支持链上虚拟链,内建跨链操作机制
- 完全去中心化(有别于准去中心化、伪去中心化)
超块链从设计伊始就采用高度并行的架构和算法,充分利用分布式系统的节点能力,实现更高的出块效率。超块链为链上数据和共识都提供了更大的灵活性,链上数据不局限于交易导向,能够更好的支持离散数据(非一致数据、大数据),且更加开放。超块链在实现以上新特性的同时,仍然完整支持现有区块链的全部技术特征(如微通道、智能合约等)。超块链适用于公有链、联盟链和私有链,包括金融场景和非金融场景等所有场合。
区块链技术由比特币的成功而获得验证,被誉为有潜力成为下一代互联网基础设施的关键技术[3]。但事实上,比特币作为一个实验性的数字货币,并没有充分思考区块链技术在更广泛的范围内的应用需求[4],甚至其自身在经过数年的运转后,也暴露出性能和容量方面的种种局限性[2]。无论如何,比特币在区块链技术方面的贡献是值得尊敬的,而且也确实在稳定性和可用性方面为区块链技术提供了无可辩驳的实证。不过一旦我们将目光放到互联网基础设施的高度,应用场景放到全行业的广度,我们会发觉现有的区块链技术仍然非常原始,现有的区块链技术是以数字货币为应用场景的,以交易为导向的,是完全特例化的设计。它并不能很好的承载金融以外的业务和数据,也无法提供令人满意的性能。
基于美好的愿景和以上的问题,业内对区块链进行了积极的改进,为区块链增加了不少令人激动的新特性,如基于图灵完备的智能合约;以及一些修补,如微通道等。共识算法也在POW以外提出了POS、DPOS、xBFT、POET等不同方案。这些方案或多或少解决了部分现有问题[5][6],但普遍存在着以数字/加密货币或金融交易为导向的设计局限。一些共识算法的改进,严重破坏了区块链的去中心化特性,从而退化为一个中心化/多中心化的容错系统。还有一些技术改进试图从区块链以外的扩展来规避区块链的现有不足,如彩色币和闪电网络技术,这些非常巧妙和聪颖的方法并没有解决区块链本身的固有问题。如果承载新的金融业务都存在困难,区块链何以能成为下一代互联网的基础支撑?
超块链的愿景和其他行业伙伴是相同的,但我们更向前推进了一步,我们针对区块链本身的问题作了大幅改进,从互联网业务的角度看,我们认为区块链不应再局限于交易导向的数字/加密货币和金融业务场景,应当支持更多类型的数据,应当具备更并行的结构和算法来弥补性能短板,应当是一个真正去中心化的架构,从而承载互联网的未来。
超块链将区块链技术从数字加密货币解耦,无需绑定分布式账本,提出了对区块链全新的定义:
区块链是一种处理和存储共识的分布式数据固化技术。其充要条件是:
- 去中心化的分布式系统
- 对等的处理和存储共识
- 前向依赖的数据结构
解释:处理和存储共识,是区块链与既往计算技术最大不同,也是最核心特征。去中心化杜绝了特权节点对系统和数据进行倾向性干预,节点地位对等是区块链系统的重要准则。“共识”是基于特定规则和算法的公共结果(区别于传统分布式系统中的带有预设、倾向或强制性的“一致”),不受特定节点的强制约束。前向依赖是通过特定数据结构,以数学和密码学手段保证数据满足可回溯和完整性特征。结合以上三大特性,保证了“共识”可以被产生、固化并不可撤销的存储。
不能同时满足以上三大特征的区块链技术,其特性是不完整的。如:缺少完全去中心化特性,则退化为传统的分布式存储系统;缺少前向依赖的数据结构,则是传统的P2P对等网络;缺少共识机制,则退化为一个容错分布式系统。
超块链将成为一代高性能、对上层应用友好、开放、敏捷和可定制的区块链技术,以期足以在更广泛领域内承载各类互联网应用。在基本架构的层面上解决现有区块链性能差、局限于交易导向、数据类型受限、去中心化不佳等致命问题。
超块链的具体技术目标是:
- 数据结构及算法充分并行化以提高效能
- 节点对等,完全去中心化
- 对离散(非一致性、非结构化)数据有良好的支持
- 不依赖特定的基础币,不依赖特定的账本
- 内建对智能合约、跨链操作等特性的支持
- 开放架构,支持应用层自定义共识和自定义链上数据
- 支持链上虚拟化
超块链以更高并行性为设计目标,而现有区块链在数据结构上是完全串行的,这一硬约束是区块链的关键瓶颈,超块链首先在链结构上作了大幅的改进,提出全新的并行的结构(详见数据结构一节),这一改变可以充分利用分布式网络天然的并行性优势,大幅提高出块效率。
并行的数据结构并不能直接带来效率,现有共识算法普遍基于交易账本,并不支持并行。超块链设计了全新的具有并行特性的共识算法,该算法在Paxos算法理论(一种分布式系统容错算法)的基础上做了大幅改进(详见共识算法一节),采用对等互证的原理,将局部共识有条件扩展为全局共识。
并行链结构存在着一定的回溯不确定问题(回溯指针不唯一),我们通过链结构中的周期性“超块(Hyper Block)”来解决回溯不确定性问题,保证链结构和传统串行链具有同样严谨的一致性。
超块链对所支持的数据结构没有硬性限制,是一种高度开放的区块链技术。
超块链采用与现有区块链相同的方式来支持智能合约等应用特性。
超块链满足区块链技术的去中心化、对等共识、前向依赖三大特征。
超块链完全不同于现有交易导向的串行区块链,而是一个适用于更多应用场景的并行链。
超块链的链块分为局部块和超块两种,超块链的数据块结构与传统区块链的链结构相仿,无论是局部块或是超块都是一种前向依赖的链式结构,拓扑结构上均为由块头和块体构成。
局部块的数据结构的块体\(Body\)由数据负载\(Payloads\)和相应脚本\(Script\)构成,其中\(Payloads\)包含了来自其他节点的各类数据。
块头由块标识\(LID\) ,前序块的哈希值\(Hash_{LID-1}\),超块哈希值\(HHash\),数据负载哈希值的梅克树的树根值\(root\) ,数据块的哈希值\(Hash_{self}\),数据块的时间戳\(Time\)。\(Body=f_{Body}(data_1,…,data_N,Script_1,…,Script_N)\) 其中 \( data_1,…,data_N \)为收集的各类数据,\(Script_1,…,Script_N\)为各数据的相应的脚本;
\(Header=f_{Header}(LID,Hash_{LID-1},HHash,root,Hash_{self},Time)\)
其中,\( root=f_{MerkleTree}(Hash_{(data_1,Script_1)},..,Hash_{(data_1,Script_N)}) \)
\( Hash_{self}=f_{hash}(LID,Hash_{LID-1},HHash,root,Body,Time) \)
\(Hash_{data_x}=f_{hash}(data_x,Script_x), x=1,…,N \)
整个局部块的整体组装过程如下算法所示:
图一 局部块数据结构
超块是超块链为了解决并行性和回溯一致性的矛盾而设置的周期性数据结构,这个结构也是一个前向依赖的链式结构,同时记录了局部块的相关信息。
图二 超块数据结构
在周期性的超块之间,局部块并行出块,与超块一起形成以下的结构。
超块的数据结构的块体\(Body\)由数据负载\(Payloads\)和相应脚本\(Script\)构成,其中\(Payloads\)包含了来自其各子链数据构成的标识\(Hash_{local}\)。块头由块标识\(HID\) ,前序块的哈希值\(Hash_{HID-1}\),数据负载哈希值的梅克树的树根值\(root\) ,数据块的哈希值\(Hash_{self}\),数据块的时间戳\(Time\)。
\(Body=f_{Body}(data_1,…,data_N,Script_1,…,Script_N)\)
其中 \(data_1,…,data_N\)为收集的各子链数据的哈希值,\(Script_1,…,Script_N\)为各数据的相应的脚本;
\(Header=f_{Header}(HID,Hash_{HID-1},root,Hash_{self},Time) \)
其中,\(root=f_{MerkleTree}(Hash(data_1,Script_1),..,Hash_(data_1,Script_N))\)
\(Hash_{self}=f_{hash}(HID,Hash_{HID-1},root,Body,Time)\)
\(Hash_{data_x}=f_{hash}(data_x,Script_x),x=1,…,N\)
整个超块的整体组装过程如下算法所示:
图三 超块链并行结构示意图
构成超块链并行结构的局部块和超块,各自依据前序哈希值进行锚定,并且不同子链各自可以采用\(Layer2 \)共识进行进一步的加强难度累积,从而实现整个数据结构的数据一致性的高可靠。
2.3.2 共识算法
超块链的共识算法主要解决在并行条件下的数据共识问题,同时还要支持非一致性数据,因此除POW以外的现有区块链共识算法(基于特定一致性数据的共识)并不适用,因此我们提出了一种基于对等互证原理的全新算法,这一算法借鉴了Paxos算法的实施思想,但作了大幅改变,避免了该算法可能产生的隐式中心化,实现了超块链完全去中心化的并行共识算法——Buddy共识算法。
在Paxos算法中,存在Proposer、Acceptor、Client、Learner这几种角色[7],该算法是为了实现分布式一致性和容错而设计,节点关系并不是对等场景。在超块链网络的完全对等场景中,我们将角色合并处理为Proposer、Acceptor两个,即每个Proposer同时也是Client,每个Acceptor兼具Learner。这一合并的基本立足点为:每一个节点既是Server也是Client,每个Client获得服务的条件是为对等方提供Server服务。我们将这种对等关系称为Buddy。
利用状态机理论形式化描述如下图所示,如上文所述,网络参与节点存在着“建议者”和“Buddy伙伴”两个状态,其中如前文所述的Acceptor也即为“Buddy伙伴”,有4种不同的响应。任何网络参与节点在“建议者”状态下,上链不成功则依然是“建议者”,发出邀约获得通过则转变为“Buddy伙伴”状态,在此状态下通过其他邀约则继续保持“Buddy伙伴”状态,发生通讯异常则自动退回“建议者”状态。
图四 Buddy共识算法节点状态机图
Buddy共识算法将共识分为两个阶段:局部共识和全局共识。局部共识由有数据上链需求的一对节点为起始,通过广播各自的共识协议而发现对方并提出共识请求,此时节点角色为Proposer,当收到任意Acceptor的回复后,Proposer会依据预定义的共识脚本来决定选择哪一个Acceptor作为Buddy,并按照该共识脚本组装共识数据。这一共识数据被视作初始局部链由两个节点共同拥有。接下来,这两个节点作为新的Proposer,重复前一过程,使局部链以2n的速度增长,直至共识脚本所约定的长度。该过程在系统中是并行进行的,因此系统中将同时存在多条局部链。
全局共识的执行是周期性的,全局共识过程将并行存在的多条局部链的相关信息固化到超块中,形成超块链特有的并行链结构。全局共识由局部链的代表节点来执行,该代表节点由局部链的参与节点按照局部链的共识脚本来产生,因此会有多种产生方法,默认由局部链的尾节点执行。代表节点采用与局部链类似的方式,按照超块定义的共识脚本,计算超块,并在节点间达成共识,全局共识过程至此完成,链上数据达成一致性的状态。新一轮的共识同时开始,新一轮的共识将以最新超块的数字指纹作为共识依据。
需要强调的是,全局共识和局部共识也是并行进行的,全局共识除了具有周期性和序列性的特点,其本身并不阻塞局部共识的进行。
超块链在基本架构设计上摒弃了串行化数据结构的硬性限制,使用并行方法处理区块链的共识问题,以此解决了现有区块链技术的几大瓶颈问题,包括串行化导致的性能问题、共识算法的扩展受限于链上数据问题、数据类型有限且难于扩展、算力消耗问题、伪去中心化问题等。
超块链没有采用交易导向的设计,而是面向更广泛的互联网行业数据处理设计了分层处理机制,链块层的共识和应用层行为互不阻塞。超块链不需要发行基础币,不依赖特定的账本,不解释链块用户区中的数据,链块用户区的数据交由应用层处理,从而对上层提供了更大的数据灵活性,并且允许应用层自行定义基于用户数据的共识脚本。这样一来,链上数据不再局限于特定的账本结构和基础币交易记录,链上数据的地位也更加平等,允许多币与多账本共存。当上层应用使用超块链技术发币或产生账本的时候,仍然可以保持与其它区块链数字币或账本相当的可靠性。当采用恰当的应用层共识脚本时,甚至可以在超块链上虚拟运行另外一种传统的区块链。
超块链是完全去中心化的,其去中心化特性是由共识算法决定的。相比而言,POW是一种完美的去中心化手段,但其所付出的算力成本是高昂的;POS类算法解决了算力问题,但实际上赋予了部分节点过多的权力,对等性受到一定的影响[8];BFT类算法简洁高效,但严重破坏了区块链的去中心化特性,沦为多中心化甚至传统中心化系统。BFT类算法还有另外一个问题就是其设计是用来解决“容错”场景下“一致性”的问题,这和区块链中的“共识”一词的实际含义是有很大区别的。我们认为,预设立场的“强一致性”是中心化的容错概念,而不是去中心化场景下的共识概念,与“去中心化”和“对等”的概念是背道而驰的。超块链所设计的Buddy算法思想与Paxos算法类似,但我们作了大幅改进以避免出现Paxos中预设立场的“强一致性”,保证运算节点的完全对等性。
超块链是遵循并行原则设计的区块链,同时又利用不同分层处理共识来实现了共识算法的可扩展性,因此可以在局部链上同时运行多种不同的共识,支持多种数字货币和账本,这一特性为跨链操作提供了天然的便利性,跨链操作本身也可以被序列化和固化下来,提供额外的信用证明。超块链内置了跨链操作引擎供应用层直接调用,并且可以随时扩展这些操作以适应更多的区块链互操作。
3 技术方案
3.2 对等层
使用P2P技术构建的去中心化的对等网络,保障节点在网络层的对等操作。
基于对等层之上建立的虚拟链空间,链空间由全体节点共同维护。节点不必维护全部链数据,只需保留对自身业务有意义的部分数据。通过全网所有节点来实现链数据的冗余存储。
该层主要提供节点间互操作支持、本地数据处理和封装、认证信息处理等功能。
超块链出块操作的驱动层,任意节点有数据上链请求时,通过该层参与局部共识和全局共识,保证节点在共识中独立对等的处理数据,且能实现结果的一致性。
包括链上扩展、API接口、节点信息及远程管理等
任意节点运行超块链节点软件后,通过广播发现或连接Bootstrap Server尝试连接其他超块链节点,并在收到的响应包中查询符合创始块要素的节点,进一步向这些节点请求链空间信息,通过对比不同节点返回的链空间信息来确定合法的链数据和对等节点。当节点通过以上步骤初步完成本地链空间缓存的初始化后,节点初始化即完成,节点可随时开始参与超块链的共识出块。
超块链参与共识是基于自身数据上链的需求,该行为可以是节点自身需求,也可以是某种代理行为,超块链的链块层共识过程并不解释用户数据,用户数据作为Payload封装于待共识的数据结构中,该数据结构作为本地数据块,还包含共识脚本和公钥等认证信息,这一本地数据块需要获得至少另外一个(群)对等节点的认可,方能加入局部链的共识过程中,该认可过程会在对等检点之间核查共识脚本和认证信息,共识脚本执行成功后对等节点即成为Buddy,开始参与局部链的共识过程。局部链每次增长都执行已达成局部共识的共识脚本,该脚本会按照定义的规则核查用户数据,以保证数据满足共识要求,这一核查是每节点独立实施的,不受任何其他节点左右,只有超过N/2+1的节点(N为参与局部链共识的节点总数)同意局部共识结果,局部共识方可被接受。局部链按照这样的规则以2n的节奏扩展共识规模,以较高的效率完成对恶意节点和无效数据的甄别,保证局部链的可靠性。共识脚本中包含超块链缺省脚本和用户自定义脚本,因此用户可以非常灵活的选择在共识过程中如何对数据合法性进行验证,包括POW/POS/BFT等附加验证信息,在计算难度或授权方面进一步加强数据合法性的保证。在完全不附加其他验证信息的缺省条件下,超块链仍可以达到“51%恶意攻击”防御效能。
用户数据通过参与超块链共识过程而提交上链,该数据可以为账本、交易记录、权证指纹等任何数据,这些数据在共识过程中被共识脚本所核查并固化,由参与节点分布式存储,在全网内形成虚拟的链空间,承载全部链数据。该链数据可以由任意节点请求和查询,也可以通过超块链浏览器检索和查询。
超块链在技术架构上作了全新的设计,为区块链提供了并行能力和灵活的数据类型支持,解决了区块链技术的性能瓶颈和交易导向的设计局限。超块链在完全满足去中心化、对等和数据结构前向依赖的三种基本特性之外,提供了更高的性能和更开放的架构,链上数据和共识算法均支持用户自定义和扩展,更有令人兴奋的新特性如默认内置了跨链操作和链虚拟化等功能。这些特性使超块链以更高的性能、更强的可配置性支持更广泛的应用场景,而且完全兼容现有区块链(如数字货币和统一账本)应用。
超块链对区块链技术做了较新的拓展性尝试,尚存一些不足有待改进。超块链共识算法为了降低算力消耗和保持良好的去中心化特性,付出了较多的通讯成本,这在网络条件不佳的时候会降低系统性能。超块链的数据开放性使垃圾信息更容易绕过审查而占据宝贵的链存储空间。我们认为,随着网络连接质量和存储技术的进一步发展,这些问题不是致命的,并且我们也将在后续的开发中对这些问题进行持续的改进。
权利主张和许可
- 数字版权确权
- 自助式权属管理
- 知识产权预固化,存在性证明
物联网设备、IoT应用、M2M网络
- 设备间资源交换
- 设备流程自动追踪
- 自组织服务
- 去中心化溯源
企业系统
- 可信数据源
- 跨部门业务整合
- 配置管理
- 自动化签批
金融
- 数字货币跨链交易
- 法币跨境交易和结算
- 去中心化自助组织 (DAO)
- 私人有价证券,对等金融
[1] . Kyle Croman. On Scaling Decentralized Blo ckchains. J. Clark e t al. (Eds.): FC 2016 Workshops, LNCS 9604, pp. 106–125, 2016.
[2] . TradeBlock. Bitcoin network capacity analysis. https://tradeblock.com/blog/bitcoin-network-capacity-analysis-part-1-macro-block-trends
[3] . European Union, Futurium, Next Generation Internet. 2016-11. https://ec.europa.eu/futurium/en/content/bitcoin-blockchain-and-future-internet
[4] . https://www.bitcoin.com/info/bitcoin-what-is-it-and-why-is-it-important
[5] .Sunny King, Scott Nadal(2012), PPCoin: Peer-to-Peer Crypto-Currency with Proof-of-Stake
[6] .Marko Vukolic, IBM Research – Zurich, The Quest for Scalable Blockchain Fabric:Proof-of-Work vs. BFT Replication. iNetSec 2015.
[7] .Lamport, Leslie (2001). Paxos Made Simple ACM SIGACT News (Distributed Computing Column) 32, 4 (Whole Number 121, December 2001) 51-58.
[8] .Andrew Poelstra. “Distributed Consensus from Proof of Stake is Impossible”, https://download.wpsoftware.net/bitcoin/pos.pdf
Paralism官方网站请访问:www.paralism.com
《超块链技术白皮书》有21个想法
评论已关闭。