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;
}

Untitled

上述合约的slot分配方式非预期,同样是short类型的变量,本应该package到同一个slot中的,却因为 type MyInt128 is int128 离散到了两个不同的slot中。