Nonce(隨機數): 什麼是 Nonce?Nonce 是在特定密碼學、區塊鏈或智能合約情境中,預期只使用一次的唯一值。在加密貨幣領域,Nonce 通常被理解為「number used once」(只使用一次的數字)的縮寫。Nonce 可以是簡單的交易計數器、挖礦欄位、隨機值、簽章輸入值、智能合約授權 ID,或用於防止重複操作的序號。Nonce 的確切意思取決於它出現的情境。在 Ethereum 帳戶中,Nonce 可協Nonce(隨機數): 什麼是 Nonce?Nonce 是在特定密碼學、區塊鏈或智能合約情境中,預期只使用一次的唯一值。在加密貨幣領域,Nonce 通常被理解為「number used once」(只使用一次的數字)的縮寫。Nonce 可以是簡單的交易計數器、挖礦欄位、隨機值、簽章輸入值、智能合約授權 ID,或用於防止重複操作的序號。Nonce 的確切意思取決於它出現的情境。在 Ethereum 帳戶中,Nonce 可協
什麼是 Nonce?
Nonce 是在特定密碼學、區塊鏈或智能合約情境中,預期只使用一次的唯一值。在加密貨幣領域,Nonce 通常被理解為「number used once」(只使用一次的數字)的縮寫。Nonce 可以是簡單的交易計數器、挖礦欄位、隨機值、簽章輸入值、智能合約授權 ID,或用於防止重複操作的序號。Nonce 的確切意思取決於它出現的情境。在 Ethereum 帳戶中,Nonce 可協助排列交易順序,並防止同一筆已簽署交易執行超過一次。在 Bitcoin 區塊標頭中,Nonce 是礦工在尋找有效工作量證明雜湊值時會變更的欄位。在代幣許可(permit)中,Nonce 可防止同一份已簽署的核准被重複使用。在 ECDSA 簽章中,Nonce 可以是每次簽章使用的秘密值;若產生方式不當,可能導致私鑰外洩。由於同一個詞會出現在多種加密系統中,使用者應先確認討論的是哪一種 Nonce。不同用途的 Nonce 共有一個最重要的概念:唯一性。Nonce 的用途,是讓某個操作、雜湊嘗試、訊息、交易或簽章與其他項目有所區別。這種唯一性有助於防止重放攻擊、排列順序、挖礦、維持加密安全、保障合約安全、提升錢包使用便利性,以及保護私鑰。Nonce 重點整理
- Nonce 是預期在特定情境中只使用一次的值。
- Ethereum 帳戶使用 Nonce 排列交易順序,並防止交易遭到重放。
- Bitcoin 礦工會變更區塊標頭中的 Nonce,以尋找符合目標條件的工作量證明雜湊值。
- 智能合約常使用 Nonce,防止已簽署的許可、投票、領取請求與中介交易遭到重複使用。
- ERC-2612 permit 使用所有者 Nonce,防止同一個代幣核准簽章被重複使用。
- ERC-4337 智能帳戶採用更彈性的 Nonce 模型,以支援帳戶抽象工作流程。
- EIP-155 加入鏈 ID 重放保護,並與交易 Nonce 搭配運作。
- EIP-712 結構化訊息仍需要應用程式層級的 Nonce 檢查,因為型別化資料不會自動防止所有重放攻擊。
- ECDSA 簽章 Nonce 必須保密且不可重複,因為重複使用或可預測的 Nonce 模式可能暴露私鑰。
- 除非了解待處理交易與替換機制,否則使用者不應手動變更錢包 Nonce。
Nonce 為何對加密貨幣很重要
Nonce 很重要,因為區塊鏈依賴簽章、雜湊與確定性規則運作。任何看到有效數位簽章的人,都可以原封不動地複製它。多個節點都可以重新廣播同一筆交易。如果智能合約未檢查某份已簽署訊息是否使用過,就可能再次接受相同訊息。礦工可以嘗試多種雜湊輸入,以尋找有效區塊。錢包可以從同一個地址建立多筆交易,並且必須確保交易順序有效。Nonce 有助於上述系統避免混淆、重複、重放與不安全的重複使用。若沒有 Nonce,加密系統將難以分辨新的操作與遭複製的舊操作。使用者可能只核准一次代幣支出方,卻意外讓同一份簽章再次被使用。跨鏈橋可能重複處理同一則跨鏈訊息。交易可能在另一條區塊鏈上遭到重放。簽章錢包可能因密碼學 Nonce 設計不佳而洩露私鑰。Nonce 雖然只是小小的數值,卻能保護大量數位資產。Ethereum 帳戶 Nonce
Ethereum 帳戶 Nonce 是與帳戶相關聯的計數器。Ethereum 的帳戶文件說明,每個帳戶都有 Nonce 欄位,而且每個帳戶中,具有相同 Nonce 的交易只能執行一次。
對外部擁有帳戶而言,Nonce 會計算該帳戶送出的交易數量。對合約帳戶而言,Nonce 與該合約帳戶建立的合約有關。如果某地址已成功送出 25 筆交易,下一筆一般交易應使用 Nonce 25。該筆交易執行後,下一筆交易應使用 Nonce 26。這個簡單的計數器可防止同一筆交易執行兩次。它也會為同一地址的交易建立順序。一般情況下,Nonce 為 27 的交易不能在 Nonce 為 26 的交易處理前先行處理。因此,同一個錢包中有一筆交易卡住時,後續交易也可能受到阻擋。Ethereum 交易 Nonce
Ethereum 交易 Nonce 是錢包簽署的交易資料之一。Ethereum 的交易文件將 Nonce 描述為依序遞增的計數器,用來指出該交易在帳戶交易序列中的編號。
交易 Nonce 有助於產生唯一的交易雜湊值。它也會告訴網路,這筆交易在寄件者的交易序列中應位於何處。如果同一帳戶有兩筆待處理交易使用相同 Nonce,兩者就會競爭同一個位置。兩筆交易中只能有一筆執行。這就是加快或取消 Ethereum 交易的基本原理。使用者可以提交一筆使用相同 Nonce、但手續費較高的替代交易。如果替代交易獲網路接受並先被納入區塊,就會使用該 Nonce,並阻止較早送出的交易執行。這種機制很實用,但若使用者不了解待處理佇列而手動修改 Nonce,也可能造成混淆。Bitcoin 挖礦 Nonce
Bitcoin 挖礦 Nonce 與 Ethereum 帳戶 Nonce 不同。Bitcoin 的區塊鏈參考資料將區塊標頭 Nonce 描述為 32 位元的任意數字,礦工會透過變更它來修改區塊標頭雜湊值。
礦工會在變更 Nonce 及其他可調整欄位的同時,反覆對區塊標頭資料進行雜湊運算。目標是找到小於或等於目前目標門檻的雜湊值。如果礦工嘗試完所有 32 位元 Nonce 值仍找不到有效區塊,就可以更新時間,或變更 coinbase 交易,進而改變 Merkle 根。這會提供更多雜湊輸入供礦工嘗試。挖礦 Nonce 不會排列使用者交易的順序。它也不會防止錢包遭受重放攻擊。它是工作量證明搜尋變數。因此,同一個「Nonce」在不同區塊鏈與情境中可能代表截然不同的概念。工作量證明中的 Nonce
在工作量證明挖礦中,Nonce 可協助礦工產生大量不同的雜湊嘗試。只要輸入稍有改變,密碼學雜湊函數就會產生差異很大的輸出。變更 Nonce 會改變區塊標頭輸入值。輸入值改變,雜湊值也會跟著改變。礦工會持續嘗試不同的 Nonce 值,直到某個雜湊值符合網路的難度目標。在這種情境下,Nonce 並不是秘密。找到區塊後,任何人都能看到 Nonce 並驗證雜湊值。安全性來自找到有效雜湊值所需的大量運算,而非隱藏 Nonce。這與簽章 Nonce 不同,簽章 Nonce 通常必須保密。挖礦 Nonce 是公開的工作量證明搜尋工具。用於防止重放攻擊的 Nonce
防止重放攻擊是 Nonce 在加密貨幣領域最重要的用途之一。重放攻擊是指有人複製有效的已簽署操作,再次提交該操作。Nonce 會讓每個已簽署操作只能使用一次,以防止這種情況。操作執行後,Nonce 會被消耗、遞增或標記為已使用。如果有人再次提交相同的已簽署操作,Nonce 檢查就會失敗。這對交易、代幣核准、智能合約領取、治理投票、跨鏈橋訊息、錢包登入與中介交易都很重要。有效簽章可證明某個金鑰核准了某項操作。有效 Nonce 則可證明該核准尚未在此情境中被使用。安全的加密貨幣授權需要同時通過這兩項檢查。重放保護能將遭複製的簽章從嚴重威脅轉變為會被拒絕的重複操作。Nonce 與 EIP-155 鏈 ID
EIP-155 在已簽署的 Ethereum 交易資料中加入鏈 ID,增加一層重放保護。EIP-155 規範說明,這項變更能讓交易在一條區塊鏈上有效,但不會在使用不同鏈 ID 的另一條區塊鏈上生效。
這很重要,因為許多 EVM 相容鏈可能使用相似的地址格式與交易結構。交易 Nonce 可防止同一帳戶的交易在同一條鏈上執行兩次。鏈 ID 則有助於防止同一筆已簽署交易在另一條鏈上遭到重放。兩者都很重要。一筆交易在某條鏈上可能具有唯一性,但若在另一條鏈上也有效,仍可能造成風險。採用鏈資訊的簽章可降低這項風險。只要鏈的情境會影響結果,應用程式層級的簽章也應納入鏈資訊。若沒有正確的網域限制,Nonce 仍可能被移用至其他情境。EIP-712 型別化資料中的 Nonce
EIP-712 是一種簽署型別化結構資料的標準。EIP-712 規範指出,該標準本身不包含重放保護。
這表示開發者必須在驗證簽章的應用程式或智能合約中加入重放保護。型別化訊息可以包含 Nonce。合約必須檢查該 Nonce。成功執行後,合約也必須將 Nonce 標記為已使用或遞增。如果合約驗證了簽章,卻忘記更新 Nonce 狀態,同一個簽章就可能再次被使用。EIP-712 可提升可讀性並區隔簽章網域,但不能取代謹慎的 Nonce 設計。安全的型別化資料簽章應包含 Nonce、期限、鏈 ID、驗證合約,以及獲授權的確切操作。使用者應將型別化簽章視為真正的權限授予,而非無害的登入彈出視窗。ERC-2612 Permit 中的 Nonce
ERC-2612 permit 讓代幣持有者透過已簽署訊息核准支出,而不必直接在鏈上提交核准交易。ERC-2612 標準包含 nonces 函式,並指出 Nonce 對應表用於防止重放攻擊。
Permit 成功後,持有者的 Nonce 會遞增。這會使同一個 permit 簽章無法在之後再次使用。ERC-2612 也設有期限,讓已簽署的核准可以到期失效。這很重要,因為中繼者收到 permit 後,可以自行選擇何時提交。如果沒有期限,舊簽章可能會在超出使用者預期的時間內持續有效。如果沒有 Nonce,同一份核准簽章可能被反覆提交。Permit Nonce 是免 Gas 核准更安全且實用的重要原因之一。這也說明了為什麼智能合約需要建立自身的 Nonce 系統,不能只依賴一般帳戶交易 Nonce。ERC-4337 帳戶抽象中的 Nonce
ERC-4337 帳戶抽象使用 UserOperation,而非由外部擁有帳戶送出一般 Ethereum 交易。ERC-4337 規範將 UserOperation Nonce 定義為防止重放的參數。
規範也指出,簽章必須依賴鏈 ID 與 EntryPoint 地址,以防止跨鏈重放或透過多個 EntryPoint 重放。ERC-4337 支援半抽象化的 Nonce 模型。Nonce 可以拆分為金鑰與序號。如此一來,智能帳戶就能使用多個 Nonce 通道。錢包可以將一個通道用於一般交易,另一個通道用於管理或復原操作。這比單一的簡單連續計數器更具彈性。但對錢包開發者與使用者而言,這也更加複雜。帳戶抽象讓 Nonce 設計更強大,同時也提高了錢包介面清楚說明機制的必要性。Nonce 通道
Nonce 通道是在較大型的帳戶或智能帳戶設計中,彼此獨立的 Nonce 序列。Nonce 通道能讓不同類別的操作並行進行。例如,錢包可能使用一個通道處理日常支出,另一個通道處理復原操作。遊戲錢包可能使用一個通道處理頻繁的小額轉移,另一個通道處理高價值資產轉帳。訂閱錢包可能使用一個通道處理定期付款,另一個通道處理使用者管理的交易。其優點是單一操作卡住時,不會阻擋其他所有操作。風險則是使用者可能不清楚自己正在授權哪個通道。開發者必須確保每個通道仍具備完善的重放保護。錢包只應在使用者需要了解時,才說明 Nonce 通道。理想的設計應讓使用者享有彈性,又不必面對令人困惑的技術細節。連續 Nonce
連續 Nonce 是一種每次有效操作後遞增 1 的計數器。這是一般帳戶交易最常見的模式。連續 Nonce 容易稽核,因為它會建立明確順序。它也能防止同一帳戶兩筆使用相同 Nonce 的交易都執行成功。缺點是較晚的交易可能會被較早的待處理交易阻擋。這可能造成交易卡住的問題。使用者可能必須先加快或取消較早的交易,後續交易才能繼續。連續 Nonce 可靠、簡單且廣泛使用。但若系統需要同時執行多個彼此獨立的操作,這種模式的彈性較低。因此,智能合約帳戶與授權系統有時會採用其他 Nonce 模式。隨機 Nonce
隨機 Nonce 是利用隨機性產生的唯一值,而不是簡單計數器。當操作不需要嚴格排序時,隨機 Nonce 很實用。智能合約可以儲存已使用隨機 Nonce 的對應表。已簽署授權一旦使用,合約就會將該隨機 Nonce 標記為已消耗。若相同授權再次出現,合約就會拒絕。隨機 Nonce 讓多個已簽署操作可以同時存在,而不會彼此阻擋。缺點是儲存需求與隨機性品質。合約可能需要儲存大量已使用的 Nonce。錢包或應用程式也必須避免在相同情境中重複產生同一個隨機 Nonce。隨機 Nonce 彈性較高,但必須妥善追蹤。智能合約 Nonce
智能合約 Nonce 是由智能合約定義並儲存的任何 Nonce 系統。它可以是每位使用者各自的計數器。它可以是已使用訊息 ID 的對應表。它可以是空投中的領取索引。它可以是治理中的提案投票狀態。它可以是交易市場中的訂單雜湊值。它可以是跨鏈橋訊息序號。智能合約需要 Nonce,因為一般帳戶 Nonce 無法保護所有鏈下簽章或合約層級操作。如果合約接受簽章,就必須判斷該簽章是否已經使用過。良好的智能合約 Nonce 設計能防止重複執行,同時讓使用者體驗易於管理。錢包登入訊息中的 Nonce
即使不會發生鏈上交易,錢包登入訊息也常會使用 Nonce。網站可能要求使用者簽署訊息,以證明其控制某個錢包地址。網站應為每次登入嘗試產生新的挑戰 Nonce。已簽署訊息應包含網域、Nonce、簽發時間、到期時間與用途。登入成功後,伺服器應將該 Nonce 標記為已使用。如果攻擊者竊取舊的登入簽章,已使用的 Nonce 應能防止重放。若沒有新的 Nonce,登入簽章可能會變成可重複使用的密碼。這很危險,因為使用者常把訊息簽署看得比交易不重要。錢包登入 Nonce 是帳戶安全的一環。良好的登入簽章應具體、有效期短、權限有限,且容易閱讀。ECDSA 簽章中的 Nonce
ECDSA 簽章會為每則訊息使用一個秘密值,通常稱為 Nonce 或簽章 Nonce。這種 Nonce 與帳戶交易 Nonce 不同。每次簽章都必須使用保密且唯一的值。RFC 6979 定義了DSA 與 ECDSA 簽章產生的確定性方法,可避免每次簽章都依賴新生成的隨機值。
NIST 的FIPS 186-5 數位簽章標準指出,ECDSA 在產生簽章時會使用每則訊息專屬的秘密數值。
如果 ECDSA Nonce 重複使用或可預測,攻擊者可能得以還原私鑰。近期關於實際區塊鏈活動中 ECDSA Nonce 碰撞風險的研究,凸顯 Nonce 產生不當可能造成災難性後果。
這是 Nonce 在加密貨幣安全領域最嚴重的含義之一。帳戶 Nonce 不正確可能導致交易失敗或卡住。ECDSA 簽章 Nonce 不正確則可能暴露整個錢包。加密中的 Nonce
部分加密系統也會使用 Nonce。在附加驗證的加密中,即使同一個金鑰用於多則訊息,Nonce 也能協助產生唯一的加密輸出。RFC 5116 定義了附加資料認證加密(AEAD)的介面,並討論使用 Nonce 的 AEAD 演算法。
加密貨幣錢包、加密備份、安全通訊系統與託管軟體,可能會在內部使用加密 Nonce。這些加密 Nonce 與區塊鏈交易 Nonce 不同。它們是密碼學訊息保護機制的一部分。對許多加密方案而言,在相同金鑰下重複使用 Nonce 可能很危險。使用者通常不需要手動管理這類 Nonce。開發者與錢包程式庫必須妥善處理。安全的加密軟體會將 Nonce 產生視為關鍵安全細節。Nonce 與 Salt 的差異
Nonce 與 Salt 是相關概念,但兩者並不相同。Nonce 通常是為了在協議或簽章情境中只使用一次而設計的唯一值。Salt 通常是加入雜湊、密碼處理、承諾或地址計算中的隨機或唯一資料,用來讓輸出有所區別。在加密貨幣領域,Salt 可用於確定性部署合約或推導承諾值。Nonce 則可用於排列交易順序或防止重放。兩者都能增加唯一性。差別在於各自扮演的安全角色。Salt 常用來防止預先計算,或讓推導值具備唯一性。Nonce 常用來防止重複使用,或讓協議操作具有新鮮性。開發者應清楚命名並說明這些值,以避免安全設計錯誤。Nonce 與交易雜湊值的差異
Nonce 與交易雜湊值並不相同。Nonce 是交易或協議訊息中的輸入值。交易雜湊值則是對已簽署交易資料進行雜湊運算後產生的識別碼。變更 Nonce 會改變已簽署交易,因此也會改變交易雜湊值。交易尚未挖出區塊前,錢包就可能會使用 Nonce。交易廣播或納入區塊後,區塊鏈瀏覽器通常會顯示交易雜湊值。Nonce 會告訴網路該交易在寄件者交易序列中的位置。交易雜湊值則可協助使用者尋找並驗證交易紀錄。兩者都很重要,但用途不同。混淆兩者可能讓交易問題更難排查。Nonce 與 Gas 的差異
Nonce 不是 Gas。Gas 用來衡量運算工作量與交易執行成本。Nonce 用來識別交易順序或唯一性。交易可以使用正確的 Nonce,但 Gas 不足或手續費太低。交易也可能 Gas 充足,但 Nonce 錯誤。這些問題會造成不同類型的失敗。Gas 問題可能導致執行失敗,或降低交易被優先納入的機會。Nonce 問題則可能讓交易遭拒、被替換、延遲,或因較早的待處理交易而受阻。使用者常會在進階錢包工具中看到這兩項設定。不應隨意修改任一設定。Nonce 與合約地址建立
Nonce 也可能影響合約地址。在 Ethereum 類型的系統中,透過傳統 create 操作建立的合約,其地址是根據建立者地址與建立者 Nonce 推導而得。因此,同一帳戶會隨著 Nonce 改變而建立不同的合約地址。開發者在部署合約、測試部署或預測地址時,必須了解這點。如果預期 Nonce 與帳戶實際 Nonce 不同,合約部署腳本可能會失敗。待處理交易可能改變部署順序。手動設定 Nonce 出錯,可能導致合約部署至非預期地址。確定性部署方法可以使用其他機制,但一般部署仍需要妥善管理 Nonce。重要部署應使用受控的部署腳本,並在公布地址前加以驗證。部署地址錯誤可能讓使用者混淆,並破壞整合功能。Nonce 與卡住的交易
交易卡住的常見原因,是手續費過低的交易一直處於待處理狀態。如果該交易使用帳戶的下一個 Nonce,後續交易就可能被擋在後面等待。這是因為連續 Nonce 要求先處理較早的 Nonce 順位。即使後續交易的手續費很高,錢包仍可能顯示其待處理中。真正的問題可能是較早、Nonce 較低的交易。使用者通常可以透過同一個 Nonce、較高手續費的替代交易,加快卡住的交易。使用者通常也可以透過同一個 Nonce、較高手續費的無害替代交易來取消卡住的交易。進行這些操作時必須小心。替換錯誤的 Nonce 可能會取消或覆蓋使用者原本仍想執行的操作。對新手而言,Nonce 疑難排解也是進階錢包設定可能帶來風險的原因之一。Nonce 與交易替換
交易替換是使用相同 Nonce 來取代一筆待處理交易。替代交易會與原交易競爭同一個 Nonce 順位。如果替代交易獲接受並先獲確認,原交易就會因該 Nonce 已被使用而失效。使用者想提高緩慢交易的手續費時,可以使用這種方式。使用者想在待處理交易確認前取消它時,也可以使用這種方式。交易替換不代表區塊鏈會刪除已確認的交易。只有在原交易仍處於待處理狀態時,替換才有效。交易一旦確認,Nonce 就會被消耗。此後,使用者便不能再用該 Nonce 送出另一筆交易。因此,管理待處理交易時,時機很重要。Nonce 與跨鏈橋
跨鏈橋會使用 Nonce 或訊息 ID,防止同一則跨鏈訊息被處理兩次。跨鏈橋訊息可能代表代幣入金、提領、鑄造、銷毀或合約呼叫。如果目的鏈多次接受同一則訊息,資產可能會被錯誤地釋出或鑄造。安全的跨鏈橋訊息應包含來源鏈、目的鏈、來源合約、目的合約、寄件者、收件者、數量,以及唯一的 Nonce 或訊息 ID。目的合約應將該訊息標記為已處理。若有人重新提交同一則訊息,合約應予以拒絕。由於跨鏈橋連接不同的共識系統,因此 Nonce 設計尤其重要。跨鏈橋的重放防護失效,可能在多條鏈上造成系統性風險。使用者應將跨鏈橋安全與代幣本身的安全分開看待。代幣本身可能可靠,但跨鏈橋訊息系統仍可能不安全。Nonce 與治理
治理系統會使用類似 Nonce 的狀態,防止投票、委託與提案執行遭到重複處理。一般而言,依據投票權快照或明確定義的投票規則,每張選票只能計算一次。除非設計明確允許,已簽署的委託不應永久重複使用。除非合約刻意支援重複執行,提案操作就不應執行兩次。治理訊息可能需要包含提案 ID、投票者 Nonce、鏈 ID、期限與執行狀態檢查。當治理系統控制資金庫、升級、手續費、風險參數或跨鏈橋連線時,這尤其重要。遭重放的治理操作,可能比付款失敗更危險。它可能改變整個協議的規則。完善的治理合約會將重放保護視為核心安全功能。謹慎的投票者會在核准前檢查自己簽署的操作。Nonce 與空投領取
空投與獎勵系統常使用類似 Nonce 的保護機制,防止重複領取。合約可以記錄某個地址是否已領取。合約可以記錄某個 Merkle 領取索引是否已使用。合約也可以使用包含 Nonce、活動 ID、代幣數量、期限與收件地址的已簽署領取訊息。如果缺少這類保護,同一筆有效領取可能被重複使用,直到獎勵被領完。良好的領取系統會將領取權限綁定至正確的使用者、活動、鏈、代幣、數量與有效期間。使用者簽署不熟悉網站提供的領取訊息時應保持謹慎。若訊息內容具有誤導性,領取簽章可能授予超出單純領取獎勵的權限。Nonce 保護可防止重複使用,但無法讓第一次使用惡意簽章變得安全。錢包介面仍必須清楚呈現簽署內容。Nonce 與 DeFi
DeFi 在許多不易察覺的地方使用 Nonce。代幣 permit 會使用 Nonce 處理已簽署核准。中介交易會使用 Nonce 處理免 Gas 操作。借貸協議可能使用 Nonce 處理已簽署的委託或信用核准。去中心化訂單系統可能使用 Nonce 或訂單雜湊值,防止已成交訂單再次成交。選擇權、金庫與結構型產品可能會在鏈下報價或結算訊息中使用 Nonce。強制平倉機器人與交易系統也必須妥善管理帳戶 Nonce,因為卡住的交易可能阻擋有時效性的操作。在 DeFi 中,Nonce 錯誤可能很快造成金錢損失。過期的核准簽章可能造成錢包資產遭竊風險。未更新 Nonce 狀態可能讓合約遭到重放。交易 Nonce 錯誤可能導致原本有利可圖的交易失敗。Nonce 與 NFT
NFT 系統也會在交易市場掛單、出價、permit、領取與簽章轉帳中使用 Nonce。賣家可能會簽署一筆鏈下 NFT 賣單。交易市場合約必須防止同一筆已簽署訂單超出允許次數成交。這可以透過訂單 Nonce、訂單雜湊值、取消計數器或成交狀態對應表實現。如果 NFT 訂單在售出或取消後仍可重放,賣家可能會意外失去資產。如果出價簽章在條件變更後仍可重放,出價者可能買下已不打算購買的項目。NFT 簽章應包含收藏品合約地址、Token ID、價格、幣別、買方或賣方條件、到期時間、鏈 ID 與 Nonce。使用者不應簽署含糊不清的 NFT 掛單訊息。必要時也應取消舊掛單。Nonce 安全是交易市場安全的一部分。Nonce 與私鑰安全
在簽章演算法中,Nonce 品質可能直接影響私鑰安全。這對 ECDSA 系統尤其重要。如果兩則不同訊息重複使用同一個 ECDSA 簽章 Nonce,私鑰可能遭到還原。在某些情況下,如果簽章 Nonce 遵循可預測的模式,攻擊者也可能還原金鑰。因此,錢包開發者會依賴經審查的密碼學程式庫。除非經過密碼學專家審查,否則使用者不應為高價值錢包自行建立簽章軟體。交易 Nonce 錯誤可能容易察覺,也可能修正。簽章 Nonce 錯誤則可能在不易察覺的情況下洩露私鑰。硬體錢包與成熟的軟體程式庫有助於降低這項風險。密碼學 Nonce 產生不能走捷徑。加密貨幣中的常見 Nonce 類型
- 帳戶 Nonce 用於排列區塊鏈帳戶的交易順序。
- 交易 Nonce 會納入已簽署交易資料中,讓交易具備唯一性。
- 挖礦 Nonce 由工作量證明礦工調整,以搜尋有效區塊雜湊值。
- Permit Nonce 可防止已簽署代幣核准被重複使用。
- 智能合約 Nonce 可防止合約層級授權遭到重複執行。
- 跨鏈橋訊息 Nonce 可防止同一則跨鏈訊息被處理兩次。
- 登入 Nonce 可產生新的錢包驗證挑戰。
- 簽章 Nonce 是部分數位簽章演算法使用的每則訊息專屬秘密值。
- 加密 Nonce 可協助相同金鑰下的加密訊息具備唯一性。
- Nonce 通道是部分智能帳戶設計使用的獨立 Nonce 序列。
Nonce 常見錯誤
一個常見錯誤,是認為所有 Nonce 都代表相同概念。另一個錯誤,是未檢查待處理交易便手動修改交易 Nonce。第三個錯誤,是簽署未包含 Nonce 的型別化資料。第四個錯誤,是驗證智能合約簽章後,忘記將 Nonce 標記為已使用。第五個錯誤,是使用 Nonce 時未加入鏈 ID 或驗證合約網域區隔。第六個錯誤,是以為 EIP-712 會自動提供重放保護。第七個錯誤,是使用品質不佳的隨機性來產生隨機 Nonce。第八個錯誤,是重複使用或暴露 ECDSA 簽章 Nonce。第九個錯誤,是以為 Nonce 可以防止網路釣魚。第十個錯誤,是合約升級時忘記遷移 Nonce 狀態。開發者最佳實務
撰寫程式碼前,先定義 Nonce 的用途。需要嚴格排序時,使用連續 Nonce。若彼此獨立的授權需要並行執行,使用隨機 Nonce 或對應表型的 Nonce。若簽署資料的情境涉及鏈資訊,請納入鏈 ID 與驗證合約地址。為鏈下簽章加入期限或有效期間。成功執行時,將 Nonce 標記為已使用。在單元測試與整合測試中測試重放嘗試。使用經審查的密碼學程式庫處理簽章與加密 Nonce。除非自訂 ECDSA Nonce 產生方式依據經充分審查的標準,否則應避免自行實作。清楚記錄 Nonce 的運作方式,讓錢包、索引器、稽核人員與使用者都能理解。使用者最佳實務
除非了解待處理交易順序,否則讓錢包管理一般交易 Nonce。同一個錢包送出多筆新交易前,先確認是否有交易卡住。替換交易時,謹慎使用加速或取消功能。簽署代幣 permit 訊息前,先仔細閱讀內容。核准簽章前,檢查支出方、數量、鏈、期限與應用程式。不要簽署來自可疑網域的錢包登入訊息。不要因為訊息簽章不會立即轉移資金,就認定它安全。使用可信任的錢包軟體,避免使用來路不明的簽章工具。妥善保護存有大量資產的硬體錢包與復原方式。請記住,Nonce 保護能防止重複使用,但無法讓不良簽章變得無害。Nonce 最重要的情境
當簽章可以轉移價值或變更重要狀態時,Nonce 最為重要。一般區塊鏈交易需要 Nonce。透過 permit 核准代幣支出時,需要 Nonce。簽署交易市場訂單時,需要 Nonce。提交跨鏈橋訊息時,需要 Nonce。投票或簽署治理委託時,需要 Nonce。領取空投或獎勵時,需要 Nonce。使用錢包簽章登入時,需要 Nonce。產生 ECDSA 簽章時,需要 Nonce。只要重複使用、重放或可預測性可能造成財務損失,就需要 Nonce。一句話了解 Nonce
Nonce 是在區塊鏈、密碼學或智能合約情境中只使用一次的唯一值,可用於排列交易順序、工作量證明挖礦、防止重放、保障簽章與加密安全,並確保錢包可靠運作。常見問題
加密貨幣中的 Nonce 是什麼意思?
Nonce 是在特定加密貨幣情境中只使用一次的唯一值,例如交易計數器、挖礦欄位、已簽署訊息 ID 或密碼學簽章值。什麼是 Ethereum Nonce?
Ethereum Nonce 是協助排列帳戶交易順序,並防止同一交易 Nonce 被執行兩次的計數器。什麼是 Bitcoin Nonce?
Bitcoin Nonce 是區塊標頭中的欄位,礦工會變更它,以搜尋符合網路目標的工作量證明雜湊值。錢包為什麼使用 Nonce?
錢包使用 Nonce 建立有效的交易序列、防止重放、替換待處理交易,並追蹤下一筆應執行的交易。我可以手動變更 Nonce 嗎?
可以,有些錢包允許手動編輯 Nonce,但使用者只應在了解待處理交易與替換規則後才這麼做。兩筆交易使用相同 Nonce 時會發生什麼事?
同一寄件者與相同 Nonce 的交易中只能有一筆執行,因此兩筆交易會競爭同一個位置。為什麼我的交易會因 Nonce 而卡住?
如果較早且 Nonce 較低的交易仍在待處理,後續交易就可能受阻。Nonce 如何防止重放攻擊?
Nonce 會讓已簽署操作只能使用一次,並讓系統在 Nonce 被消耗後拒絕相同 Nonce,藉此防止重放攻擊。EIP-712 會自動處理 Nonce 嗎?
不會。EIP-712 會建立型別化資料結構,但開發者仍須在合約或應用程式中加入並強制執行 Nonce 檢查。什麼是 permit Nonce?
Permit Nonce 是代幣持有者使用的 Nonce,可防止同一份已簽署代幣核准被提交超過一次。什麼是簽章 Nonce?
簽章 Nonce 是部分簽章演算法使用的每則訊息專屬秘密值,若處理不當,可能導致私鑰外洩。Nonce 一定要保密嗎?
不一定。帳戶 Nonce 與挖礦 Nonce 通常是公開的,但部分密碼學簽章 Nonce 必須保密。結論
Nonce 這個簡短詞彙,在加密貨幣領域有幾種重要含義。Nonce 的核心概念是唯一性。這種唯一性可協助加密系統區分不同的交易、訊息、簽章、雜湊嘗試或合約操作。在 Ethereum 中,帳戶 Nonce 會排列交易順序,並防止同一筆交易執行兩次。在 Bitcoin 挖礦中,區塊標頭 Nonce 提供礦工可變更的變數,讓他們搜尋有效的工作量證明雜湊值。在智能合約中,Nonce 可防止已簽署的許可、領取、投票、訂單與跨鏈橋訊息遭到重放。在帳戶抽象中,更具彈性的 Nonce 模型讓智能錢包能支援並行工作流程與進階授權邏輯。在 ECDSA 簽章中,Nonce 品質可能決定私鑰是否安全,或是否能被攻擊者還原。這些含義有共同原則,但運作機制並不相同。挖礦 Nonce 是公開且會反覆測試的。帳戶 Nonce 是公開且依序遞增的。合約 Nonce 可以是已儲存的計數器或已使用訊息對應表。Permit Nonce 用來保護已簽署核准。簽章 Nonce 必須保密,並以安全方式產生。因此,每當出現這個詞時,都必須了解它所處的情境。對使用者而言,最實用的 Nonce 原則是:除非確實需要手動操作,否則讓錢包處理一般交易排序。使用者應謹慎處理卡住的交易、加速交易、取消操作與手動 Nonce 設定。也應仔細閱讀簽章要求,因為鏈下訊息即使包含 Nonce,仍可能授權有害操作。對開發者而言,最重要的 Nonce 原則是明確設計重放保護。每個可轉移價值或變更重要狀態的簽章,都應包含 Nonce、網域,以及適用時的期限與清楚的操作細節。合約應檢查 Nonce,並正確消耗它。錢包應以淺白文字向使用者顯示其授權內容。密碼學程式碼應使用經審查的程式庫與安全的 Nonce 產生方法。開發時看似微小的 Nonce 錯誤,在部署後可能造成嚴重後果。缺少 Nonce 檢查可能讓人重複領取或核准。帳戶 Nonce 錯誤可能阻擋交易。品質不佳的 ECDSA Nonce 可能暴露私鑰。缺少鏈 ID 可能導致跨鏈重放。未妥善追蹤 Nonce 的跨鏈橋訊息可能被處理兩次。因此,Nonce 安全不是可有可無的技術裝飾。它是加密資產得以轉移、合約得以執行、礦工得以搜尋、錢包得以簽章,以及使用者能相信一次核准只代表一次預期操作的基礎之一。您可能也喜歡
WhatsMiner M30S++
什麼是 WhatsMiner M30S++? WhatsMiner M30S++ 是 MicroBT 推出的 ASIC Bitcoin 礦機,專為 SHA-256 工作量證明挖礦設計。 它屬於 WhatsMiner M30 系列,主要透過礦池挖掘 Bitcoin。 ASIC 礦機是專門用來高效率執行單一類型運算的設備。 對 WhatsMiner M30S++ 而言,這項運算就是 SHA-256 雜
2026/10/15 11:08
Web3 網域
什麼是 Web3 網域? Web3 網域是以區塊鏈為基礎的名稱,可取代冗長的錢包地址、指向去中心化內容、代表鏈上身分,並將使用者連接至 Web3 應用程式。 使用者不必將加密貨幣傳送至冗長的十六進位地址,而可傳送至易讀的名稱,例如區塊鏈使用者名稱或網域。 Web3 網域也能儲存錢包地址、網站內容、個人資料、文字紀錄、頭像資訊及其他與身分相關的資訊。 官方 ENS 文件將 ENS 描述為去中心化自主
2026/10/15 11:08
Web3 專案
什麼是 Web3 專案? Web3 專案是以區塊鏈為基礎的應用程式、協議、工具、網路及社群,運用去中心化技術讓使用者對資產、身分、資料、參與及數位價值擁有更多控制權。 Web3 專案可以是第一層區塊鏈(Layer 1)、第二層網路(Layer 2)、DeFi 協議、錢包、NFT 平台、DAO、區塊鏈遊戲、去中心化身分系統、預言機網路、跨鏈橋、穩定幣應用程式、DePIN 網路、分析工具、開發者框架或
2026/10/15 11:06
熱門
目前熱門備受市場關注的加密貨幣
最高成交量
按交易量計算交易量最大的加密貨幣

