[Solidity] 수정자

bolee·2022년 4월 22일
0

솔리디티(Solidity)

목록 보기
1/8
post-thumbnail

블록체인 기반 애플리케이션에서는 신뢰(규칙으로 표현되는)를 위반하는 트랜잭션을 되돌리거나 중단시켜 허가 받지 않은 트랜잭션이 블록체인의 변조 불가능 장부에 포함되는 것을 방지해야 한다.

솔라디티는 이러한 신뢰 요구 조건을 다를 여러 가지 언어적 기능과 함수를 제공한다.

언어적 기능

modifier

  • 확인(verify)해야 할 접근 통제 규칙을 명시하고 신뢰와 프라이버시를 구축하기 위해 누가 데이터와 함수에 대한 통제권을 갖는지 관리한다.
  • 가시성 수정자(visibility modifier)와 구분행서 데이터와 함수의 액세스 수정자(access modifier)라고 부르기도 한다.

함수

require(condition, "<error_message>")

  • 파라미터로 전달된 조건을 검증(validate)하고 만약 실패할 경우 함수를 중단한다.
  • <error_message>의 경우 필수적인 파라미터가 아니어서 안적어줘도 된다.
  • 조건이 false일 경우 에러가 발생하는데, 이때 함수가 실행이 안된만큼 gas를 환불해준다.
  • 파라미터의 일반적 검증을 위해 공통으로 사용한다.
  • if + revert() 같은 함수

revert("<error_message>")

  • 트랜잭션을 중단(revert)시키고, 블록체인에 기록되는 것을 막아준다.
  • <error_message>의 경우 필수적인 파라미터가 아니어서 안적어줘도 된다.
  • 에러가 날 경우 함수가 실행이 안된만큼 gas를 환불해준다.
  • 보통 수정자 정의에 사용한다.

assert(condition)

  • 변수의 조건이나 함수의 실행 과정에서 데이터를 검증하는데, 만일 실패할 경우 트랜잭션을 되돌린다.
  • 조건이 false일 경우 에러가 발생하는데, 이때 require() 또는 revert()와 다르게 gas를 다 소비한다. 즉, gas를 환불시켜주지 않는다. (버전 0.7.x 이하)
  • 버전 0.8.x의 경우 에러 발생 시 gas를 환불시켜 준다.
  • 어떤 조건을 만족시키지 못해서 예외 상태가 일어나지 않도록 하기 위해 사용한다.
  • 또는 일반적으로 코드가 심각하게 잘못 실행될 때 사용한다.

0개의 댓글