Go-Ethereum

兩個交易:相同的from,不同的to。會發生什麼?

  • May 16, 2018

讓我們想像一下,我有兩個完全相同的交易——唯一的區別是他們的to領域。第一個交易 - A, has0x1111....和第二個交易 - B, has0x22222....在該to領域。

如果我同時發送它們 - 會發生什麼?我看到兩種不同的方式:

  1. “世界”將分為兩部分:A最初收到的節點和已收到的節點B。因此,取決於“我們的”礦工在哪裡 -AB將被開採,50 / 50。
  2. 乙太坊節點允許在未確認的情況下替換交易。因此,如果尚未探勘交易,並且節點接收到新交易 - 它會替換。

還有第二個問題。讓我們將 設置gasPriceB比 大兩倍A

  1. 我正在發送A
  2. 等待例如 2 秒
  3. 發送B

有沒有B機會贏得這場比賽?我的意思是,是否有這樣的規則:“如果有來自 tx 池中某個地址的交易,但有來自同一個地址的另一筆交易並且它更昂貴- 第一個交易應該替換為第二個交易”

提前致謝!

如果我同時發送它們 - 會發生什麼?

除非新交易的 gas 價格高於某個值(預設值:10%,最小值:1%),否則節點不會替換具有相同 nonce 的交易。因此,AB將被探勘取決於礦工首先收到的交易。請注意,當節點接收到已探勘的塊時,將刪除未探勘的交易。

B有機會贏得這場比賽嗎?

是的。Account Nonce在乙太坊中用於替換未被探勘的交易。發送具有相同nonce和更高gas價格的交易將取代舊的交易。對於一個正常的案例來說,nonce每次發送一個交易都應該增加1,這樣一個賬戶可以同時發送多個交易。

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