블록체인
[ethereum] solidity overflow, underflow에 대해서
멍개.
2022. 8. 28. 07:23
solidity 8.x부터 overflow, underflow가 발생하는 연산은 revert가 발생합니다.
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.10;
contract Test {
function f(uint a, uint b) pure public returns(uint) {
return a - b;
}
}
0에서 1을 감소하면 underflow가 발생하기 때문에 revert가 발생합니다.
만약 의도적인 underflow를 발생해야 한다면 unchecked를 이용하면 됩니다.
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.10;
contract Test {
function g(uint a, uint b) pure public returns(uint) {
unchecked { return a - b; }
}
}