Nonce
如果地址有非空程式碼並且有人從該地址送出交易,nonce 會發生什麼?
乙太坊黃皮書指出:
nonce:一個標量值,等於從該地址發送的交易數量,或者,對於具有關聯程式碼的賬戶,該賬戶創建的合約數量。由於地址a處於狀態σ,這將正式表示為σ$$ a $$ñ。
該聲明沒有描述存在帶有程式碼的地址的私鑰的情況。此外,我還沒有找到任何禁止合約存在私鑰的聲明。直覺說,在這兩種情況下,隨機數都只是增加了,但我需要從授權來源確定這一點。
它將同時起作用。
- 當交易由私鑰簽名時,它將充當 EOA。隨機數將隨著每筆交易而增加。
- 當它作為合約被呼叫時,它將充當合約。Nonce 在創建新合約時會增加。
與其他智能合約一樣,nonce 將從 1 開始。
在乙太坊中有兩種類型的賬戶:
- 外部擁有的賬戶 (EOA)
- 合約賬戶
EOA 具有與之關聯的公鑰和私鑰,而合約賬戶沒有與之關聯的私鑰。
合約地址有一個隨機數,僅當合約創建另一個合約時才會增加,否則隨機數不會增加。
交易只能由 EOA 送出,不能由合約地址送出。合約地址可以通過消息呼叫而不是通過交易來呼叫其他合約的功能。