blockchains-security-toolkit/advanced_expert/vulnerabilities/overflow.md
steinkirch.eth, phd ef334243d7
Create overflow.md
2023-06-19 08:24:32 -07:00

919 B

overflow of numbers




unchecked math


  • overflow and underflow of numbers in solidity 0.8 throw an error. this can be disabled with unchecked.
  • disabling overflow / underflow check saves gas.

contract UncheckedMath {
    function add(uint x, uint y) external pure returns (uint) {
        // 22291 gas
        // return x + y;

        // 22103 gas
        unchecked {
            return x + y;
        }
    }

    function sub(uint x, uint y) external pure returns (uint) {
        // 22329 gas
        // return x - y;

        // 22147 gas
        unchecked {
            return x - y;
        }
    }

    function sumOfCubes(uint x, uint y) external pure returns (uint) {
        // Wrap complex math logic inside unchecked
        unchecked {
            uint x3 = x * x * x;
            uint y3 = y * y * y;

            return x3 + y3;
        }
    }
}