Solidity로 오류 처리 - 요구 vs 되돌리기 - Solidity 오류에 대해 2022년에 알아야 할 사항

1707 단어
Solidityassertrequire는 조건을 확인하는 편의 함수입니다. 조건이 충족되지 않으면 예외가 발생합니다.


필요하다



Require는 실행 시간까지 감지할 수 없는 함수에 대한 잘못된 입력 데이터의 오류 조건(예상/유효한 입력 데이터와 비교할 때)을 위해 예약되어 있습니다. 이것은 프로그래밍 언어 argot의 함수 전제 조건에 해당합니다. 컴파일러는 입력 데이터의 무한한 가능성으로 인해 도움을 줄 수 없습니다.

REQUIRE 함수가 수행할 작업
  • 사용자 입력 확인
  • 외부 계약의 응답 유효성 검사
  • 예를 들어 소유 계약 상황에서 상태 변경 작업을 실행하기 전에 상태 조건을 확인합니다
  • .
  • Require가 더 자주 사용됨
  • 함수 시작 부분에 사용
  • 오류 메시지를 반환할 수 있습니다.
  • 남은 가스를 발신자에게 환불합니다.



  • 코드 예

    contract Error {
        function errorRequire(uint _i) public pure {
          require(_i <=10, "i must be greater than 10");
          // code
        }
    }
    


    Require는 다음과 같은 조건을 검증하는 데 사용해야 합니다.
  • 입력
  • 실행 전 조건
  • 다른 함수 호출에서 반환 값



  • 돌아가는 것



    되돌리기는 비즈니스 로직에 영향을 미치는 오류 조건을 위해 예약되어 있습니다. 예를 들어 투표가 이미 마감되었을 때 누군가가 투표를 보냅니다.

    REVERT 함수가 수행할 작업
  • require()와 동일한 유형의 상황을 처리하지만 Nested If Statement와 같이 더 복잡한 논리를 사용합니다.
  • require()와 동일한 유형의 상황을 처리하지만 논리가 더 복잡합니다.
  • 실행 중단 및 상태 변경 되돌리기 사용
  • 오류 메시지를 반환할 수 있습니다.
  • 남은 가스를 발신자에게 환불합니다.

  • 코드 예

    contract Error {
        function errorRevert(uint _i) public pure {
            if (_i > 10)
                revert("Input must be greater than 10");
            );
        }
    }
    


    되돌리기는 확인할 조건이 복잡한 경우에 유용합니다. - 입력


    요약
  • require()를 사용하여 실행하기 전에 입력 및 조건의 유효성을 검사합니다.
  • revert()는 실행을 중단하고 상태 변경을 되돌리는 데 사용됩니다
  • .

    좋은 웹페이지 즐겨찾기