基于区块链的“智慧家政”服务生态系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于区块链的“智慧家政”服务生态
系统
1、企业级部署
基本介绍
YQ-Baas generator为企业用户提供了部署、管理和监控多机构多群组联盟链的便捷工具。
设计背景
在联盟链中,多个对等机构是不完全信任的。联盟链的节点之间需要使用数字证书互相进行身份认证。
证书是机构对外身份的凭证,生成证书的过程中需要使用机构本身的公钥和私钥对。私钥即为机构在互联网上的身份信息,是私密的,不可对外告诉其他人的。节点在启动、运行过程中,需要使用私钥对数据包进行签名,从而完成身份认证过程。假设私钥泄露,则任何人都可以伪装成对应的机构,在不经过该机构授权行使该机构的权利。
设计思路
YQ-Baas generator从上述背景出发,根据灵活、安全、易用、对等的原则,从不同机构对等部署、新建群组的角度考虑,设计了解决上述问题的解决方案。
2、整体架构
整体架构上,YQ-Baas划分成基础层、核心层、管理层和接口层:
基础层:提供区块链的基础数据结构和算法库
核心层: 实现了区块链的核心逻辑,核心层分为两大部分:
链核心层: 实现区块链的链式数据结构、交易执行引擎和存储驱动互联核心层: 实现区块链的基础P2P网络通信、共识机制和区块同步机制
管理层: 实现区块链的管理功能,包括参数配置、账本管理和AMOP 接口层: 面向区块链用户,提供多种协议的RPC接口、SDK和交互式控制台
YQ-Baas基于多群组架构实现了强扩展性的群组多账本,基于清晰的模块设计,构建了稳定、健壮的区块系统。
本章重点介绍YQ-Baas的群组架构和系统运行时的交易流(包括交易提交、打包、执行和上链)。
同步
同步,是区块链节点非常重要的功能。它是共识的辅助,给共识提供必需的运行条件。同步分为交易的同步和状态的同步。交易的同步,确保了每笔交易能正确的到达每个节点上。状态的同步,能确保区块落后的节点能正确的回到最新的状态。只有持有最新区块状态的节点,才能参与到共识中去。
交易同步
交易同步,是让区块链的上的交易尽可能的到达所有的节点。为共识中将交易打包成区块提供基础。
状态同步
状态同步,是让区块链节点的状态保持在最新。区块链的状态的新旧,是指区块链节点当前持有数据的新旧,即节点持有的当前区块块高的高低。若一个节点的块高是区块链的最高块高,则此节点就拥有区块链的最新状态。只有拥有最新状态的节点,才能参与到共识中去,进行下一个新区块的共识
状态同步与下载队列
区块链节点在运行时,会定时向其它节点广播自身的最高块高。节点收到其它节点广播过来的块高后,会和自身的块高进行比较,若自身的块高落后于此块高,就会启动区块下载流程。
区块的下载通过请求的方式完成。进入下载流程的节点,会随机的挑选满足要求的节点,发送需要下载的区块区间。收到下载请求的节点,会根据请求的内容,回复相应的区块。
3、存储模块
YQ-Baas继承以太坊存储的同时,引入了高扩展性、高吞吐量、高可用、高性能的分布式存储。存储模块主要包括两部分:
世界状态: 可进一步划分成MPTState 和StorageState
MPTState: 使用MPT树存储账户的状态,与以太坊一致StorageState: 使用分布式存储的表结构存储账户状态,不存历史信息,去掉了对MPT树的依赖,性能更高
分布式存储(Advanced Mass Database,AMDB): 通过抽象表结构,实现了SQL和NOSQL的统一,通过实现对应的存储驱动,可以支持各类数据库,目前已经支持LevelDB和MySQL。
4、安全控制
为了保障节点间通信安全性,以及对节点数据访问的安全性,YQ-Baas引入了节点准入机制、CA黑名单和权限控制三种机制,在网络和存储层面上做了严格的安全控制。
网络层面安全控制
节点使用SSL连接,保障了通信数据的机密性
引入网络准入机制,可将指定群组的作恶节点从共识节点列表或群组中删除,保障了系统安全性
通过群组白名单机制,保证每个群组仅可接收相应群组的消息,保证群组间通信数据的隔离性
引入CA黑名单机制,可及时与作恶节点断开网络连接
提出分布式存储权限控制机制,灵活、细粒度地控制外部账户部署合约和创建、插入、删除和更新用户表的权限。
存储层面安全控制
基于分布式存储,提出分布式存储权限控制的机制,以灵活、细粒度的方式进行有效的权限控制,设计并实现了权限控制机制限制外部账户(tx.origin)对存储的访问,权限控制范围包括合约部署、表的创建、表的写操作。
5、网络传输协议
YQ-Baas 目前有两类数据包格式,节点与节点间通信的数据包为P2PMessage格式,节点与SDK间通信的数据包为ChannelMessage格式。
P2PMessage
v2.0.0-rc2扩展了群组ID和模块ID范围,最多支持32767个群组,且新增了Version字段来支持其他特性(如网络压缩),包头大小为16字节,v2.0.0-rc2的网络数据包结构如下:
6、其他特性
为了提供更好的智能合约调用体验、支持更高的安全性,YQ-Baas 引入了合约命名服务(Contract Name Service, CNS)、国密算法和落盘加密特性。
合约命名服务(Contract Name Service, CNS)
以太坊基于智能合约地址调用合约,存在如下问题:
合约abi为较长的JSON字符串,调用方无法直接感知
合约地址为20字节的魔数,不方便记忆,若丢失后将导致合约不可访问约重新部署后,一个或多个调用方都需更新合约地址不便于进行版本管理以及合约灰度升级
YQ-Baas引入的合约命名服务CNS通过提供链上合约名称与合约地址映射关系的记录及相应的查询功能,方便调用者通过记忆简单的合约名来实现对链上合约的调用。
7、国密算法
为了充分支持国产密码学算法,YQ-Baas基于国产密码学标准,实现了国密加解密、签名、验签、哈希算法、国密SSL通信协议,并将其集成到YQ-Baas平台中,实现对国家密码局认定的商用密码的完全支持。
落盘加密特性
考虑到联盟链的架构中,数据在联盟链的各个机构内是可见的,YQ-Baas引入了落盘加密特性,对存储到节点数据库中的数据进行加密,并引入Key Manager保存加密密钥,保障了节点数据的机密性。