Transactions

帳戶隨機數限制/最大值

  • July 21, 2018

我一直在閱讀一個帳戶的隨機數,它應該是一個隨著每筆交易而增加的增量數字。我發現了關於事務池和隊列的資訊,關於如果你不發送連續的隨機數會發生什麼,但我找不到能告訴我這個隨機數是否有限制的人。

如果我繼續從一個帳戶進行交易並且我每次將 nonce 增加 1,是否會有一段時間我達到可以為一個帳戶執行的最大交易

我還認為這個隨機數可能是每個塊的,所以一旦交易被探勘,隨機數可能會重新啟動,所以不會有實際限制。但是我看到了使用 geth 的getTransactionsCount()方法來計算下一個 nonce 的例子,所以它不可能是每個塊。

只有當它的 nonce 比簽名者之前使用的 nonce 大 1 時才能探勘交易(例外是帳戶的第一個 tx,nonce 必須為零)。換句話說,只有當隨機數是簽名者創建的交易總數(不包括目前交易)時,才能探勘交易。

帳戶隨機數也沒有定義的最大值,因此它可以無限增長。當然“無限”是不現實的,所以客戶會開始崩潰。在不閱讀目前實現的情況下,我假設它們都會好起來,直到至少 2^64 的 nonce 值,這比我預期的乙太坊處理的數量級要高出幾個數量級。超過 64 位,所有客戶端實現都非常熟悉 2^256 大小的數字,因為這是 EVM 操作的,所以如果客戶端沒有為這麼大的隨機數做好準備,更新來處理它們應該是微不足道的。但是無法處理

2^64 大小 nonce 的數學運算:如果我們在去年 12 月創下每天約 130 萬次的最高交易記錄,並假設 1 個地址發送所有這些,則需要 400年才能完成 2^64 次交易,即 3是可觀測宇宙年齡的幾倍。

2^256 的數學:長話短說,1 個地址每天 130 萬筆交易的時間為 2.4*10^68 年。

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