超级链内核XuperCore核心技术揭秘
背景
区块链行业在持续的快速发展,区块链技术发展初期主要的应用场景是以数字货币和游戏为主。2020年国家发改委把区块链技术纳入了数字新基建发展规划中;2021年在第十三届全国人民代表大会第四次会议上,正式审议通过了“十四五”规划刚要,十四五”规划“刚要将加快数字发展、建设数字中国”作为独立篇章,指出要进一步明确发展云计算、大数据、物联网、区块链、人工智能等七大数字经济重点产业。区块链技术开始从支撑数字货币的底层技术,进入了全面探索赋能产业的新阶段。
不同于数字货币的单一场景,实际产业落地中,不同的应用场景对区块链技术的诉求是多样的,需要可以低成本的灵活扩展订制、多场景适用的区块链技术。
面向不同应用场景的链,实现差异也会比较大,比如:公链场景更加侧重于去中心化,联盟场景通常更侧重于高性能,这些差异导致面向不同场景的区块链实现,在交易的核心流程、共识机制等上面会存在差异,一套实现很难适用各种场景。目前业界主流的区块链实现,比如比特币、以太坊、fabric等,也基本上都有明确的适用场景定位。
从数字货币单一场景,到全面赋能产业,在多行业、多业务场景落地,需要更适合产业落地的区块链底链技术,需要区块链技术具备更高的适用性、更好的可扩展性、更强的性能和更低的应用门槛。
开放原子超级链XuperCore的诞生
在2021年4月,百度超级链XuperChain在北京、深圳、上海三城举办了技术沙龙活动,在技术沙龙上重磅发布了全新设计实现的开放原子超级链内核框架XuperCore。
超级链工程师给参加沙龙活动的开发者现场演示了如何基于超级链内核框架XuperCore,十分钟快速构建全新区块链实现,并深入介绍了开放原子超级链内核的设计理念。展现了“技术的力量”,让原本需要数月甚至数年的时间才能完成的研发工作,在十分钟内完成。标志着国内首个,并且具备完全自主知识产权的独立区块链内核框架XuperCore正式诞生。
百度是国内最早一批进行区块链核心技术自主研发的企业,百度超级链XuperChain是国内最早的自主研发、具备完全自主知识产权的区块链开源技术之一,建起了国内最大的区块链开源技术社区。
为了更好的支撑区块链技术全面赋能产业的需要。XuperChain提出了“抽象基础内核共用,切合场景轻量级订制发行版,基于发行版构建区块链网络和SaaS服务”的方案。
从原来XuperChain单一产品,发展到XuperCore、XuperChain、XuperOS多个开源产品,分别来解决不同纬度的问题,构建起广域场景适用的区块链技术。
把XuperChain多年自主研发积累的区块链核心技术,独立了出来,全新设计了独立区块链内核框架XuperCore,极大程度的降低区块链技术的研发成本,促进区块链技术在各行各业低成本落地。
开放原子超级链内核Xupercore作为整个超级链技术体系的基础底座,起到Linux内核在Linux生态中的地位。
XuperCore是什么
超级链链内核XuperCore,定位为广域适用、高可扩展、超高性能、高度易用,并且完全的自由开放的区块链内核框架。
基于自主研发的“动态内核技术”,实现无内核代码侵入的自由扩展内核核心组件和轻量级的扩展订制内核引擎,满足面向各类场景的区块链实现的需要;并且提供了全面的、高性能的标准内核组件和引擎实现。全面降低区块链研发成本,实现非常轻量级的订制自己的区块链实现。
可以用我们常接触的Linux内核来做下类比理解:Linux内核对下以一套统一的方式抽象与集成了cpu、内存、磁盘等不同的硬件设备,对上则为程序员暴露出统一的一套开发接口,使开发者能够以一套统一的抽象去使用这些硬件提供的能力。同时还可以根据不同的场景和喜好,订制多种不同的发行版。Linux内核服务的是程序软件的开发者,XuperCore服务的是区块链开发者;Linux内核是对不同的硬件做抽象,XuperCore是对区块链各核心组件做抽象。同时也可以像Linux有很多不同的发行版一样,XuperCore也具备非常好的可扩展性,让区块链开发者可以根据具体场景的需要,轻量级的订制不同的发行版。
基于超级链内核XuperCore,就可以非常轻量级的结合实际的业务场景需要,订制自己的全新区块链实现。基于XuperCore开发的区块链标准发行版实现XuperChain和XuperOS,在多行业、多场景得到了广泛的落地验证。
XuperCore核心特性
超级链内核XuperCore具备广域适用、高可扩展、超高性能、高度易用四大特性。
01.广域适用
XuperCore通过极致的可扩展性,做到“广域场景适用”的区块链技术。基于XuperCore可以多纬度的自由扩展订制,非常便捷、快速的构建起适用于各类场景的区块链。
整个设计中,最核心的就是区块链内核、区块链核心组件、区块链引擎、区块链发行版实现这四大部分。如上图所示,在这四层中越在上面的抽象程度越高,扩展自由度也就越高;越在下面的实现的越具体,功能也就更加的全面。
让开发者可以根据自己实际场景的需要,非常自由、多纬度的扩展。可选择对部分内核组件做订制;也可以基于标准组件订制自己的区块链引擎;也可以基于标准引擎,轻量级的订制自己的区块链实现。从而满足开发者的各纬度的需要,做到广域场景适用。
02.高可扩展
XuperCore通过“动态内核技术”,做到了区块链内核核心流程和核心组件,都可以没有内核框架代码侵入的自由扩展替换,支持多纬度的自由扩展,让整个内核具备极好的可扩展性。
XuperCore作为超级链技术体系的基础底座,需要内核具备极高的可扩展性。目前主流的区块链开源框架,基本上都有明确的适用场景定位,大多都是面向数字货币类的应用场景,在实际业务场景落地中会遇到适用性的问题,通常需要深入框架做改造,改造成本很高。
XuperCore首创提出了“动态内核”技术。如上图所示,通过对共识、账本、合约等这些内核组件做抽象,制定了区块链内核组件编程规范,这些规范就像主板上的插槽,起到承上启下的作用,让内核各核心组件可以自由的扩展替换,同时让引擎订制变得非常的轻量级。再在内核核心组件编程规范的基础上,设计了多引擎架构,让内核核心处理流程和技术选型也可以无内核代码侵入的自由扩展替换。
03.超高性能
XuperCore在架构上做到高可扩展的同时,还提供了超高性能的内核组件和标准区块链引擎的实现。
比如:通过XuperCore提供的标准组件,就可以实现智能合约的并行预执行、和并行的验证,可以很好的提升智能合约的性能。
XuperCore的智能合约标准组件实现采用的是预执行模型。先预执行、本地组装交易,然后再提交上链。在预执行的过程中,XuperCore自研的XuperModel会为每次合约调用分配一个独立的Cache空间,来隔离不同合约的执行环境。通过这种设计,实现合约全并发的预执行。预执行生成读写集后,本地组装交易后提交到链上,在做交易验证时,XuperModel通过交易的读集构建起独立的沙盒环境,来执行验证写集的正确性,做好并行的验证,从而确保合约性能。
基于XuperCore实现全新的区块链时,可以选用XuperCore提供的标准组件,当然也可以自定义更优的实现。
04.高度易用
XuperCore提供了非常完备的内核标准组件实现和易用性工具,可以做到一键生成完整区块链实现,对开发者屏蔽区块链技术的核心复杂度,让区块链开发变成和写普通的业务API一样的便捷。
智能合约方向,XuperCore提供了自研的xvm虚拟机、兼容以太坊的EVM虚拟机和基于docker实现的native虚拟机,实现了c++、go、java、solidity等主流语言全覆盖;共识机制方面,XuperCore提供了适合测试或者私链场景使用的single共识,有适合公开网络场景的xpos共识,有适合联盟网络场景的xpoa共识,还有经典的pow共识;账本方面,XuperCore提供了基于utxo和自研的XuperModel技术实现的账本组件xledger;另外,密码学、网络等组件也都提供了非常完备的标准组件实现,可以根据具体场景的需要自由选择使用。
基于XuperCore,可以非常方便的订制全新的区块链实现。XuperCore提供了区块链代码自动生成工具、编译工具、测试网络部署工具,非常简单就可以开发一条全新的区块链实现。
XuperCore架构设计
整个超级链内核XuperCore的架构设计如图,总共分为四层,分别是:
内核引擎层:定义区块链内核核心流程,采用了读写分离的设计来降低复杂度。采用了多引擎架构,让区块链内核核心流程也可以根据具体场景需要,无内核框架代码侵入的扩展定制。
内核组件编程规范层:这部分对内核核心组件做了抽象,承上启下,对上面的内核引擎提供标准组件功能接口,对下面的组件实现制定开发规范约束。只要实现了这些规范的组件,就可以无缝接入到内核使用。从而让内核组件可以自由扩展订制。
内核核心组件实现层:这部分就是对内核组件编程规范的具体实现,XuperCore提供了非常完备的标准组件的实现,供开发者选用。同时开发者也可以低成本的按照规范实现适合自己场景的组件,无缝接入到内核中。
基础组件层:这部分就是一些完全业务无关的基础公共组件的实现。
整体上,通过核心的”动态内核技术”,让整个框架具备了极好的可扩展性,做到广域场景适用;同时,提供了非常完备的标准组件实现,很好降低区块链技术的研发成本。
基于XuperCore快速建链说明
基于开放原子超级链内核XuperCore,只需要四步就可以非常简单的订制开发一条全新的区块链实现,并且搭建起一个多节点的测试网络。通过XuperCore提供的工具,可以一键自动生成全新区块链实现代码仓库,然后在这个仓库上做一些个性化的订制。订制完成后,XuperCore也提供了测试网络部署的工具,可以非常简单的搭建起一个测试网络,对这条新链做测试验证。相比从头研发一条区块链链,或者基于以太坊或者fabric去改造,成本要低了很多。
01.操作说明
第一步:准备下基础环境,克隆XuperCore代码仓库。
// 克隆代码仓库
git clone git@github.com:xuperchain/xupercore.git
第二步:通过XuperCore提供的一键生成全新区块链实现的工具,指定新链名等参数,自动生成全新区块链实现。
// 工具说明
sh ./tools/autogen_chain.sh
autogen_chain.sh is a tool for automatic generation of new chain framework.
Usage:
sh ./tools/autogen_chain.sh <command> [arguments]
The commands are:
-n chain name
-r git repositories
-o output dir
// 使用示例
sh ./tools/autogen_chain.sh -n chunhui -r chunhui01 -o /home/rd/blockchain
第三步:在新生成的仓库中做个性化的订制开发,XuperCore支持无内核框架代码侵入的订制扩展内核核心流程、内核核心组件,支持自定义API和命令行工具。订制完成后通过make工具编译。
// 编译新链
make all
第四步:通过XuperCore提供的一键部署区块链网络的工具,一键部署一条多节点的测试网络,对新链功能做验证测试。
// 部署测试网络
sh ./tools/deploy_testnet.sh
// 逐节点,分别启动每个节点(请确保使用到的端口未被占用)
sh ./control.sh start
如此,就可以构建一条满足业务个性化场景需要的全新区块链实现,对开发者屏蔽区块链技术的核心复杂度,极大的降低区块链研发难度和成本。
xupercore的代码仓库是:
https://github.com/xuperchain/xupercore
02.扩展说明
通过超级链内核XuperCore实现的“动态内核技术”,让整个框架可以多纬度自由扩展:
- 可以基于标准的区块链发行版,快速的部署搭建起自己的区块链网络;
- 可以基于内核提供的标准区块链引擎,轻量级的订制满足自己场景需要的区块链发行版;
- 可以基于内核组件编程规范,结合自己应用场景的需要,订制区块链引擎,定义不同的内核核心流程和做不同技术选型;
- 可以跟进自己的实际场景,对内核组件做订制,按照内核组件编程规范实现的组件,可以无缝接入内核中使用;
XuperCore的内核引擎和内核核心组件都采用的是注册制加载,导入包时在对应包的初始化方法中自动完成该组件注册。从而实现无内核框架代码侵入的自由扩展内核引擎和内核核心组件,内核引擎和内核核心组件的实现代码也可以自由管理。只要是按XuperCore定义的规范实现的组件,都可以无缝的接入到内核XuperCore中使用,非常的方便自由。
可参考示例实现: https://github.com/xuperchain/xuperos