下图为迅雷
区块链的技术栈,可以直观的看出各模块的分工和协作。
最上层的应用层,是 C端用户直接接触到产品和服务,包括账户客户端、第三方客户端和合约应用。
其中,合约应用是指基于迅雷链开发的 DAPP。应用中使用的合约通过服务层的“合约部署”服务部署到区块链上。DAPP中的合约调用通过服务层的“合约调用”模块进行校验,合法的才会转到链上处理。
中间的服务层作为应用和链之间的桥梁,提供应用层需要的接口和服务。包括安全控制、合约部署、合约请求和数据请求服务。
其中,合约部署的触发主要是迅雷链内部的审核系统触发,只有企业资质审核通过并且产品内容合法合规,才会被部署到迅雷链上。同时,迅雷链是同构多链框架(下文会详细介绍),合约会有自己所属的链,并在该链上完成合约创建。而普通链上的用户发起合约调用时,用户所在链请求入块后,需要知道将该请求和区块路由到哪个链上,所以合约部署时还需将合约的路由信息通知到所有链。
而数据请求服务模块,包含链克相关的所有请求,包括查询余额、查询兑换记录、执行兑换等。对于余额、兑换记录这类请求量很大的模块,会在所有接入节点上做缓存,每个节点通过基础层的“订阅及通知服务”订阅区块信息。当收到区块产生的通知后,可以立即解析区块内信息,并修改缓存中的余额和兑换记录。对于执行兑换的请求先校验合法性,再将合法请求转到基础层。
最底层也叫基础层,是构成迅雷链最核心的组成部分,由 11个模块组成。
其中,共识模块包括共识算法和校验。这是区块链与分布式存储服务共同的核心模块,区块链的共识比普通的分布式存储服务多了一些安全上的校验,比如日志。所有参与共识的节点需要对区块校验其内部数据的合法性。至于如何达成共识就跟共识算法有关了,迅雷链采用的共识算法是 pbft,具体算法的原理和选择理由下一次分享会继续介绍。
智能合约模块:迅雷链上有越来越多的应用在接入,这些应用的业务逻辑代码其实就是智能合约。而智能合约代码是独立于区块链程序的,所以需要在区块链程序中运行虚拟机来解释和执行。再者,智能合约里面需要读取和修改区块链上的数据,所以虚拟机还要提供方法来与区块链交互。
数据存储部分:包括区块、原始请求和用户数据。相比于以
比特币为代表的 UTXO模型,迅雷链选择了基于账户模型,方便支持智能合约。迅雷链的本地存储系统选择的是 leveldb,在数据存储的结构上借鉴了
以太坊的精髓,包括交易树、账户树、事件树。每种树都是一个 merkletree,在区块头部只存储树的 root的 hash。
密码学模块:包括签名和加密。这也是区块链非常核心和独特的模块,区块链的不可篡改、隐私保护等特点都是源于此,涉及签名、摘要计算、公私钥对的生成等。
网络通信模块:包括 P2P和 RPC。区块链中所有参与的记账节点都是对等的,记账节点之间包括请求、区块等信息都需要网络送达,当然要做一个健壮的区块链网络,在网络通信模块还需要不断优化。
通用模块:包括压缩和事件机制。因为账户模型里要存储的数据信息相对较多,而且随着时间推移,链的长度也越来越大,所以数据落盘前需要压缩。事件机制主要是为外围系统提供链上执行合约、链上区块产生等底层支持。
版权申明:本内容来自于互联网,属第三方汇集推荐平台。本文的版权归原作者所有,文章言论不代表链门户的观点,链门户不承担任何法律责任。如有侵权请联系QQ:3341927519进行反馈。