Transactions

如果我發送一筆低gas費的交易,然後再發送另一筆高gas費的交易?

  • February 7, 2022

比方說,我發送了一筆交易,我的所有乙太幣,gas 費用很低,它需要幾個小時才能完成。我立即從同一個wallet地址或我的所有 Ether 發送另一個地址,並支付高昂的汽油費,以便在一分鐘內完成。

這稱為雙重支出還是什麼?當時間到了並且它正在由礦工或驗證者處理時,我的第一次交易會發生什麼?它將如何解決?

高gas費,一分鐘內完成

它不會。

我的第一筆交易會發生什麼

它仍然是第一。

這是熟悉的微妙之處之一。來自不同賬戶的交易以礦工決定的不確定順序進行探勘。但是,保證來自同一賬戶的交易以隨機數順序進行探勘。這樣做的一個副作用是,不僅第一筆交易需要很長時間才能探勘,而且還會阻塞隊列以及來自發件人帳戶的所有內容。

有一種取消方法,總而言之,發送另一個具有更高 gas 且與要終止的交易相同的 nonce 的交易。這將解封帳戶。“什麼都不做”或“做同樣的事情”結構通常是合適的。

這叫雙花還是什麼?

不。

雙花是允許您發送資金、接收對價並重新使用已經發送的資金的任何場景。您的方案不會產生這種情況。但是,如果您用待處理的交易(每個人都可以看到)欺騙了您的朋友,並且他們天真地接受它和確認的一樣好,那麼也許您可以收到一些東西,然後通過取消與上述方法。

一個有缺陷的契約可能允許這樣的事情發生。理論上,對交易所的中間人攻擊可能會導致他們發送一些東西,認為他們有資金但實際上並沒有,因為有人假裝是區塊鏈。在實踐中,這將很難在相當長的時間內模擬,但這種可能性暗示了他們在確認存款之前等待多次確認的原因之一。

希望能幫助到你。

一個詞回答你的問題是:“nonce”。

請記住,nonce 是一個基於 0 索引的計數器值,表示從賬戶發送的已確認和已探勘交易的數量。考慮到這一點,當您以低費用發送第一筆交易時,假設它的 nonce 為 4(這意味著您的帳戶的 nonce 為 3,它有 0 到 3 = 4 個已確認的交易,這個新交易將是第 4 個索引處的第 5 個),如果它被確認,您的帳戶 nonce 將增加到 5,然後後續交易的 nonce(在這個被確認後)必須比這個多一個。然後,你發送另一筆 Gas 價格更高的交易,它的 nonce 也是 4,因為之前的交易沒有被確認,所以賬戶 nonce 沒有增加。這筆費用更高但隨機數相同的新交易將被礦工拾取,確認並添加到區塊鏈,您賬戶的已確認交易的 nonce 將增加到 5(即該賬戶已發送 6 筆已確認交易)。現在,舊交易將變得無效,因為交易 nonce 為 4 將小於目前帳戶 nonce 和您帳戶中最近確認的交易的 nonce,即 5:當處理交易時,所有待處理的交易與 nonce低於已確認交易的 nonce 被取消。

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