Evm

礦工拒絕交易後的無效狀態

  • July 31, 2018

我參考以下連結中的交易流程:

https://web3j.readthedocs.io/en/latest/_images/web3j_transaction.png

如果交易被傳播到其他乙太坊客戶端(還不是礦工)並且這些客戶端已經在處理交易但是當礦工處理它時,這個交易是無效的並且不包含在塊中會發生什麼。

在礦工掌握交易之前首先處理交易的其他乙太坊客戶會發生什麼?他們的狀態會怎樣?

你的事件鏈有點不正確。

當一個節點收到一個 tx 時,它們不會立即將其效果應用到它們的狀態。他們將其保存在 txpool 中,並轉發到其他節點。

僅當將 tx 探勘到一個塊中並且節點接收到該新塊時,才會應用狀態更改。

如果一個 tx 在廣播時是有效的,但由於某些原因導致它在探勘時無效,它仍然是塊的一部分。但是,由於塊是按順序處理的,塊內的事務也是按順序處理的,因此所有節點都會出現相同的 tx 無效結果,並且它們將恢復由它引起的任何更改。

一個常見的例子是 A 將他們所有的代幣轉移到 B,並讓另一個 tx 將他們所有的代幣轉移到 C。這兩個 tx 都是有效的,直到它們被探勘成塊。之後,只有按出現順序的第一個 tx 有效,第二個失敗(但仍然包含在塊中,並且在計算失敗之前仍然消耗氣體)。

引用自:https://ethereum.stackexchange.com/questions/55511