Bitcoin、Ethereum、hyperledger 技术宏观比较

1,最大困惑:worldstate是个什么东西?

 

比特币里没有帐户概念,全部余额均经过UTXO计算而得。而以太坊和hyperledger里均有帐户概念。以太坊的帐户分为普通账户和合约帐户,每一个帐户对应有永久存储空间,存储该帐户的以太币余额、bytecode、计数器(用于防止replay attack)、其它键值对等。hyperledger中帐户即为chaincodeID,每一个被delopy的chaincode(chaincode是hyperledger中对智能合约的叫法)就是一个帐户,每一个帐户也对应有永久存储空间,存储自定义的键值对。以太坊和hyperledger中的永久存储空间就是worldstate。spa

 

2,worldstate究竟存储在哪里?

 

这个问题会让比特币开发者更加困惑,由于对于比特币而言,每一个节点维护一个完整的blockchain,除此之外再无其它数据须要存储。而对于以太坊和hyperledger而言究竟worldstate的信息(即帐户的相关信息)存储在哪里?是在blockchain里面仍是其它什么地方?即链上存储仍是链下存储?答案是链下存储。事实上,以太坊和hyperledger的每一个block会只是包含当前对应的worldstate整个数据集合的一个hash,称为worldstate-hash。以太坊worldstate完整数据则存储在~/.ethereum,hyperledger的worldstate数据存储在/var/hyperledger/production/db下。设计

 

3,出块速度不同

 

这个你们应该比较清楚,比特币平均10分钟出一次(对于初学者稍微解释一下,是平均,不是固定。处理逻辑是只要矿工算出答案就当即出块,快到几秒、慢到几小时都有可能),以太坊是平均十几秒,而hyperledger默认是1个交易出一个块,也支持CommitTxBatch模式,多个交易出一个块(只是个人理解,还未彻底验证)。就是说没有交易时hyperledger是不出块的,好比1天都没有交易,则一天都没有新块生成。而比特币和以太坊不同,即便没有交易也会出块(由于矿工本身会发布coinbase交易,赚取挖矿费)。code

 

4,共识机制不同

 

比特币是PoW的鼻祖,以太坊目前也采用PoW,hyperledger使用ibm版PBFT。PoW都须要设计代币(比特币和以太币,用于奖励矿工和防止攻击),PBFT则不必定,因此当前hyperledger没有内置代币。开发

 

5,以太坊和hyperledger支持SPV吗?

 

比特币的成功SPV功不可没。中本聪的天才之处体如今不少方面,SPV就是其中之一。若是没有SPV我相信如今已没有几我的玩比特币了。设想一下,下载一个钱包,要等好几天时间同步后才能使用,是一种什么样的体验!我尚未研究以太坊目前是否支持SPV。可是hyperledger目前是不支持的(目前讲的是fabric 0.6.1版本),不支持SPV将是个灾难!同步

相关文章
相关标签/搜索