商用区块链技术与实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.2 区块链产品架构

为了解决区块链技术在应用落地过程中可能面临的各种阻碍,商用的区块链平台可以采用3层结构,如图2-2所示。

图2-2

1.商用级区块链框架

商用级区块链框架提供区块链基础服务。

2.应用适配层

应用适配层对内进行封装,对外进行建模适配,提供一系列符合应用场景的接口,降低应用对接的复杂度。

3.应用层

应用层即具体的商业应用场景,如数字资产、供应链金融、医疗服务等。

其中,更为重要的是,如何构建一个商用级区块链框架。商用级区块链框架的核心功能可以设计成4个部分:账户中心、分布式账本服务、扩展服务、策略与管理。

2.2.1 账户中心

在区块链技术自有的公钥和私钥体系下,账户中心负责公钥和私钥管理、用户账户地址映射、实名认证及监管等功能,为应用适配层提供两类接口:非托管型接口和托管型接口。

(1)非托管型接口。非托管型接口适用于有能力在应用端实现安全级别较高的私钥生成和使用的企业机构。例如,在金融领域,将私钥的生成与管理跟现有的U盾、电子签名等安全的客户端体系相结合。

(2)托管型接口。托管型接口适用于互联网化程度较高的应用场景。公钥和私钥直接作为用户名和密码使用对普通用户来说识记成本高、体验差,大多数用户习惯用手机号、邮箱、昵称等作为用户名。因此,在托管型接口里,通过安全的私钥生成与管理的体系,应用层用户信息与区块链账户地址映射,上层应用和底层区块链平台都无法触碰到用户的私钥。

如图2-3所示,托管型接口可以设计为账户中心架构,由鉴权服务(Auth-Server)、私钥保险箱(Data Locker)、账户树(Address Tree)3部分组成。

图2-3

(1)鉴权服务。鉴权服务主要解决第三方应用与账户中心的安全问题,通过在交互过程中加入随机数和盲签名技术,增强密钥安全,降低暴力破解的可能性,同时利用白盒加密技术强化客户端的访问安全。

(2)私钥保险箱。私钥的写入和读取在保险箱体系里以密文的方式传输与存储。用户与密钥一一对应。密钥在客户端侧生成且客户端不用保存,每次需要使用私钥签名时,客户端能够通过盲签名流程得到加密过的私钥以及解密的密钥。

(3)账户树。区块链系统中存储完整的账户树,每个叶子节点记录一个账户的资产信息和身份信息;每个账户可以支撑多维资产的使用。账户树支持多种加解密算法,依据不同场景选择使用。

2.2.2 分布式账本服务

区块链系统的底层服务由P2P组网、分布式账本、共识服务3部分组成。同时,为了方便应用层理解和对接,在分布式账本服务适配层抽象出应用组件,应用组件分为资产、记录、交易、合约,如图2-4所示。

图2-4

1.底层架构

(1)P2P组网。区块链系统的节点之间通过P2P(Peer-to-Peer)协议实现基础组网和通信,每个节点维护一张邻居列表,实现动态自组织网络,并可与现有的安全防护设施配合使用,确保商用网络的安全性。

(2)分布式账本。它可以解决数据格式、数据记录、数据存储问题,通俗地说就是解决“记什么账和如何记账”的问题。因此,分布式账本设计决定了区块链底层对外提供服务的能力。

(3)共识服务。它是区块链的核心,也是区块链与传统分布式系统的最大区别。它在保障底层数据强一致性的同时,能抵抗“恶意”坏人的影响。区块链系统的共识服务提供一组抽象的共识接口,用于连接共识算法和其他区块链系统模块。它负责接收和处理交易,并给出共识结果。共识服务采用开放式框架,可以支撑不同种类的共识算法。目前,区块链系统有拜占庭容错算法(BFT)、股份授权证明(DPoS)、PoW等多种共识机制,但是商用的区块链需要开发出更高效的共识算法。我们可以根据上层应用对性能、安全性、容错能力等需求选择不同的算法。

2.应用组件

(1)资产(Asset)。应用组件需要支持目前已经数字化的资产,以及未来可以通过资产证券化、资产数字化的资产。

(2)记录(Record)。应用组件需要利用区块链不可被篡改的特性,增加信息记录的真实性和可信任的场景。例如,金融领域的凭证、供应链的溯源信息等。

