2.3 商用产品的技术特性
商用区块链的分布式商业应用生态,不仅需要面向各个行业提供区块链运营产品,同时需要打造高性能、高可用性、易扩展的商用区块链底层平台,并且这套系统需要经过大量产品场景验证及业务积累。商用区块链需要在技术和产品成熟度两个方面不断突破,从底层区块链技术的角度来看,需要突破共识算法、性能、隐私保护、智能合约和跨链互操作等,从产品的角度来看,需要突破技术合规性、易用性、可视化运维和资金账户体系等。下面将结合多年的学术探索与应用实践,介绍商用区块链在技术突破和产品成熟度方面的研究成果与技术建议。
2.3.1 技术突破
1.安全、高效的共识算法
区块链系统的共识算法需要具备可插拔属性,使用并支持高效的拜占庭容错算法(BFT)和大规模用户可参与的验证节点池+拜占庭容错两种共识算法。拜占庭容错算法是一种不会产生链分叉且强一致性的算法,用户交易可在秒级时间确认。在验证节点池算法中,普通用户也可参与投票,并选举产生记账节点,记账节点再通过拜占庭容错算法轮流产生区块。
如图2-7所示,在验证节点池(Validataing Pool)里,当前所有的验证节点(Validators)通过投票决定某些人能否成为验证节点(Validator)或者候选节点(Candidate)。一旦被选中成为验证节点,将会在当前共识周期里写入区块链。在下一个共识周期里,这个被选中的验证节点将参与BFT共识,经过三次协商,最终对新区块的产生达成共识。
2.并行多样的多链分片
目前,区块链的架构大多是单链架构,而单链受限于网络中单节点的性能极限,对数据的存储多采用链上存储机制,吞吐量总会达到上限,因此无法满足应用的性能、容量及其他要求。商用区块链系统需要实现多链分片,用以满足根据不同业务场景需求对数据做切分,横向提高区块链对吞吐量的需求。
图2-7
如图2-8所示,多链分片技术是一种“二层扩容技术”,可从一条主链平滑地扩展多条子链,每条链都负责部分计算和存储业务,即链的数量可以随着业务量和数据的增加而增加。主链负责管理子链,保障链的安全性;子链继承主链的安全性,并且承载业务运行,子链的数据增长不会影响主链及其他子链的效率,有效地实现了资源隔离。
图2-8
3.可靠的隐私保护与权限控制
区块链系统结合同态隐藏、零知识证明等多项密码学技术,实现了非交互式的隐私保护,可隐藏交易金额、地址以及交易附加数据。我们可以利用代理重加密算法实现对链上数据的授权访问。设计的原理如图2-9所示。系统可以实现3个功能:非交互式的隐私保护、交易金额隐藏、交易地址隐藏。
图2-9
(1)非交互式的隐私保护。通过椭圆曲线密钥交换(Elliptic Curve Diffie-Hellman,ECDH)技术为对方生成致盲因子,对方可还原,而第三方不可。接收者可以通过接收者的私钥与发送者的公钥做代数运算还原致盲因子,而第三方没有双方的私钥无法还原该致盲因子,从而达到对第三方隐藏的目的。
(2)交易金额隐藏。佩德森承诺实现了对金额的同态隐藏,即数字加密前的运算结果经过加密与加密后运算的结果是一致的,区块链节点只需要对加密后的数据做等式运算,即可保证输入值(Input)等于输出值(Output)。
(3)交易地址隐藏。通过“接收者公钥按照某种规则变换”的方式,实现所有权的转移,不同的输出值产生不同的公钥,所有权发生转移,其他人不能关联出变换前的公钥,从而达到对地址隐藏的效果。
4.应用开发友好的智能合约
区块链系统可以基于Chrome V8引擎构建智能合约引擎,提供集成开发环境以及多场景、多类型的智能合约模板。考虑到智能合约的安全性,智能合约模板用JavaScript安全语法子集作为编程语言,开发者可以快速、安全地开发智能合约应用程序。为了让更多开发者使用智能合约,区块链系统同时采用WebAssembly技术构建引擎,支持C、C++、Python语言编写智能合约。
5.可扩展的同构、异构跨链互操作
区块链系统可以使用互联链体系结构,提供多种模式的跨链技术,如图2-10所示。
跨链协议需要支持“基于多公证人机制”和“基于可信硬件机制”的主流模式。开发者可以先建立一条中继链(Relay Chain),利用简单支付证明(Simplified Payment Verification,SPV)技术适配其他平行链的AMC合约(资产管理合约),然后按照业务需求搭建平行链,平行链将按照预设的跨链协议对接到中继链,从而与其他链进行互联互通,这样不仅可以降低跨链架构的复杂度,而且更灵活、更契合实际业务场景。区块链系统支持同构及异构跨链,不仅支持数字资产的跨链转账,还支持智能合约、分布式应用之间的跨链操作。
图2-10
2.3.2 产品成熟度
1.法律效力及合规性
区块链系统需要将数字证书(支持软硬件两种模式,软件证书可增加操作易用性,硬件证书可提高特定业务需求下操作的安全性)应用于区块链网络中,如图2-11所示。
图2-11
用户需持有证书授权中心(Certificate Authority,CA)颁发的数字证书才可以操作区块链,机构节点持有数字证书才可以接入区块链网络中,通过结合现有的公钥基础设施(Public Key Infrastructure,PKI)完成区块链网络的身份认证功能,所有认证信息均映射至区块链账户,并支持链上查验。区块链系统同时支持国家商用密码SM2、SM3、SM4算法,满足国内绝大多数机构对安全性的要求,同时支持SHA256等国际主流密码算法,使得更具有通用性。链上节点引入司法数据风控平台、互联网法院、中国金融认证中心(CFCA)等多家权威机构,提供司法存证、电子合同、实名认证等产品服务。任何开发者都可以向区块链系统提交自己实现的产品服务,参与区块链系统分布式商业应用生态的建设。
2.易用性
适配器(Adaptors)抽象出适用于多种业务场景的API接口,如图2-12所示,可以包含数字资产、数据共享、存证、溯源、供应链金融等,供与这些场景相关的业务直接使用。在新的业务场景中,系统可以基于现有的框架为用户快速定制接口,满足业务功能需求,同时适配器需要封装出主流开发语言(如Java、Node.js、PHP、Python)的软件开发工具包(Software Development Kit,SDK),供开发者使用。
图2-12
目前,区块链技术服务主要有两种:一种是部署一套区块链底层节点程序,提供一套标准化的API并开放,然后由开发者自己对接应用;另外一种是配合上层应用解决一些行业痛点,将分布式账本内嵌到已有的应用系统中。区块链是一项新兴技术,只有不断地满足业务需求,才能走向成熟,所以我们要通过对底层分布式账本的封装,降低上层应用使用的门槛,在对接和使用的过程中,不断地优化和完善底层分布式账本和共识算法,使之更加贴近商用诉求。
3.可视化运维
商用区块链系统需要提供运维管理所需的可视化工具。
如图2-13所示,商用区块链系统需要提供授权控制和健康监控两种可视化管理工具,其中授权控制包含对区块链的管理、许可(License)管理、许可申请、许可签发,以及CA证书的核验功能;健康监控包含节点管理、网络拓扑查看、状态查看、告警管理、告警通知、运行报告的功能。可视化运维需要对不同操作系统(OS)的节点进行监控,如Linux、Windows、macOS、Android等,并支持对节点可视化和多样化的部署(Deploy),如安装包(Package)、容器(Docker)、虚拟机(VM)、云(Cloud)等多种方式。节点需要适配和支持不同的CPU类型,如X86、ARM、MIPS等。
图2-13
4.资金账户体系
在商业应用中,区域链上并没有真实的“钱”。为了解决这个问题,区块链系统需要提供一套组件,实现链上账户与银行账户的一体化,利用智能合约使得资金自动清算,清算的过程只依赖链上签名,不依赖中心化的系统管理员,如图2-14所示,区块链用户CHAIN-ALICE通过智能合约向CHAIN-BOB转移资产,而在区块链之外,银行账户自动清算系统从智能合约中读取数据,对银行账户BANK-ALICE和BANK-BOB进行资产清算。
图2-14