17일차 - 성명서 주장

특사-VC / 30일의 견고함


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




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

주장 진술



구문은 require 문과 유사합니다. 조건 평가 후 부울 값을 반환합니다. 반환 값에 따라 프로그램은 실행을 계속하거나 예외를 throw합니다. 사용하지 않은 가스를 반환하는 대신 assert 문은 전체 가스 공급을 소비하고 상태를 원래 상태로 되돌립니다. Assert는 계약을 실행하기 전에 현재 상태 및 기능 조건을 확인하는 데 사용됩니다. 다음은 어설션 유형 예외가 있는 몇 가지 경우입니다.
  • 결과가 false인 조건으로 어설션이 호출된 경우.
  • 함수의 0으로 초기화된 변수가 호출될 때.
  • 크거나 음수 값이 enum으로 변환되는 경우.
  • 값을 0으로 나누거나 모듈로로 나누는 경우.
  • 너무 크거나 음수인 인덱스의 배열에 액세스할 때.

  • 통사론:

    assert(condition);
    


    예시:

    // SPDX-License-Identifier: MIT
    
    pragma solidity ^0.8.7;
    
    contract ErrorsAndChecks {
        bool result;
    
        function assertStatement(uint256 _num1, uint256 _num2) public {
            uint256 sum = _num1 + _num2;
            assert(sum <= 255);
            result = true;
        }
    
        function checkAssert() public view returns (string memory) {
            if (result == true) {
                return "No Overflow";
            } else {
                return "Overflow exist";
            }
        }
    }
    


    산출:
    입력을 78 및 84로 전달한 다음 checkAssert 함수를 실행하면 다음과 같은 출력이 표시됩니다.

    0 : string: No Overflow
    


    합계 = 78 + 84 = 162는 255보다 작거나 같습니다.

    입력을 198 및 84로 전달한 다음 checkAssert 함수를 실행하면 다음과 같은 출력이 표시됩니다.

    0 : string: No Overflow
    


    합계 = 198 + 84 = 282는 255보다 큽니다.

    좋은 웹페이지 즐겨찾기