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將是個災難!同步

相關文章
相關標籤/搜索