想知道如何取消正在處理的交易和解決交易塞車,你不能不知道的 Nonce

更新於 發佈於 閱讀時間約 5 分鐘

前言

在以太坊的世界中,不知道大家是否有想過以下的問題

  • 送出去的交易是否還有機會取消
  • 送出去的交易為何會塞車?
  • 如何解決被卡住的交易?

以上這些問題,其實都與 Nonce 息息相關,接下來讓我們帶領大家認識什麼是 Nonce 以及他在以太坊中的作用吧!

💡注意: nonce 一般代表著一次性的數字,在 web3 中(可以改成在“區塊鏈世界中”,區塊鏈的搜尋量比 web3 高)常常會在很多地方看到這個詞,但是放在不同地方的意義可能都不盡相同。而本篇所要討論的是發送交易時帶上的 nonce,也就是 Ethereum 協定中原生定義的 nonce,也就是 Transaction nonce。


如何查看 Transaction Nonce?

Metamask 上查看 Transaction Nonce

raw-image


Etherscan  上查看 Transaction Nonce

raw-image


Ethereum 黃皮書對 Nonce 的定義

raw-image


  • 對以太坊的外部帳戶( EOA )地址來說, nonce 值等同於從此地址發送出並已確認的交易數。
  • 對以太坊合約帳戶( Smart Contract )地址來說,nonce 值等同於從此合約用 CREATE 這個 opcode 創建出的合約數。
    • 註 1: 用 CREATE2 opcode 產生的合約並不會更新 nonce 值。
    • 註 2: 在 EIP161 後, Smart Contract 的 Nonce 值從 1 開始起算。

補充

Nonce 值由 0 起算,也就是説對於一個 EOA 地址來說,Nonce 值為 0 的交易代表為該地址發起的第一筆交易。在 Metamask 中,Nonce 值會被自動帶上下一個可用的 Nonce 值,也就是説如果一個 EOA 地址已經發起並確認過的交易數為 3 筆時(即分別為 nonce 0, 1, 2 三筆交易),Metamask 會自動為用戶在交易中帶入下一個可用的 Nonce 值,也就是 3。 

Nonce 想解決什麼問題

TL;DR

  1. 在節點可能會無序地接收交易的情況下,nonce 能確保每個節點對於交易執行結果的一致性。
  2. 避免重放攻擊(replay attack)

在以太坊的世界中,節點可能以無序的方式接收交易,但為了確保所有節點對於每個地址的狀態都要計算出相同的結果,因此引入 Nonce 的機制來強制每個地址發出的交易必須依照順序來執行。舉例來說,Alice 有一個擁有 10 顆 ETH 的 EOA 地址,這時他發起兩筆交易轉帳給 Bob 與 Carol 各 6 顆 ETH,兩個交易的 Nonce 值分別為 0 與 1。無論哪個節點先收到由 Alice 轉帳給 Carol 的交易(也就是 Nonce 值為 1 的交易),該節點都必須等到 Alice 轉帳給 Bob 的交易成功紀錄上鏈(也就是 Nonce 值為 0 的交易),才會執行由 Alice 轉帳給 Carol 的交易。如此一來不管是哪個節點都會得到以下結果

  • Alice 與 Bob 交易成功
  • Alice 與 Carol 交易失敗


此外,由於鏈上數據是公開的,也就是說對於 Alice 轉帳給 Bob 這個行為是可以被任何人看到的。那麼以太坊要如何知道這筆交易已經被處理過,並且無法讓有心人士複製該交易並且進行重放攻擊呢?

這裡的 Nonce 機制就對執行過的交易起到的保護作用。對於在鏈上看到交易的第三者來說,除了轉帳對象以及轉帳金額一樣以外,最重要的 Nonce 值也是相同,所以就算第三者透過鏈上觀察到這筆交易的所有資訊,想對其進行重送這筆交易,也會因為該 Nonce 值已經被使用過而無法對其進行重送攻擊。


如何在 Metamask 中手動設定 Nonce 值

首先 Metamask 右上角的設定中選擇 ”進階“,把客製化 transaction nonce 的功能打開

raw-image


將來發送交易時,就能自動設定 Nonce 值

raw-image


什麼情況下需要設定 Nonce 值?

一般來說 Nonce 值會由 Metamask 動態計算而得,所以一般情況下不需要特別設定即可正常運作。


但假設今天有一筆交易已經發出去但遲遲未執行,這時有可能是你發送的 gas fee 過低,導致沒有人願意為其打包執行上鏈。而根據 Nonce 的機制,如果你繼續發送新的交易也會因為前一筆交易遲遲未打包而無法被執行。為了解決這樣的情況,我們就會需要找出 “被卡住“ 的那筆交易的 Nonce 值,並且發送一筆新交易且帶上與 "被卡住“ 的交易相同的 Nonce 值,拉高 gas fee,才能解決交易被卡住的問題。


如何取消交易?

要取消交易,我們首先必須知道什麼樣的交易可以被取消。在我們將交易送出去到上鏈打包的過程中,交易會短暫在一個地方(這裡我們稱之為交易池)等待被執行,而我們有機會取消的就是這些在交易池中等待被執行的交易,因為交易一旦執行上鏈後就無法取消。


那我們該如何取消交易池中的交易,其實與前面解決被卡住的交易是相同的道理。假設今天想取消我們發送出去的交易,那我們就必須搶在交易要上鏈執行之前,找出要取消交易的 Nonce 值,這時候我們只需要重新發送一筆交易帶上該筆交易的 Nonce 值,並提高 gas fee 來爭取優先被執行的可能。透過這種方式,我們就能夠取消在交易池中的交易。

