Fisco Bcos 答疑

矢沢心發表於2020-12-03

問:測試8的結果,叢集中有4個節點,其中當機3個,發起一筆交易,交易失敗;然後啟動當機的3個節點,還是交易失敗;但如果有一筆新的交易執行,會啟用上一筆交易(交易失敗的那一筆),最後失敗的那一筆會交易成功。這種情況下的交易原理是怎樣的?

在這裡插入圖片描述
答:不存在啟用上一筆交易的說法,鏈異常不能共識,傳送的交易能保留在活著的節點上,待鏈恢復正常後,這筆交易會繼續執行。失敗的交易應該還在交易池,當恢復正常後再打包進了區塊中,所以成功了。

問:啟動當機的3個節點,這時侯鏈恢復正常,但這筆失敗交易沒執行,而是有新一筆交易進來後,這筆失敗交易才會執行,交易成功。那麼問題是為何失敗的交易在鏈恢復正常時不立即執行,而要等到新交易後才執行?

答:這個應該跟它打包策略有關,我猜節點接收到交易後才觸發共識模組去打包,當機節點起來後應該是要定時同步交易和狀態,同步交易應該不會觸發打包。
4個節點掛了3個後,線上的那個異常節點檢視會比較大;啟動當機的三個節點後,這三個節點可以達成一致的檢視(比較小,可能是0或者1),那麼只有這三個節點可以正常打包共識區塊,所以儲存於異常節點中的交易沒有被處理;當有新的交易傳送過來時,這三個一致檢視的節點對新交易共識打包會產生新的區塊,新區塊同步到異常節點,異常節點同步區塊後,檢視歸0,這個時候異常節點變為正常的共識節點,可正常打包交易,存在該節點中的交易就會被打包共識上鍊了

相關文章