基础部分
- 环境依赖:部署环境对操作系统、网络、基础库及其他工具的依赖情况
- 部署方式:部署区块链节点的方法及复杂程度
名称 |
XuperUnoin |
Fabric |
Ethereum |
EOS |
环境依赖 |
Golang |
Golang Docker |
Golang Solidity |
C++lib |
部署方式 |
本地源码编译不依赖其他lib |
拉取docker镜像或本地源码编译(有第三方lib依赖) |
本地源码编译不依赖其他lib |
包管理工具部署或在Linux本地CMake |
- 用户接口:区块链为使用者提供了那些接口,以及各自功能支持情况
- 账号系统:区块链上账号在功能、权限上的设计情况
功能部分
- 智能合约:链上运行智能合约支持的开发语言、功能的丰富情况以及对开发者的友好程度
- 数据模型:区块链采用何种结构存储数据记录交易
- 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 |
安全指标 |
· 使用TDPoS共识可防止1/2以下矿工节点的拜占庭攻击· 支持Gas,防止作恶,避免DDos攻击 |
· 节点加入时采用CA进行认证,认为网络中的节点不会作恶· 中心化共识不能防御拜占庭节点问题 |
· 采用PoW共识,能够防止50%以下算力的攻击 |
· 使用BFT-DPoS可防止1/3以下拜占庭节点的攻击 |
参照文献
[2] Parth Thakkar. Performance Benchmarking and Optimizing Hyperledger Fabric Blockchain Platform
[3] Feature-complete pre-release of EOSIO, Dawn 3.0