区块链的性能效率主要考察区块链网络的交易吞吐量。
交易吞吐量是指单位时间能够完成交易的最高个数,测试方法如下:
- 设Nt为统计时间内发送的交易笔数,Nb为统计时间内区块上记录的交易笔数,通过频率可调的交易生成器随机生成交易,满足Nt可控。
- 当测量交易吞吐量时,按照一定速率不断(可并发)生成随机交易。不断提高交易生成速率,直到Nt 大于Nb,记录此时的压测系统配置参数,即为最佳压测参数。
- 按照最佳压测参数,对区块链系统进行压力测试,测试多次,记录单位时间内区块上记录的交易笔数,并取平均值,即为交易吞吐量。
交易吞吐量主要测试一个指标:调用合约TPS。商业区块链A、商业区块链B、局域网Fabric是局域网环境,千兆网络带宽;广域网Fabric是跨地域、跨网络运营商的广域网环境,十兆网络带宽,网络环境复杂,网络节点类型包含物理节点和公有云节点,网络节点硬件配置各不相同,具体测试结果如下表。
测试结果表明,本地局域网环境下,交易吞吐量方面,商业区块链A大约是局域网Fabric、商业区块链B的4倍、130倍,交易吞吐量最高。广域网环境下,网络节点跨物理大区、跨网络运营商、公有云节点等因素产生网络时延,且网络带宽有限,造成广域网Fabric的交易吞吐量下降,大约是局域网Fabric的1/5。
安全性对比
区块链的安全性主要考察身份验证、访问控制、加密体系和隐私、密码算法、匿名性、抗攻击能力六个方面。
(一)身份验证:商业区块链A身份验证功能全面,Fabric身份验证场景单一,商业区块链B私钥生命周期管理不完整
身份验证主要测试五个指标:身份验证的方式、身份验证的场景、防止身份冒用、私钥具有完整的生命周期管理、节点的进出需要身份验证。五个指标的测试方法都是根据白皮书与相关文档进行专家判断,具体来说,第一个指标的测试方法是对支持的所有身份验证方式通过交易逐一验证;第二个指标的测试方法是搜集身份验证的场景,对支持的所有身份验证场景通过模拟交易进行逐一验证;第三个指标的测试方法是判断是否具有防止身份冒用的功能,使用错误的身份信息进行登陆或支付相关操作,验证能够通过;第四个指标的测试方法是判断私钥是否具有完整的生命周期管理,测试私钥的生命周期管理;第五个指标的测试方法是判断私钥是否具有增删节点时的身份验证功能,若具有,增加或删除一个未经过认证的节点,测试是否增删成功,增加或删除一个经过认证的节点,测试是否增删成功。具体测试结果如下表。
测试结果表明,商业区块链A身份验证场景丰富,身份验证功能全面;Fabric身份验证的场景只支持转账,场景单一;商业区块链B的私钥没有完整的生命周期管理。
(二)访问控制:商业区块链A访问控制功能全面,Fabric具备核心访问控制功能,商业区块链B访问控制功能缺失
访问控制主要测试七个指标:不同级别账户权限不同、不同分类账户权限不同、超级账户的权限、账户间的授权、账户授权时限控制、账户权限变更、权限变更形式。七个指标的的测试方法都是根据白皮书与相关文档进行专家判断,具体来说,第一个指标的测试方法是分别建立各个级别下的不同账户,模拟发起各类交易,检查不同账户支持的交易种类是否一样;第二个指标的测试方法是分别建立各个分类下的不同账户,模拟发起各类交易,检查不同账户支持的交易种类是否一样;第三个指标的测试方法是建立一个具有超级账户权限的账户,模拟发起各类交易,检查该账户是否全部支持,通过该账户查看其它账户的信息及交易,检查是否有权限能查看,通过该账户对其它账户进行审批、回收等操作,检查是否对其它账户具有管理功能;第四个指标的测试方法是建立两个不同的账户A和B,使用A账户对B账户进行某项交易授权,通过B账户发起A账户的授权交易,验证是否成功;第五个指标的测试方法是建立两个不同的账户A和B,使用A账户对B账户进行某项交易授权,指定授权时限为10分钟,分别在10分钟内和10分钟后通过B账户发起A账户的授权交易,验证两次交易是否成功;第六个指标的测试方法是建立不同层级的两个账户,使用高级别账户对低级别的账户进行权限的变更,如禁止转账,检查低级别账户是否仍能够进行转账交易;第七个指标的测试方法是对白皮书支持的所有权限变更形式通过模拟测试进行逐一验证。具体测试结果如下表。
测试结果表明,商业区块链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仅支持部分匿名,此外,还支持交易匿名、对审计或超级权限账户保持交易透明两项指标。
(六)抗攻击能力:商业区块链A和Fabric抗攻击能力强,商业区块链B抗攻击能力弱
抗攻击能力主要测试四个指标:抵御DDOS、黑客等网络攻击、抗攻击能力程度、最大容忍节点失效个数、最大容忍节点欺骗个数。四个指标都是通过工具进行模拟评测,具体来说,第一个指标的测试方法是根据白皮书与相关文档搜集抗攻击能力,通过工具分别模拟“10%、30%和51%”欺骗节点情况,同时欺骗节点构建虚拟网络,验证新节点加入时是否会进行识别虚拟网络,或区块链系统能够防范此虚拟网络的构建,通过工具模拟一定量节点向特点目标节点发送大量垃圾分组消息,节点和区块链系统是否有对拦击分组消息防范能力;第二个指标的测试方法是根据白皮书与相关文档搜集抗攻击能力,通过测试工具分别模拟30%、50%、51%的节点攻击,检验共识算法的结果是否与预期一致;第三、四个指标的测试方法是根据白皮书与相关文档搜集最多容忍失效或欺骗节点数N,通过工具模拟N个节点失效或欺骗,检验共识算法的结果是否与预期一致。具体测试结果如下表。
测试结果表明,Fabric抗攻击能力最强,商业区块链A次之,商业区块链B不支持抵御DDOS、黑客等网络攻击。
综合来看,身份验证、访问控制、加密体系和隐私、密码算法方面,商业区块链A功能最全面,抗攻击能力方面,Fabric抗攻击能力最强,匿名性方面,商业区块链A和Fabric均功能完备。
原文发布时间为:2018年01月04日
本文作者:区块链大本营
本文来源:CSDN区块链大本营,如需转载请联系原作者。