区块链系统对比
对比指标重点围绕区块链行业关注的特性以及相关技术设定,主要分为以下五个类别
基础部分:区块链系统在环境部署、硬件支持等方面的表现
账户部分:区块链系统上和用户账户操作相关的功能
功能部分:区块链系统提供的核心功能
性能部分:区块链在不同场景下的吞吐量、资源消耗情况
安全部分:区块链在预防欺诈节点等攻击行为的表现
评价范围
名称 | XuperUnoin | Fabric | Ethereum | EOS |
---|---|---|---|---|
系统定位 | 一种更通用的开源分布式账本平台,不仅适用于面向企业的应用场景,同时也适用于公开网络应用场景 | 面向企业应用场景的开源分布式账本平台(节点加入Fabric网络之前需经过CA权限验证,不适用公开网络应用场景) | 主要面向公开网络应用场景,也在积极进入企业应用场景市场 | 一个新的区块链底层公链系统,旨在实现分布式应用的性能扩展 |
基础部分
- 环境依赖:部署环境对操作系统、网络、基础库及其他工具的依赖情况
- 部署方式:部署区块链节点的方法及复杂程度
名称 | XuperUnoin | Fabric | Ethereum | EOS |
---|---|---|---|---|
环境依赖 | Golang | Golang Docker | Golang Solidity | C++lib |
部署方式 | 本地源码编译不依赖其他lib | 拉取docker镜像或本地源码编译(有第三方lib依赖) | 本地源码编译不依赖其他lib | 包管理工具部署或在Linux本地CMake |
账户部分
- 用户接口:区块链为使用者提供了那些接口,以及各自功能支持情况
- 账号系统:区块链上账号在功能、权限上的设计情况
名称 | XuperUnoin | Fabric | Ethereum | EOS |
---|---|---|---|---|
用户接口 | · 支持SDK、API· 提供gRPC、RESTful接口· 具有完整功能的命令行 | · 具备RESTful API· SDK支持NodeJS、Java等语言· 命令行功能较弱,需要对API进行二次开发 | · 支持命令行、API· SDK支持go/C++等语言 | · 支持命令行、SDK· SDK支持C++/Js等语言 |
账号系统 | · 账户分为个人账号与合约账号· 合约账号由多个私钥持有,支持权重阈值功能 | · 账号区分不同类别,包含Peer/Orderer/用户等· 有专门的CA节点提供账号相关功能 | · 账户分为个人账号与合约账号· 个人账号由用户的私钥控制,合约账号无私钥,行为由其中部署的合约代码控制 | · 采用账户与权限系统· 支持自定义的权限和权重阈值功能 |
功能部分
- 共识算法:区块链支持哪些共识算法,以及运行状态下进行变更的灵活程度
- 智能合约:链上运行智能合约支持的开发语言、功能的丰富情况以及对开发者的友好程度
- 数据模型:区块链采用何种结构存储数据记录交易
- p2p网络:区块链的节点网络以何种方式维持并增删节点
名称 | XuperUnoin | Fabric | Ethereum | EOS |
---|---|---|---|---|
共识算法 | · 自研TDPoS共识,每3秒全网出一个块· 共识机制可插拔,支持不同场景的应用需求以及热升级 | · 支持Kafka中心化的共识算法· 支持PBFT算法· 有交易才产生区块,不出空块 | · 使用PoW算法· 使用内存需求较高的哈希函数,避免出现算力矿机· 使用uncle块激励机制,减少区块产生间隔为 15 秒 | · 使用BFT-DPoS算法· 0.5秒出块时间 + 1秒全网确认· 每轮产生6个区块以减少网络延时的影响 |
智能合约 | · 支持Go/C/C++· 自研指令级优化的高性能虚拟机 · 支持GAS,不依赖Docker · 读写集与数据版本绑定,支持在同一个区块对数据状态做多次更改 | · 支持Go/Java/NodeJs · 不支持GAS,依赖Docker· 读写集与区块高度绑定,不支持在同一个区块对数据状态做多次更改 | · 使用定制语言Solidity,Serpent,LLL· 有额外学习成本· 提供EVM轻量级虚拟机环境 | · 支持C++及其他支持wasm的语言· 支持基于wasm的虚拟机模型,在性能和跨平台兼容性之间取得了很好的平衡· eosiolib中具备丰富的开发库 |
数据模型 | · 采用UTXO模型· 计算在链外,不需要对交易进行额外计算,也没有额外状态存储· 灵活性强,更容易并发处理 | · 本身无代币功能,需要通过自行开发智能合约实现 | · 采用Account模型保存世界状态· 状态在节点以MPT方式存储,网络传输更少,空间使用更有效率 | · 采用账户模型,操作以账户为基础,转账、更新其他信息,都是基于账户的操作 |
p2p网络 | · DHT,支持自动节点发现且数据加密传输· 适用于任意规模的区块链网络 | · Gossip,适用于规模较小的区块链网络 | · Kademlia,一定程度上保持了网络的活性和安全性 | · 有自己的p2p组网功能的插件 |
性能部分
- 吞吐数据:在给定的配置下,交易和智能合约运行吞吐量及延迟
- 资源消耗:在制定的交易频率下,区块链系统对资源的消耗情况
名称 | XuperUnoin | Fabric | Ethereum | EOS |
---|---|---|---|---|
性能数据 | 60000+TPS [1]TDPoS共识下交易在0.5s内确认 | 1000+TPS交易确认延迟约0.5s [2] | TPS是瓶颈之一 | 3000+TPS交易能够在1.5s内确认 [3] |
资源消耗 | 在1000TPS下资源消耗2.95% (E5 2620 2.40GHz 24Core)1.08GB(RAM) | 待测 |
无法达到1000TPS | 待测 |
安全部分
- 攻击预防:区块链系统对于拜占庭节点的容忍程度
名称 | XuperUnoin | Fabric | Ethereum | EOS |
---|---|---|---|---|
安全指标 | · 使用TDPoS共识可防止1/2以下矿工节点的拜占庭攻击· 支持Gas,防止作恶,避免DDos攻击 | · 节点加入时采用CA进行认证,认为网络中的节点不会作恶· 中心化共识不能防御拜占庭节点问题 | · 采用PoW共识,能够防止50%以下算力的攻击 | · 使用BFT-DPoS可防止1/3以下拜占庭节点的攻击 |
参照文献
[1] 性能数据环境配置:60核2.6GHz,128GRAM, NVME SSD 1TB,使用TDPoS共识,5节点异步模式
[2] Parth Thakkar. Performance Benchmarking and Optimizing Hyperledger Fabric Blockchain Platform
[3] Feature-complete pre-release of EOSIO, Dawn 3.0