[Coin] 再請教ETH交易的nonce問題

作者: overdoingism (做過頭主義)   2022-06-16 23:36:08
根據這個網站說明:
https://gitchat.csdn.net/columnTopic/5b0e4011100ce52029ab6f40
以太坊中為了防止交易重播攻擊,每筆 Transaction 都必須
有一個 Nonce 隨機數。每個賬戶從同一個節點發起交易時的
Nonce 值都是從 0 開始,發送一筆 Transaction 後 Nonce
加 1,當 Nonce 為 0 的交易處理完之後,才會處理 Nonce
為 1 的交易,並以此類推。
以下是 Nonce 使用的規則:
當 Nonce 值小於之前 Transaction 的 Nonce 值時,
交易會被直接拒絕;
當 Nonce 值過大時,Transaction
會一直處於隊列之中,等待執行;
假設賬號 C 最後一筆 Transaction 的 Nonce 值為 10,此時
發送一筆 Nonce 值為 13 的 Transaction 至節點中。此筆
交易會一直處於隊列中,不會立即打包上鍊。需要等待 Nonce
值為 11 和 12 的 Transaction 依次執行完後才會來處理這筆
Transaction。
=====
哇,我的老天,那這樣不是代表一個帳戶越使用,優先級別就越低了?
所以以太坊的用戶交易次數多了,還要換錢包嘛?
這是不是我誤會了什麼?
另外,這個 nonce 值正常人不可能去記他,
基本上要透過 Web3 API 去鍊上取得,
但在製作交易簽名的時候這個值要預先填進去,
這是不是意味著 ETH 其實無法靠冷錢包做離線簽名?
作者: rand (time(NULL))   2022-06-16 23:38:00
nonce 是跟自己比nonce 本來就可以手動填 完全離線的狀況就由自己去把 nonce填上去給太低的 nonce 會被拒絕 給太高要等前面的執行最常見的狀況就是 fee 給太低了用另外一筆同 nonce 但 fee 比較高的交易把它取代掉
作者: DarkerDuck (達克鴨)   2022-06-17 00:09:00
對啊,要取消交易就是填同一個nonce值的0值交易你的離線簽名是指sign message還是sign transaction?假如是sign message用不到nonce值假如真的要sign一個離線的transaction放很久的話那就開一個account給它專用就不用管nonce值跳動
作者: overdoingism (做過頭主義)   2022-06-17 00:17:00
sign transaction了解
作者: MACD (MACD)   2022-06-17 01:42:00
交易簽名時不用填nonce,送出時會自動抓”確認”tx nonce所以如果不是特殊操作重複送tx用比較大的gas price會蓋過pending tx
作者: wlsh5701 (舞林樹枝)   2022-06-17 02:05:00
不用填nonce是因為在signTransaction的時候會自動抓吧?在對tx簽名時裡面沒有nonce怪怪的
作者: JapaZPa4867 (落葉學系權威)   2022-06-17 05:12:00
答案文檔和黃皮書裡全都有 請認真閱讀
作者: LinuxDapp (第一次玩ptt就上手)   2022-06-19 14:43:00
請google 或是自己試

Links booklink

Contact Us: admin [ a t ] ucptt.com