Lower than uint256 size storage instance variables are actually less gas efficient. E.g. using uint112 does not give any efficiency, actually, it is the opposite as EVM operates on default of 256-bit values so uint8 is more expensive in this case as it needs a conversion. It only gives improvements in cases where you can pack variables together, e.g. structs.
Handle
defsec
Vulnerability details
Impact
Lower than uint256 size storage instance variables are actually less gas efficient. E.g. using uint112 does not give any efficiency, actually, it is the opposite as EVM operates on default of 256-bit values so uint8 is more expensive in this case as it needs a conversion. It only gives improvements in cases where you can pack variables together, e.g. structs.
Proof of Concept
Tools Used
None
Recommended Mitigation Steps
Consider to review all uint types. Change them with uint256 If the integer is not necessary to present with 112.