(3)交易(Transaction)。交易是用户与区块链底层系统交互的原子级操作,一个上层应用可以对应一笔交易,也可以由一组交易共同完成。

(4)合约(Contract)。应用组件提供两种合约—标准化合约、可编程合约。标准化合约主要针对场景相对简单、标准化程度较高,同时对执行效率有很高要求的业务需求。例如,在资产交换时的交易一致性保障、资产交易的挂单与撮合等。标准化合约可以通过配置生成,直接挂在链上,无须编程,也不用通过虚拟执行,降低了上层应用使用的成本,提升了合约执行的效率。为了应对用户复杂的业务逻辑,一个商用的区块链系统必须支持用户自编程合约,并且提供丰富的组件供用户针对特定的需求快速构建应用,如加密组件、权限管理组件等,同时对于通用的场景(如资产、存证)提供相应的模板,用户不需要从头编写代码,只需要更改模板的关键参数,加上自己业务的特性就可以建立成熟的合约应用。

2.2.3 扩展服务

为了更好地支持商业应用,解决现有区块链功能和性能较难满足高并发、大规模集群应用及数据隐私安全的需求,区块链系统在可扩展性方面需要提供可横向扩展的多链分片技术,在链的互操作性方面需要提供同构、异构的跨链技术,在隐私安全方面需要提供余额、地址及附加信息隐藏的隐私保护技术,如图2-5所示。

图2-5

1.隐私保护技术

区块链系统实现对交易余额、交易地址及交易附加数据的保护,只有节点本身或者被赋予权利的相关方可以见到交易信息,其余节点均无法操作数据。开发者可灵活使用区块链系统提供的开发库创建密文交易及智能合约相关接口实现对具体场景业务的加密要求。

2.跨链技术

区块链的互操作性本身就是一些应用的基础需求,如在供应链金融应用中各项资产需要在多条链上进行多方验证、确权、转移和交易,那么就需要建立一个跨链协议来满足链上应用间的资产流动。区块链系统支持同构及异构跨链,不仅支持数字资产的跨链转账,还支持智能合约、分布式应用之间的跨链操作。

3.多链分片技术

当单链的性能不能满足业务应用时,如单链受限于网络中单节点的性能极限,无法满足每秒交易请求可达几万笔的支付类应用场景,或由于单链中每个全节点都拥有全网所有数据,不能满足金融场景中基于业务和安全需求的数据隔离,用户可以通过多链分片技术横向扩展区块链,提高区块链的吞吐量。

2.2.4 策略与管理

区块链平台需要提供安全与策略服务,目的是管理和维护区块链系统本身的配置和安全,也管理区块链存储数据的访问策略。

如图2-6所示,区块链底层需要提供安全(Security)与策略(Strategy)两个基础服务,应用适配层提供一系列可视化的管理工具,有配置管理(Config)、健康监控(Monitor)、数据分析(Analysis)、区块链浏览器(Browser)。

图2-6

1.安全

底层安全服务负责解决系统组网、接口访问、共识算法、数据隐私等安全问题,可以使用黑名单、监控等传统方式进行安全加固,也可以使用同态加密、范德蒙矩阵等计算机密码学算法来解决安全问题。

2.策略

策略服务包括节点安全隐私策略、数据访问权限策略、可视化运维策略以及动态创建软件包策略等。

3.配置管理

配置管理工具主要提供可视化的配置操作,对区块链节点、P2P网络、共识、安全、权限及其他区块链策略系统参数等进行灵活设置。配置操作本身也可以作为一种区块链的交易,由节点共同投票确定生效。

4.健康监控

区块链系统的健康监控平台需要提供3个维度的监控:系统层[中央处理器(CPU)、内存、磁盘等]、网络层(时延、断线)和区块链(区块生成、交易验证),并且提供完善的告警、日志、通知机制体系,便于商用系统的运维。

5.数据分析

分布式账本内存储的大部分数据是元数据,还有少量标准化的关联关系。为了满足上层应用各种复杂的数据分析需求,数据分析工具提供标准的数据查询接口,如对交易、用户、资产的查询,同时还支持批量订阅的定制化接口服务。

6.区块链浏览器

在不涉及隐私的情况下,区块链浏览器可以实时看到整条区块链底层存储的数据信息,包括区块(Block)、交易(Transaction)、账户(Account)等信息,同时支持针对这些信息进行统计和搜索。