Solidity

ERC20 小數和 gas 成本

  • January 7, 2020

這個問題是雙重的:

decimalsERC20 代幣的標準數量是 18。如果我們降低這個數字,我們是否可以期望在創建/轉移代幣時降低 gas 成本,因為這應該消耗更少的 EVM 記憶體?

如果是這樣,為什麼大多數代幣都遵循 18 進制標準?對於大多數案例來說,這個精度級別不必要地大,按數量級計算。

不,您不會在 EVM 中消耗更少的記憶體。

根據ERC20 規範decimals必須是uint8. 因此,實際的小數變數將始終是相同的成本。

此外,通過使用較小的decimals. 事實上,儲存較小的值(例如)甚至可能花費更多uint128。這是因為 EVM 期望看到 auint256並且如果給它任何不同的東西就必須做更多的工作。從文件

當使用小於 32 字節的元素時,您的合約的 gas 使用量可能會更高。這是因為 EVM 一次執行 32 個字節。因此,如果元素小於這個值,EVM 必須使用更多的操作才能將元素的大小從 32 字節減少到所需的大小。

規範中沒有定義使用 18 位小數,但這是常見的做法。許多 dapp 開發人員已經針對 18 位小數進行了程式,並且在許多情況下少數會導致錯誤。話雖如此,您可以使用任何您想要的數字。

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