2018-09-29 电子商务电子支付国家工程实验室 区块链成熟度评测报告(5家) | 联系人: 刘为怀 021-20631824
2018-01-03 电子商务电子支付国家工程实验室 区块链成熟度评测报告(4家) | 作者:开源软件工作组(何东杰、周钰、刘为怀)| 来源:银联电子商务与电子支付国家工程实验室
2017-08-02 雪球 独创共识机制POI:他们想改变原创内容的商业模式解决变现问题
宣松涛——墨链联合创始人,“纸贵版权”联合创始人
区块链在本质上,是一个共享、可信的公共总账,任何人都可以对它进行核查,但不存在一个单一的用户可以对它进行控制。在区块链系统中的参与者们,会共同维持总账的更新:它只能按照严格的规则和共识来进行修改。区块链被视为下一代全球信用认证和价值互联网的基础协议之一。
金融业被视作区块链落地的最佳场景,根据金融业对区块链的应用需求,我们对三个区块链系统(Fabric、商业区块链A、商业区块链B)进行了评测,旨在为开发者选取区块链时提供参考和指导。
区块链成熟度评测模型基于金融行业开源软件成熟度评测整体模型进行建立。整体模型充分结合了开源软件的特性、系统工程领域对于软件产品质量的要求以及金融行业对于开源软件的使用需求。整体模型涵盖开源许可证、行业认可度、产品活力、服务支持、功能性、性能效率、安全性、可靠性、易用性、可扩展性、可维护性、兼容性等12 大类评估属性,117 个评测指标。
区块链成熟度评测模型评测目标不限于开源软件,还包括商业软件,因此,整体模型中与开源软件相关的开源许可证、行业认可度、产品活力、服务支持等4大类评估属性,区块链成熟度评测模型并不包含。
区块链成熟度评测模型重点围绕金融业关注的特性以及可评测的指标进行建立,涵盖整体模型的8大类评估属性:功能性、性能效率、安全性、可靠性、易用性、可扩展性、可维护性、兼容性,具体包括P2P网络、智能合约、共识算法、账户体系、隐私安全等34个测试项、108个评测指标。
在本地局域网环境,我们测试了商业区块链A、商业区块链B、局域网Fabric,此外我们还测试了广域网Fabric。广域网Fabric,由银联、京东、万达、招行四方组建,节点分布在北京、上海、深圳,其中银联、京东、招行为物理节点,万达为公有云节点。具体评测环境与配置如表1。
表1 评测环境与配置
区块链的功能性主要考察账户体系、交易、区块、智能合约、区块链网络、共识算法、共享帐本七个方面。
账户体系主要测试七个指标:账户分级、账户分类、账户实名、账户注册、注册审批、注册形式、账户注销。七个指标的测试方法都是根据白皮书与相关文档进行专家判断,具体来说,第一个指标的测试方法是通过建立二级账户体系进行验证,如果一级账户能够查到其名下的二级账户,则支持账户分级;第二个指标的测试方法是通过建立不同类别账户,检查是否具有账户分类信息进行验证;第三个指标的测试方法是通过建立账户,检查该账户是否具有实名功能,例如,是否绑定手机号、身份证号码、银行卡等信息;第四个指标的测试方法是通过在某一个节点下进行注册,检查账户是否创建成功;第五个指标的测试方法是通过在某一个节点下进行注册,检查账户是否需要审批才能完成创建;第六个指标的测试方法是检查区块链是否对任何用户均能注册,即开放式注册,检查区块链是否能够针对特定的用户做注册检查,即特定用户注册;第七个指标的测试方法是在某一节点下进行账户注销行为,检查注销后账户是否存在。具体测试结果如下表。
账户体系:商业区块链A账户体系健全,商业区块链B和Fabric账户体系尚待完善
测试结果表明,商业区块链A注册形式丰富,账户体系功能健全,商业区块链B和Fabric注册形式单一,均不支持注册审批和账号注销,此外,商业区块链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节点的类别和能力可以修改和设定、节点的信息和状态可以获得、支持平台参数化,三个区块链系统网络功能完备。
共识算法主要测试两个指标:共识算法种类、拜占庭容错算法。两个指标的测试方法都是根据白皮书与相关文档进行专家判断,具体来说,第一个指标的测试方法是对支持的所有共识算法,通过交易进行逐一验证;第二个指标的测试方法是使用拜占庭容错算法作为区块链的共识算法,检查网络中节点达成共识的情况以及抗攻击能力。具体测试结果如下表。
共识算法:商业区块链A、商业区块链B、Fabric共识算法各不相同
测试结果表明,在共识算法种类方面,三个区块链系统分别采用了不同的共识算法,在拜占庭容错算法方面,只有Fabric不支持拜占庭容错。
共享帐本主要测试七个指标:区块大小静态调整、区块大小动态调整、完整账本同步、部分账本同步、全量账本检索、账本选择性下载、局部账本。
七个指标的测试方法都是根据白皮书与相关文档进行专家判断,具体来说,
共享帐本:商业区块链A共享账本功能最全面,Fabric次之,商业区块链B最弱
测试结果表明,商业区块链A七项指标全部支持,共享帐本功能完备,Fabric除部分账本同步不支持外,其他六项指标均支持,商业区块链B仅支持完整账本同步和全量账本检索两个指标。
综合来看,账户体系、智能合约、共享帐本方面,商业区块链A功能最健全;交易、区块、区块链网络方面,三个区块链系统均功能完备;共识算法方面,三个区块链系统分别支持不同的共识算法。
区块链的性能效率主要考察区块链网络的交易吞吐量。
交易吞吐量是指单位时间能够完成交易的最高个数,测试方法如下:
交易吞吐量主要测试一个指标:调用合约TPS。
交易吞吐量:商业区块链A交易吞吐量最高,Fabric次之,商业区块B链最低
测试结果表明,本地局域网环境下,交易吞吐量方面,商业区块链A大约是局域网Fabric、商业区块链B的4倍、130倍,交易吞吐量最高。广域网环境下,网络节点跨物理大区、跨网络运营商、公有云节点等因素产生网络时延,且网络带宽有限,造成广域网Fabric的交易吞吐量下降,大约是局域网Fabric的1/5。
区块链的安全性主要考察身份验证、访问控制、加密体系和隐私、密码算法、匿名性、抗攻击能力六个方面。
身份验证主要测试五个指标:身份验证的方式、身份验证的场景、防止身份冒用、私钥具有完整的生命周期管理、节点的进出需要身份验证。
五个指标的测试方法都是根据白皮书与相关文档进行专家判断,具体来说,
具体测试结果如下表。
身份验证:商业区块链A身份验证功能全面,Fabric身份验证场景单一,商业区块链B私钥生命周期管理不完整
测试结果表明,商业区块链A身份验证场景丰富,身份验证功能全面;Fabric身份验证的场景只支持转账,场景单一;商业区块链B的私钥没有完整的生命周期管理。
访问控制主要测试七个指标:不同级别账户权限不同、不同分类账户权限不同、超级账户的权限、账户间的授权、账户授权时限控制、账户权限变更、权限变更形式。
七个指标的的测试方法都是根据白皮书与相关文档进行专家判断,具体来说,
访问控制:商业区块链A访问控制功能全面,Fabric具备核心访问控制功能,商业区块链B访问控制功能缺失
测试结果表明,商业区块链A访问控制功能全面,Fabric支持不同级别账户权限不同、不同分类账户权限不同、超级账户的权限,商业区块链B访问控制七个指标均不支持,访问控制功能缺失。
加密体系和隐私主要测试四个指标:交易信息加密、签名的应用场景、签名使用的私钥保存、私钥丢失能否保护用户财产。
四个指标的测试方法都是根据白皮书与相关文档进行专家判断,具体来说,
加密体系和隐私:商业区块链A加密体系健全,Fabric签名应用场景单一,商业区块链B交易信息不加密
测试结果表明,商业区块链A签名应用场景丰富,加密体系健全,Fabric签名应用场景仅支持转账,场景单一,商业区块链B不支持交易信息加密。
密码算法主要测试四个指标:密码算法种类、国密算法、加密机、可插拔自定义密码算法。
四个指标的测试方法都是根据白皮书与相关文档进行专家判断,具体来说,
密码算法:商业区块链A密码算法功能全面,商业区块链B和Fabric均不支持国密算法
测试结果表明,国密算法方面,仅商业区块链A支持;密码算法种类方面,商业区块链A最丰富,Fabric次之,商业区块链B最少;可插拔自定义密码算法方面,商业区块链A和Fabric均支持,商业区块链B不支持;三个区块链系统均不支持加密机。
匿名性主要测试五个指标:交易匿名、全部匿名还是部分匿名、子账户对其父账户保持交易透明、子账户对其他父账户保持交易匿名、对审计或超级权限账户保持交易透明。
五个指标的测试方法都是根据白皮书与相关文档进行专家判断,具体来说,
匿名性:商业区块链A和Fabric匿名性功能全面,商业区块链B具备匿名性核心功能
测试结果表明,商业区块链A和Fabric五项匿名性指标全部支持,匿名性功能全面,商业区块链B仅支持部分匿名,此外,还支持交易匿名、对审计或超级权限账户保持交易透明两项指标。
抗攻击能力主要测试四个指标:抵御DDOS、黑客等网络攻击、抗攻击能力程度、最大容忍节点失效个数、最大容忍节点欺骗个数。
四个指标都是通过工具进行模拟评测,具体来说,
具体测试结果如下表。
抗攻击能力:商业区块链A和Fabric抗攻击能力强,商业区块链B抗攻击能力弱
测试结果表明,Fabric抗攻击能力最强,商业区块链A次之,商业区块链B不支持抵御DDOS、黑客等网络攻击。
综合来看,身份验证、访问控制、加密体系和隐私、密码算法方面,商业区块链A功能最全面,抗攻击能力方面,Fabric抗攻击能力最强,匿名性方面,商业区块链A和Fabric均功能完备。
区块链的可靠性主要考察区块链网络、共享帐本、账户体系三个方面。
区块链网络主要测试三个指标:记账节点高可用、服务节点之间高可用、区块链网络的网络抖动是否影响系统服务等级。
区块链网络:商业区块链A、商业区块链B、Fabric均网络可靠
测试结果表明,商业区块链A、商业区块链B、Fabric均支持记账节点和服务节点的高可用,且网络抖动不影响系统服务等级,三个区块链系统均网络可靠。
共享帐本主要测试三个指标:账本高可用、账本支持failover同步、账本备份恢复。
第一、二个指标的评测方法是通过脚本进行评测,第三个指标的评测方法是根据白皮书与相关文档进行专家判断。具体来说,
具体测试结果如下表。
共享帐本:商业区块链A、商业区块链B、Fabric均账本可靠
测试结果表明,商业区块链A、商业区块链B、Fabric均支持账本高可用、账本支持failover同步、账本备份恢复,三个区块链系统账本可靠。
账户体系主要测试一个指标:不同节点下的账户信息高可用。
测试方法是利用脚本使某一账户所在节点失效,使用脚本对失效节点的账户进行模拟转账等交易行为,检查交易是否成功;若成功,则不同节点的账户信息高可用。
具体测试结果如下表。
账户体系:商业区块链A、商业区块链B、Fabric均账户可靠
测试结果表明,商业区块链A、商业区块链B、Fabric均支持不同节点下的账户信息高可用,三个区块链系统账户可靠。
综合来看,区块链网络、共享帐本、账户体系三个方面,商业区块链A、商业区块链B、Fabric均可靠。
区块链的易用性主要考察区块链网络、智能合约、交易、账户体系、共享帐本五个方面。
区块链网络主要测试两个指标:网络搭建的复杂程度、增删节点的复杂程度。
测试方法是根据白皮书与相关文档收集搭建多节点区块链网络或增删节点的具体步骤,模拟搭建多节点区块链网络或增删节点,计算搭建所需时间及搭建步骤复杂程度或增删步骤复杂程度。
具体测试结果如下表。
区块链网络:商业区块链A网络操作最简单,Fabric次之,商业区块链B不支持删除网络节点
测试结果表明,网络搭建的复杂程度方面,商业区块链A最快,10分钟以内,Fabric次之,4小时以内,商业区块链B最慢,8小时以内。增删节点的复杂程度方面,商业区块链A和Fabric均支持增删节点且不需要停机,商业区块链B不支持删除节点。
智能合约主要测试三个指标:智能合约支持的语言、注册智能合约复杂程度、部署智能合约复杂程度。
具体测试结果如下表。
智能合约:商业区块链A和Fabric智能合约操作简单,商业区块链B智能合约操作需通过中心节点
测试结果表明,三个区块链系统的智能合约分别支持不同的语言,智能合约注册和部署方面,商业区块链A和Fabric采用去中心化方式,商业区块链B采用中心节点方式,三个系统的过程均简单。
交易主要测试两个指标:交易查询复杂度、交易发起复杂度。
测试方法是通过在某一个节点下进行交易的查询或发起行为,记录所需流程,流程需要2步以上视为复杂。
具体测试结果如下表。
交易:商业区块链A和Fabric交易操作简单,商业区块链B交易查询仅支持接口进行
测试结果表明,交易查询方面,商业区块链A和Fabric支持接口、SDK进行查询,商业区块链B支持接口进行查询。
账户体系主要测试三个指标:注册复杂度、销毁复杂度、授权复杂度。第一、二个指标的测试方法是通过在某一个节点下进行注册或销毁行为,记录所需流程,流程需要2步以上视为复杂;第三个指标的测试方法是模拟将B账户授权给A账户,记录授权所需流程,流程需要2步以上视为复杂。具体测试结果如下表。
账户体系:商业区块链A账户操作简单且健全,Fabric次之,商业区块链B仅支持注册操作
测试结果表明,商业区块链A账户体系易用性功能丰富,Fabric次之,商业区块链B仅支持注册。
共享账本主要测试两个指标:共享账本的检索条件限定、建立索引。两个指标的测试方法都是根据白皮书与相关文档判断,具体来说,
共享帐本:商业区块链A、商业区块链B、Fabric均支持账本检索
测试结果表明,三个区块链系统均支持通过id、关键字、时间区间、条件选择、溯源进行账本检索,但均不支持建立索引。
综合来看,区块链网络、账户体系方面,商业区块链A最易用且功能健全,智能合约和交易方面,商业区块链A和Fabric操作最简单,共享帐本方面,三个区块链系统均支持账本检索。
区块链的可扩展性主要考察网络节点、共识算法、外围开发、云平台集成四个方面。
网络节点主要测试三个指标:网络节点动态增加、网络节点动态删除、网络节点数量限制。三个指标的测试方法都是通过白皮书与相关文档进行专家判断,具体来说,
具体测试结果如下表。
网络节点:商业区块链A和Fabric网络节点可扩展性高,商业区块链B不支持网络节点动态删除
测试结果表明,商业区块链A和Fabric网络节点可扩展性功能完备,可扩展性高,商业区块链B不支持网络节点动态删除。
共识算法主要测试六个指标:可插拔自定义共识算法、若采用PoW,挖矿难度能否自定义、若采用PoW,需要多少个区块的确认才能保证一笔交易不会被撤销、共识算法根据网络规模调整、共识算法根据参与方数量调整、共识算法根据交易吞吐量需求调整。
六个指标的测试方法都是通过白皮书与相关文件进行专家判断,具体来说,
具体测试结果如下表。
共识算法:商业区块链A和Fabric共识算法可扩展性高,商业区块链B不支持可插拔自定义共识算法
测试结果表明,商业区块链A和Fabric支持可插拔自定义共识算法,共识算法可扩展性高,商业区块链B不支持可插拔自定义共识算法。
外围开发主要测试三个指标:可插拔Plugin、ETL、 SDK和API,
外围开发:商业区块链A外围开发支持丰富,Fabric次之,商业区块链B仅支持SDK、API
测试结果表明,商业区块链A支持可插拔Plugin、ETL、 SDK和API开发,可扩展性好,Fabric不支持ETL开发,商业区块链B只支持SDK和API开发。
云平台集成主要测试三个指标:与云平台集成、与哪些云平台集成、提供相应的集成接口,
具体测试结果如下表。
云平台集成:商业区块链A和Fabric云平台集成支持范围大,商业区块链B云平台集成缺失
测试结果表明,商业区块链A和Fabric支持与众多主流云平台集成,且提供相应的集成接口,商业区块链B不支持与云平台集成。
综合来看,网络节点、共识算法、云平台集成方面,商业区块链A和Fabric可扩展性高,外围开发方面,商业区块链A广泛支持。
区块链的可维护性主要考察印记管理、系统管理、策略管理、智能合约、易部署性五个方面。
应急管理主要测试一个指标:区块链网络在出现任何故障时的应急处理能力体系,测试方法是根据白皮书与相关文档进行专家判断。具体测试结果如下表。
应急管理:商业区块链A应急管理体系完善,商业区块链B和Fabric无应急管理体系
测试结果表明,商业区块链A具备完善的应急管理体系,商业区块链B和Fabric没有应急管理体系。
系统管理主要测试三个指标:管理监控平台、报警系统、运维接口。
具体测试结果如下表。
系统管理:商业区块链A系统管理完善,商业区块链B和Fabric系统管理尚待完善
测试结果表明,商业区块链A系统管理最完善,商业区块链B和Fabric系统管理尚待完善。
策略管理主要测试三个指标:创世区块自定义、区块生成时间配置、访问控制权限配置。
具体测试结果如下表。
策略管理:商业区块链A和Fabric策略管理完善,商业区块链B不支持访问控制权限配置
测试结果表明,商业区块链A和Fabric策略管理完善,商业区块链B访问控制权限配置支持缺失。
智能合约主要测试两个指标:智能合约动态更新、智能合约冻结或销毁。
智能合约:商业区块链A智能合约可维护性好,商业区块链B和Fabric智能合约可维护性缺失
测试结果表明,商业区块链A智能合约动态更新、冻结、销毁等后期维护均支持良好,可维护性好,商业区块链B和Fabric智能合约不支持后期维护,可维护性缺失。
易部署性主要测试两个指标:区块链节点易部署、区块链监控平台的易部署。测试方法是根据系统部署文档,通过配置参数化文件进行系统部署。具体测试结果如下表。
易部署性:商业区块链A和商业区块链B部署管理完善,Fabric无监控平台
测试结果表明,商业区块链A和商业区块链B节点和监控平台均容易部署,Fabric没有监控平台。
综合来看,应急管理、系统管理、智能合约方面,商业区块链A管理体系完善,可维护性好,策略管理方面,商业区块链A和Fabric策略管理完善,易部署性方面,商业区块链A和商业区块链B部署管理完善。
区块链的兼容性主要考察区块链系统、智能合约、数据三个方面。
区块链系统主要测试一个指标:区块链系统兼容性,测试方法是在不同的操作系统、中间件、数据库之间进行系统移植,测试是否支持。具体测试结果如下表。
区块链系统:商业区块链A系统兼容性最高,Fabric次之,商业区块链B最低
测试结果表明,商业区块链A支持的操作系统最多,系统兼容性最高,Fabric次之,商业区块链B支持的操作系统最少,兼容性最低。
智能合约主要测试两个指标:智能合约可移植性、智能合约向前兼容性。
具体测试结果如下表。
智能合约:商业区块链A智能合约兼容性最好,商业区块链B和Fabric不支持智能合约移植
测试结果表明,商业区块链A支持智能合约的可移植性、向前兼容性,智能合约兼容性最好,商业区块链B和Fabric不支持智能合约移植。
数据主要测试一个指标:数据可移植性。测试方法是模拟数据的迁移与恢复,检查是否成功。具体测试结果如下表。
数据:商业区块链A和Fabric支持数据移植,商业区块链B不支持
测试结果表明,商业区块链A和Fabric支持数据移植,商业区块链B不支持数据移植。
综合来看,区块链系统、智能合约方面,商业区块链A兼容性最高,数据方面,商业区块链A和Fabric支持数据移植。
根据区块链成熟度评测模型,我们从功能性、性能效率、安全性、可靠性、易用性、可扩展性、可维护性、兼容性八个方面,完成了对商业区块链A、商业区块链B、Fabric三种区块链系统的成熟度评测,对比总结情况如下表所示。
总结
总体来说,商业区块链A在各方面均优于Fabric和商业区块链B,Fabric整体上优于商业区块链B。建议企业优先选择商业区块链A。此外,作为开源区块链系统基础软件,Fabric仍处于高速发展阶段,尚不成熟。