18일 - 진술 되돌리기

특사-VC / 30일의 견고함


스마트 계약 개발을 배우기 위한 30일간의 Solidity 단계별 가이드.




Solidity Series의 18 중 Day30입니다.
오늘은 Solidity에서 Revert 문에 대해 배웠습니다.

되돌리기 문



이 문은 require 문과 유사합니다. 어떤 조건도 평가하지 않으며 어떤 상태나 진술에 의존하지도 않습니다. 예외를 생성하고, 오류를 표시하고, 함수 호출을 되돌리는 데 사용됩니다. 이 문에는 예외 정보와 관련된 문제를 나타내는 문자열 메시지가 포함되어 있습니다. revert 문을 호출하면 예외가 발생하고 사용되지 않은 가스가 반환되며 상태가 원래 상태로 되돌아갑니다. Revert는 require 핸들과 동일한 예외 유형을 처리하는 데 사용되지만 조금 더 복잡한 논리를 사용합니다.

예시:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.7;

contract RevertStatement {
    function checkOverflow(uint256 _num1, uint256 _num2)
        public
        view
        returns (string memory, uint256)
    {
        uint256 sum = _num1 + _num2;
        if (sum < 0 || sum > 255) {
            revert(" Overflow Exist");
        } else {
            return ("No Overflow", sum);
        }
    }
}


산출:
96과 178을 checkOverflow 함수에 전달하면 "Overflow Exist"라는 메시지와 함께 예외가 발생합니다.

call to RevertStatement.checkOverflow errored: VM error: revert.

revert
    The transaction has been reverted to the initial state.
Reason provided by the contract: " Overflow Exist".
Debug the transaction to get more information.

좋은 웹페이지 즐겨찾기