pragma solidity =0.8.8;
type MyInt128 is int128;
contract WastefulStorageLayout {
// slot 0
MyInt128 a;
// slot 1
MyInt128 b;
}
contract PackedStorageLayout {
// slot 0
int128 a;
// slot 0
int128 b;
}
上述合约的slot分配方式非预期,同样是short类型的变量,本应该package到同一个slot中的,却因为 type MyInt128 is int128
离散到了两个不同的slot中。