Tendermint的工作原理剖析(一)

當一個Tx進來時, Tmcore的mempool(MP)會通過mempool connection(一個socket連接,由abci-server提供,端口號爲46658)調用Application Logic(AL:也就是abci-app,我們自己用任何語言編寫的APP邏輯)裏的checkTx方法,AL向MP返回驗證結果。MP根據驗證結果放行或者拒絕該Tx。

Tendermint(TM)把tx暫存在內存池(mempool)裏,並把這條tx通過P2P網絡複製給其它TM節點。TM發起了對這條 tx 的拜占庭共識投票,所有4個 Tendermint 節點都參與了。投票過程分三輪,第一輪預投票(PreVote),超過 2/3 認可後進入第二輪預提交(PreCommit),超過 2/3 認可後進入最後一輪正式提交(Commit)

TM提交Tx時依次通過Consensus Connection(一個socket連接,由abci-server提供,端口號爲46658)向ABCI-APP發送指令BeginBlock-->多次DeliverTx-->EndBlock--> Commit,提交成功後會將StateRoot(application Merkle root hash)返回給TM,TM New出一個區塊。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章