比特币、以太坊、hyperledger技术宏观比较

来源:互联网 发布:vscode md转html 编辑:程序博客网 时间:2024/04/30 19:21

 

转http://www.8btc.com/bitcoin-hyperledger

 

熟悉比特币技术的同学再去学以太坊和hyperledger(均指hyperledger fabric)往往有些困惑,先帮大家梳理如下:

 

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

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

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交易,赚取挖矿费)。

4,共识机制不一样

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

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

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