小迷思- Transaction Nonce 是否會紀錄在鏈上?

前面有提到 Nonce 值會透過動態計算而得,屬於地址本身的屬性,並不會記錄在鏈上!


Nonce 值設定過高或過低會有什麼問題

過高

如果發送一筆交易的 Nonce 值設定過高,則會需要等待中間所有 Nonce 值的交易被打包上鏈後才會執行。

過低

如果發送一筆交易的 Nonce 值設定過低,則會因為使用無效的 Nonce 值而終止交易。


avatar-img
33會員
176內容數
我們整理了web3相關的熱門資安問題,包含加密貨幣投資詐騙、盜版NFT、空投釣魚和區塊鏈重大資安事件懶人包等等,並提供最完整的辨識方法教學,讓大家從0到1學習如何保護自己
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
防詐達人的沙龍 的其他內容
本文帶你了解不同種類的加密貨幣錢包,軟體錢包與硬體錢包又可以再細分成哪些類型,以及如何確保你的加密貨幣安全。用最安全的錢包,搭配正確的使用方式保護你的數位資產,提高全方位安全性。
想知道哪種加密貨幣錢包更安全?本文將比較硬體錢包和軟體錢包,並告訴你可以如何運用錢包保護您的數字資產。幫助你選擇適合你需求的最佳加密貨幣錢包!
Permit、Approve、Increase Allowance三個最近常見的token scam
硬體錢包的私鑰保護方式、冷儲存和多重驗證機制等特性使得他成為加密貨幣最安全的儲存方式,本篇將帶你深入瞭解硬體錢包的安全性,以及讓你更了解為什麼你該選擇硬體錢包。
想知道如何保障你的加密貨幣與數位資產安全,那你一定要了解什麼是冷錢包,如何使用硬體錢包和紙錢包,以及趨勢科技ChainSafer如何增強安全保護、避免黑客攻擊,守護你的資產!
從熱錢包到冷錢包,這篇文章將帶大家入門了解錢包種類,並分享保護數位資產的最佳方法。探索2022年最佳加密貨幣錢包,包括SecuX的Nifty、V20、W20、W10硬體錢包系列。讓你的加密貨幣在安全和便利之間達到完美平衡。開始保護你的財富,深入了解加密貨幣錢包的核心概念!
本文帶你了解不同種類的加密貨幣錢包,軟體錢包與硬體錢包又可以再細分成哪些類型,以及如何確保你的加密貨幣安全。用最安全的錢包,搭配正確的使用方式保護你的數位資產,提高全方位安全性。
想知道哪種加密貨幣錢包更安全?本文將比較硬體錢包和軟體錢包,並告訴你可以如何運用錢包保護您的數字資產。幫助你選擇適合你需求的最佳加密貨幣錢包!
Permit、Approve、Increase Allowance三個最近常見的token scam
硬體錢包的私鑰保護方式、冷儲存和多重驗證機制等特性使得他成為加密貨幣最安全的儲存方式,本篇將帶你深入瞭解硬體錢包的安全性,以及讓你更了解為什麼你該選擇硬體錢包。
想知道如何保障你的加密貨幣與數位資產安全,那你一定要了解什麼是冷錢包,如何使用硬體錢包和紙錢包,以及趨勢科技ChainSafer如何增強安全保護、避免黑客攻擊,守護你的資產!
從熱錢包到冷錢包,這篇文章將帶大家入門了解錢包種類,並分享保護數位資產的最佳方法。探索2022年最佳加密貨幣錢包,包括SecuX的Nifty、V20、W20、W10硬體錢包系列。讓你的加密貨幣在安全和便利之間達到完美平衡。開始保護你的財富,深入了解加密貨幣錢包的核心概念!
你可能也想看
Google News 追蹤
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
以太坊是一种公开的区块链网络,因此在默认情况下,其交易和账户信息是公开可见的,然而,为了提供更好的隐私保护,一些解决方案已经被开发出来,很多投资者都想要知道这个以太坊隐私解决方案是什么?下面就让小编来为大家详细介绍一下 🚀 币安 - 全球最大加密货币交易所 💥 独家优惠 💥 💰 注册即享
Thumbnail
Metamask小狐狸钱包交易堵塞?解决方法就在这里!确认是否有之前的交易在堵塞中,避免新交易排队等待。了解区块链交易顺序规则,提高gas price无法解决堵塞问题,掌握5大秘籍解决Metamask交易堵塞! 🚀 币安 - 全球最大加密货币交易所 💥 独家优惠 💥 💰 注册即享 20%
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
以太坊是一种公开的区块链网络,因此在默认情况下,其交易和账户信息是公开可见的,然而,为了提供更好的隐私保护,一些解决方案已经被开发出来,很多投资者都想要知道这个以太坊隐私解决方案是什么?下面就让小编来为大家详细介绍一下 🚀 币安 - 全球最大加密货币交易所 💥 独家优惠 💥 💰 注册即享
Thumbnail
Metamask小狐狸钱包交易堵塞?解决方法就在这里!确认是否有之前的交易在堵塞中,避免新交易排队等待。了解区块链交易顺序规则,提高gas price无法解决堵塞问题,掌握5大秘籍解决Metamask交易堵塞! 🚀 币安 - 全球最大加密货币交易所 💥 独家优惠 💥 💰 注册即享 20%