一、BitXHub中继链的技术架构
BitXHub中继链的技术架构自下而上分为物理层、基础层、跨链服务层、接口层四个部分 。
第一层是物理层,中继链的设计为了满足不同场景下用户物理环境需求,支持在普通物理机、云主机或者嵌入式设备上稳定运行,兼顾多场景适用性。
第二层是基础层,这一层包含了联盟链本身需要具备的模块,比如网络模块、存储模块、共识模块、虚拟机、隐私安全模块。
- P2P网络是节点之间共识和信息传递的通道,是平台的网络通信基础。目前平台采用Libp2p网络库,支持TCP和QUIC等不同的传输协议,满足不同网络条件下的稳定通信。
- 根据数据类型的不同,平台设计了符合相应类型的存储模式。用于保证数据操作的原子性和持久性,平台选用WAL(Write Ahead Log) 预写日志;针对随机性较强的Key/Value类型的区块链状态数据,平台选用高性能存储引擎LevelDB。
- 虚拟机模块整合了能够完成复杂逻辑验证的Webassembly虚拟机,对跨链交易进行验证。
- 采用可插拔的加密机制,对于业务完整生命周期所涉及的数据、通信传输、物理连接等方面都进行了不同策略的加密,通过多级加密保证平台数据的安全,而且完全支持国密算法。
第三层是跨链服务层,包括应用链管理模块、执行模块、事务管理模块、验证引擎模块和隐私保护模块,各模块互相协作完成中继跨链流程。
- 链管理模块主要负责应用链注册、审核和冻结等操作;
- 执行模块负责跨链交易的检查、处理和验证工作;
- 事务管理模块负责跨链交易在整个系统处理的一致性;
- 验证引擎模块在Webassembly虚拟机之上实现了跨链交易存在性和有效性的验证逻辑;
- 隐私保护模块提供对于跨链数据本身的隐私保护功能。
第四层是接口层,中继链对外提供gRPC和Restful两种接口服务,支持不同场景下用户的使用。同时,为了能够支持异构区块链之间的跨链交易路由和可信验证,BitXHub设计了通用的跨链传输协议IBTP(InterBlockchain Transfer Protocol),允许异构资产、数据及服务进行跨链调用。
二、中继链模块及流程
1. 跨链网关A将跨链交易提交给中继链。
2. 中继链接口层的GRPC和Restful接口接收到该跨链交易,并将其提交给核心接口。
3. 核心接口接收到跨链交易之后,对跨链交易里的某些参数进行校验,并对交易的签名进行验证。核心接口验证完成之后,将跨链交易提交给共识模块。
4. 共识模块将交易提交给交易池,交易池通过网络模块将跨链交易广播给其他节点。
5. 交易池通过定时出块、定时打包、排序的方式,将区块返回给共识模块。
6. 共识模块通过RAFT或其他共识的若干个阶段,将区块进行出块。共识模块采用的是插件机制,这是GO语言的一个特性:通过加载 .so 文件的动态链接库,来加载RAFT或其他共识。
7. 共识模块出完区块之后,如果区块里面包含跨链交易,则将其提交给执行模块。
8. 执行模块的验证规则管理合约获取来源链的验证规则。验证规则是一套代码逻辑,用于验证跨链交易的有效性。
9. 执行模块的跨链处理内置合约,根据验证规则管理合约获取到的验证规则,来验证规则验证跨链交易的有效性,并对跨链交易进行处理。
10. 验证通过之后,由存储模块对区块进行落盘,即对区块进行存储。
11. 跨链交易通过路由模块,同步给跨链网关B和跨链网关C,也就是目的链。
三、概念补充
1. 交易:
交易,本质上就是就是状态改变函数的一个输入(input)。