mirror of
https://github.com/autistic-symposium/blockchains-security-toolkit.git
synced 2025-05-13 04:02:16 -04:00
.. | ||
example.sol | ||
README.md |
overflow of numbers
tl; dr: 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;
}
}
}