背景
区块链在本质上,是一个共享、可信的公共总账,任何人都可以对它进行核查,但不存在一个单一的用户可以对它进行控制。在区块链系统中的参与者们,会共同维持总账的更新:它只能按照严格的规则和共识来进行修改。区块链被视为下一代全球信用认证和价值互联网的基础协议之一。
金融业被视作区块链落地的最佳场景,根据金融业对区块链的应用需求,我们对三个区块链系统(Fabric、商业区块链A、商业区块链B)进行了评测,旨在为开发者选取区块链时提供参考和指导。
区块链成熟度评测模型
区块链成熟度评测模型基于金融行业开源软件成熟度评测整体模型进行建立。整体模型充分结合了开源软件的特性、系统工程领域对于软件产品质量的要求以及金融行业对于开源软件的使用需求。整体模型涵盖开源许可证、行业认可度、产品活力、服务支持、功能性、性能效率、安全性、可靠性、易用性、可扩展性、可维护性、兼容性等12 大类评估属性,117 个评测指标。
区块链成熟度评测模型评测目标不限于开源软件,还包括商业软件,因此,整体模型中与开源软件相关的开源许可证、行业认可度、产品活力、服务支持等4大类评估属性,区块链成熟度评测模型并不包含。
区块链成熟度评测模型重点围绕金融业关注的特性以及可评测的指标进行建立,涵盖整体模型的8大类评估属性:功能性、性能效率、安全性、可靠性、易用性、可扩展性、可维护性、兼容性,具体包括P2P网络、智能合约、共识算法、账户体系、隐私安全等34个测试项、108个评测指标。
评测环境
在本地局域网环境,我们测试了商业区块链A、商业区块链B、局域网Fabric,此外我们还测试了广域网Fabric。广域网Fabric,由银联、京东、万达、招行四方组建,节点分布在北京、上海、深圳,其中银联、京东、招行为物理节点,万达为公有云节点。具体评测环境与配置如表1。
功能性对比
区块链的功能性主要考察账户体系、交易、区块、智能合约、区块链网络、共识算法、共享帐本七个方面。
(一)账户体系:商业区块链A账户体系健全,商业区块链B和Fabric账户体系尚待完善
账户体系主要测试七个指标:账户分级、账户分类、账户实名、账户注册、注册审批、注册形式、账户注销。七个指标的测试方法都是根据白皮书与相关文档进行专家判断,具体来说,第一个指标的测试方法是通过建立二级账户体系进行验证,如果一级账户能够查到其名下的二级账户,则支持账户分级;第二个指标的测试方法是通过建立不同类别账户,检查是否具有账户分类信息进行验证;第三个指标的测试方法是通过建立账户,检查该账户是否具有实名功能,例如,是否绑定手机号、身份证号码、银行卡等信息;第四个指标的测试方法是通过在某一个节点下进行注册,检查账户是否创建成功;第五个指标的测试方法是通过在某一个节点下进行注册,检查账户是否需要审批才能完成创建;第六个指标的测试方法是检查区块链是否对任何用户均能注册,即开放式注册,检查区块链是否能够针对特定的用户做注册检查,即特定用户注册;第七个指标的测试方法是在某一节点下进行账户注销行为,检查注销后账户是否存在。具体测试结果如下表。
测试结果表明,商业区块链A注册形式丰富,账户体系功能健全,商业区块链B和Fabric注册形式单一,均不支持注册审批和账号注销,此外,商业区块链B不支持账户分级,Fabric不支持账户实名。
(二)交易:商业区块链A、商业区块链B、Fabric交易功能完备
交易主要测试两个指标:交易查询幂等性、交易持久性。两个指标的测试方法都是根据白皮书与相关文档进行专家判断,具体来说,第一个指标的测试方法是向正在运行的区块链节点发送一笔交易,再对其进行连续10次查询操作,比较结果是否一致判断;第二个指标的测试方法是交易成功发起后,被持久化到区块链中,并且不可更改。具体测试结果如下表。
测试结果表明,商业区块链A、商业区块链B、Fabric均支持交易查询幂等性和交易持久性,三个区块链系统交易功能完备。
(三)区块:商业区块链A、商业区块链B、Fabric区块功能完备
区块主要测试两个指标:查询区块平均生成时间、查询指定区块信息。两个指标的测试方法都是根据白皮书与相关文档进行专家判断,具体来说,第一个指标的测试方法是对指定序列的区块的生成时间进行求和计算平均值;第二个指标的测试方法是通过接口判断能否获取指定区块的区块号,所含交易数量信息。具体测试结果如下表。
测试结果表明,商业区块链A、商业区块链B、Fabric均可查询区块平均生成时间和指定区块信息,三个区块链系统区块功能完备。
(四)智能合约:商业区块链A智能合约功能完备,商业区块链B和Fabric具备智能合约核心功能
智能合约主要测试六个指标:智能合约图灵完备、智能合约部署前需注册、智能合约发布时需审计、智能合约具备完整的生命周期管理、智能合约可见、智能合约的源码或二进制码查询。前四个指标的测试方法是根据白皮书与相关文档进行专家判断,后两个指标的测试方法是专家判断与接口判断相结合,具体来说,第一个指标的测试方法是判断智能合约是否具备图灵完备特征;第二个指标的测试方法是判断智能合约在部署前是否需要经过注册审批;第三个指标的测试方法是判断智能合约在发布的时候是否需要后台审计;第四个指标的测试方法是从编写到部署再到销毁分别进行测试,记录生命周期中各个相关操作(如设置合约的过期时间、销毁所需条件等),在智能合约生命周期中,分别测试智能合约的可用性;第五个指标的测试方法是使用不同账户部署不同数量的合约,查询某一账户下的所有智能合约、查询某一智能合约对应的部署账户地址;第六个指标的测试方法是部署智能合约,通过接口查询其源码或二进制码。具体测试结果如下表。
测试结果表明,商业区块链A六项指标全部通过测试,智能合约功能完备,商业区块链B图灵完备、部署前需注册、发布时需审计三个指标通过测试,Fabric图灵完备、合约可见两个指标通过测试。
(五)区块链网络:商业区块链A、商业区块链B、Fabric区块链网络功能完备
区块链网络主要测试三个指标:节点的类别和能力修改和设定、节点的信息和状态获得、平台参数化。第一、三指标的测试方法是通过白皮书与相关文档进行专家判断,第二个指标的测试方法是接口判断,具体来说,第一个指标的测试方法是对不同节点进行类别与权限设定,检查设定后的各节点的类别与权限;第二个指标的测试方法是对不同节点进行状态修改或宕机重启,通过接口来检查设定后的各节点状态;第三个指标的测试方法是手动修改配置文件,读取日志,判断配置文件修改是否生效。具体测试结果如下表。
测试结果表明,商业区块链A、商业区块链B、Fabric节点的类别和能力可以修改和设定、节点的信息和状态可以获得、支持平台参数化,三个区块链系统网络功能完备。
(六)共识算法:商业区块链A、商业区块链B、Fabric共识算法各不相同
共识算法主要测试两个指标:共识算法种类、拜占庭容错算法。两个指标的测试方法都是根据白皮书与相关文档进行专家判断,具体来说,第一个指标的测试方法是对支持的所有共识算法,通过交易进行逐一验证;第二个指标的测试方法是使用拜占庭容错算法作为区块链的共识算法,检查网络中节点达成共识的情况以及抗攻击能力。具体测试结果如下表。
测试结果表明,在共识算法种类方面,三个区块链系统分别采用了不同的共识算法,在拜占庭容错算法方面,只有Fabric不支持拜占庭容错。
(七)共享帐本:商业区块链A共享账本功能最全面,Fabric次之,商业区块链B最弱
共享帐本主要测试七个指标:区块大小静态调整、区块大小动态调整、完整账本同步、部分账本同步、全量账本检索、账本选择性下载、局部账本。七个指标的测试方法都是根据白皮书与相关文档进行专家判断,具体来说,第一个指标的测试方法是在网络离线状态下,根据区块链提供的配置参数调整区块大小,检查是否生效;第二个指标的测试方法是在网络在线状态下,根据区块链提供的配置参数调整区块大小,检查是否生效;第三个指标的测试方法是新增一个节点,查看账本是否完全同步;第四个指标的测试方法是新增一个节点,设定需要同步的部分账本(如区块编号2000至3000部分账本),检查账本部分同步是否成功;第五个指标的测试方法是模拟进行第一个区块、最后一个区块以及中间任意区块的账本检索,检查是否能够检索成功;第六个指标的测试方法是对部分账本(如区块100-1000)根据提供的下载接口进行选择性下载测试,检查下载的结果是否正确;第七个指标的测试方法是选取测试节点后通过脚本进行局部账本的生成,测试是否可以仅同步局部账本。具体测试结果如下表。
测试结果表明,商业区块链A七项指标全部支持,共享帐本功能完备,Fabric除部分账本同步不支持外,其他六项指标均支持,商业区块链B仅支持完整账本同步和全量账本检索两个指标。
综合来看,账户体系、智能合约、共享帐本方面,商业区块链A功能最健全;交易、区块、区块链网络方面,三个区块链系统均功能完备;共识算法方面,三个区块链系统分别支持不同的共识算法。
原文发布时间为:2018年01月04日
本文作者:区块链大本营
本文来源:CSDN区块链大本营,如需转载请联系原作者。