fullstack

'modifier'에 해당되는 글 1건

  1. [Solidity] 함수제어자 modifier

[Solidity] 함수제어자 modifier

Web3/Solidity

contract의 소유자만 호출할 수 있는 함수를 만들고 싶다고 가정해봅시다

함수의 첫 줄에 require문을 넣어 처리할 수도 있지만 더욱 좋은 방법은 함수제어자를 사용하는 것 입니다

 

함수제어자는 다음과 같이 만들 수 있습니다

modifier onlyOwner() {
  require(msg.sender == owner);
  _;
}

함수제어자는 위와같이 function 키워드 대신 modifier 키워드를 사용합니다

그리고 require 등으로 실행조건을 체크하고, 마지막에는 _; 으로 끝나야 합니다

 

그럼 함수에서 함수제어자를 사용해 보겠습니다

function withdraw() external onlyOwner {
  owner.transfer(this.balance);
}

위에서 만든 함수제어자 onlyOwner를 함수에 붙여주었습니다

그럼 이제 withdraw 함수가 호출되면 함수제어자 onlyOwner가 실행되고,

함수제어자 내부의 _; 부분에서 함수로 되돌아와 함수가 실행되게 됩니다

이제 이 함수는 contract의 소유자만이 호출할 수 있는 함수가 되었습니다

 

함수제어자를 이용하면 이처럼 특정조건에 부합할때만 함수가 실행되도록 간편하게 설정할 수 있습니다