Solidity
在 Solidity 中使用 uint40 時間?
我的問題是:我應該
uint40
在 Solidity 中使用時間嗎?我見過的所有例子都使用
uint256
了時間,但是,我認為這太浪費了——雖然使用uint32
可能有點激進,因為它的 86-year-til-overflow,34K-year-till-overflow fromuint40
似乎相當安全對我來說。使用我不知道的 uint40 會不會有任何潛在的垮台?
編輯:
很抱歉之前沒有讓自己足夠清楚。考慮以下結構——
struct User { address user; // 20 bytes uint40 userRegisterTime; // 5 bytes uint40 userDepositTime; // 5 bytes uint256 userBalanceWei; // 32 bytes }
如果將兩個時間變數定義為
uint256
,則結構將需要 4 * 32 字節,而在 的情況下uint40
,前三個變數可以打包成一個 32 字節,節省 2 * 32 字節(參考,我有已驗證——https: //medium.com/@novablitz/storing-structs-is-costing-you-gas-774da988895e)大家同意嗎?
Solidity 的 VM 是 256 位的,所以 uint40 將被填充到 256 位並佔用更多的氣體
我一直在想同樣的事情。在我的情況下它是有效的,在你的情況下也是如此。
如果 34,000 年後的人們仍然使用與我們相同的技術,那麼他們無論如何都注定要失敗。:-D 所以當你的軟體停止工作時,它實際上是一個功能,而不是一個錯誤。