Solidity
在適用時使用較小的 uint 大小是更好的做法嗎?
我對 uint 大小的理解是,較小的大小會降低 gas 成本。在我正在建構的目前 dapp 中,我正在處理時間,為此,uint32 似乎足以滿足我的目的(如果時間以秒為單位儲存,則為 136 年)。
在 Solidity 開發中使用最大 uint 大小是標準做法,還是應該在設計應用程序時考慮到合理的 int 範圍並在適用的情況下使用較小的大小。
這實際上取決於您實現它的方式。EVM 以 256 位塊為您分配新的記憶體插槽,以便聲明狀態變數。
因此,如果您這樣聲明它們:
uint32 time; uint256 money; uint32 anotherTime;
這些變數將佔用 3 個 256 位插槽:時間將創建第一個 256 位插槽並在其中佔用 32 位,金錢將不適合此插槽中的剩餘位,因此它將創建一個新的 256 位插槽並全部填充, anotherTime 將創建一個 256 位的新插槽。另一方面,
uint32 time; uint32 anotherTime; uint256 money;
這將只佔用 2 個插槽,因為編譯器可以將 time 和 anotherTime 壓縮到一個插槽中。