Tendermint的學習
簡介
什麼是Tendermint?
Tendermint是一個基於pBFT(實用拜占庭容錯)共識機制生成的狀態機,可用於在多臺機器安全一致地複製一個應用。安全指的是即使有多達 1/3 的機器出現任意故障的情況下, Tendermint 仍然能夠正常工作,這叫拜占庭容錯。一致指的是每一個正常工作的機器都會有著同樣的交易日誌,計算相同的狀態,這就是區塊鏈的特性。所以,用Tendermint實現的區塊鏈有高速和易用的特點。它主要有兩部分:Tendermint Core是實現共識機制部分,ABCI(Application Blockchain Interface)是一個支援多種語言寫智慧合約的程式介面。使用Tendermint,各種去中心化應用可以很容易的搭建底層區塊鏈。 現在Tendermint主要使用在Cosmos這個專案上。
主要文件
https://tendermint.readthedocs.io/en/master/introduction.html#consensus-overview
程式碼
Tendermint Core: https://github.com/tendermint/tendermint
ABCI: https://github.com/tendermint/abci
什麼是Cosmos?
Cosmos想做成一個區塊鏈的網際網路。只要是通過任何能快速達成終極共識的機制做成的區塊鏈,都可以加入Cosmos,在這個平臺上實現鏈與鏈之間的交易。Cosmos支援各種能快速達到終極共識的區塊鏈。BFT就是這樣一種鏈。Tendermint是它的主選,Cosmos中心鏈(Cosmos Hub)就是通過他來實現。
Tendermint共識演算法。
Tendermint實現的是POS權益證明,每個生成的區塊需要每個Validator投票決定。根據持幣量不同有不同的投票權重,也加入了對作惡節點的經濟懲罰機制。
Tendermint使用的pBFT來對協議達成共識。這個演算法分三步,propose,prevote,precommit。(這和Zilliqa是類似的。)
propose階段
參加協議的節點(Validator)輪流提出一個區塊發給所有其他節點。
prevote階段
所有節點對區塊驗證並進行投票。超過2/3的節點同意。去第三步,超過1/3的反對,回到第一步,由新的Validator提出新區塊。
precommit階段
所有節點通知Validator自己同意使用新節點。超過2/3的節點同意,區塊就正式生效並加到鏈上。
Tendermint vs. Casper
另外一個知名的POS,叫Casper共識。這是選定的將來在以太坊上實現的POS共識。Tendermint和Casper最大的區別是:
Tendermint使用pBFT,所以每次選出來的塊都有最終確定性,不會有分叉,這樣能達到共識安全。但是也有達不成共識使得鏈停滯不前的隱患。
Casper考慮更多的是可用性而非一致性,所以使用的是基於鏈的權益證明,它每次選出來塊都是最長的鏈上的一個塊,然後進行投票。這樣還是會有分叉的存在。當然Casper還在不斷髮展中,也為了配合以太坊的逐步升級做了一些調整。現在是一個PoW和PoS的混合體。將來會慢慢發展成一個真正的POS協議。
總結一下,所有的pBFT演算法,都是由單一的節點發起新區塊,區塊的最終決定還是要投票決定。但是發起節點不固定,這樣就不會成為外部攻擊目標。如果發起節點固定,那就成了dPOS,類似EOS那種。dPOS的區塊發起節點是一個超級節點,要抵押很多的代幣,才能得到這個權益。他們都是不差錢的金主,也有足夠的資金和足夠的理由來保護他們的節點伺服器不受外部攻擊。
相關文章
- cosmos tendermint irisnet 的amino編解碼解析
- 共識演算法的比較:Casper vs Tendermint演算法
- 區塊鏈時代的拜占庭容錯:Tendermint(二)區塊鏈
- tendermint區塊鏈五分鐘入門區塊鏈
- Go物件導向程式設計以及在Tendermint/Cosmos-SDK中的應用Go物件程式設計
- spark RDD的學習,filter函式的學習,split函式的學習SparkFilter函式
- 機器學習整合學習—Apple的學習筆記機器學習APP筆記
- Go函數語言程式設計以及在Tendermint/Cosmos-SDK中的應用Go函數程式設計
- 機器學習中的元學習機器學習
- 如何高效的學習python?python學習技巧Python
- 學習的快慢
- git的學習Git
- steps()的學習
- Python的學習Python
- JFR的學習
- smem的學習
- Scala 的學習
- 堆的學習
- 管道的學習
- 學習的方法
- CSS的學習CSS
- bootlodar的學習boot
- 機器學習和深度學習的區別機器學習深度學習
- 機械學習和深度學習的區別深度學習
- 深度學習——loss函式的學習筆記深度學習函式筆記
- numpy的學習筆記\pandas學習筆記筆記
- 學 習 數 學 的 意 義
- 深度學習——學習目錄——學習中……深度學習
- 我們該如何學習機器學習中的數學機器學習
- 學習如何學習的演算法:簡述元學習研究方向現狀演算法
- 【學習】分享幾個學習中的小問題
- 在北京學習Python有哪些好的學習方法?Python
- 在南京學習Python有哪些好的學習方法?Python
- 學習筆記:深度學習中的正則化筆記深度學習
- Python機器學習筆記:sklearn庫的學習Python機器學習筆記
- Contrastive Learning 對比學習 | RL 學 representation 時的對比學習AST
- 深度學習學習框架深度學習框架
- 學習ThinkPHP,學習OneThinkPHP