Web3/Solidity
[Solidity] 함수제어자 modifier
bugwasd
2022. 11. 13. 22:15
contract의 소유자만 호출할 수 있는 함수를 만들고 싶다고 가정해봅시다
함수의 첫 줄에 require문을 넣어 처리할 수도 있지만 더욱 좋은 방법은 함수제어자를 사용하는 것 입니다
함수제어자는 다음과 같이 만들 수 있습니다
modifier onlyOwner() {
require(msg.sender == owner);
_;
}
함수제어자는 위와같이 function 키워드 대신 modifier 키워드를 사용합니다
그리고 require 등으로 실행조건을 체크하고, 마지막에는 _; 으로 끝나야 합니다
그럼 함수에서 함수제어자를 사용해 보겠습니다
function withdraw() external onlyOwner {
owner.transfer(this.balance);
}
위에서 만든 함수제어자 onlyOwner를 함수에 붙여주었습니다
그럼 이제 withdraw 함수가 호출되면 함수제어자 onlyOwner가 실행되고,
함수제어자 내부의 _; 부분에서 함수로 되돌아와 함수가 실행되게 됩니다
이제 이 함수는 contract의 소유자만이 호출할 수 있는 함수가 되었습니다
함수제어자를 이용하면 이처럼 특정조건에 부합할때만 함수가 실행되도록 간편하게 설정할 수 있습니다