架构设计
Last updated
Last updated
本链核心架构从上层到底层主要包括:
顶层应用:Solidty 智能合约语言、去中心化应用 DAPP、钱包和中心化应用层
API 接口服务:提供 HTTP、TCP 相关的接口 RPC 框架服务
分布式账本:包括交易、区块、区块校验工具、回执、状态数据、交易池相关信息。
以太坊虚拟机(EVM):智能合约的核心执行层
共识:采用 Libra 的 HotStuff 共识算法
网络服务:点对点节点发现及链接服务,区块链同步服务
底层服务:数据库(leavelDB等)、密码学(椭圆曲线算法等)、基础算法(MPT/布隆/RLP等)
本区块链平台集群下的生命周期模型,其中主要分为八个阶段。
在区块链节点启动或者节点链接数过小或者接受到其他节点链接时,节点需要通过P2P网络机制与其他节点建立链接。P2P 网络的建立涉及到基于Kad通信协议的节点发现机制、TCP 连接建立以及 session 模型建立。
当一个节点启动并与附件节点建立链接之后,会进行区块数据的同步:节点在区块链长度落后全网的时候,会通过全网节点进行同步构建best链。同时区块同步还涉及到主动同步及交易同步。当区块导入成功,成为最长区块链后,会将最新的区块信息在全网进度主动同步,以使保持全网的状态一致;节点收到客户端的交易时,会对最新交易进行相互同步
区块链节点接收来自 DAPP 应用和支付交易的客户端请求。区块链通过防双花等基础校验加入到交易池中TxPool,进行交易排队,等待交易被同步或打包出块。
区块链节点根据共识算法的逻辑打包交易出块,目前 HotSuff 算法根据共识节点数量轮询出块,将交易池中的N笔交易打包进未确定区块。这里的区块并未加入的区块链中,也不包括交易执行完成的哈希信息。未确定区块打包完成,即进行交易执行及共识阶段。
新区块中的每一笔交易都会交给以太坊虚拟机(EVM)进行交易执行,这个过程涉及到合约账号的 EVM 交易执行器的初始化、执行、EVM 堆栈指令运行以及运行结果汇总。EVM 执行过程中会涉及到状态数据的查询及存储、交易回执的产生;在所有交易执行完成后,会对未确定区块设置交易头信息,包括TransactionReceipt、logbloom 、gasUsed 等内容。
本链目前采用 Hotstuff 共识算法,主要分为 Request 阶段、Prepare 阶段、PreCommit 阶段、Commit阶段和 Decide 阶段。共识消息将通过第一步已经建立的P2P网络进行发送。
当待出区块历经打包完成以及共识成功后,就会进入导入流程,导入流程主要时将共识完成的区块落盘,落盘过程中,一方面,将区块中相关的信息 其中包括 Transaction 列表、TransactionReceipt 列表、LogBloom 列表 、账号状态树以及对应的查找索引等。
在一次区块出块成功后,客户端会对交易结果,最新区块信息,交易回执,合约数据等信息的查询。