[Solidity] 함수제어자 modifier
Web3/Soliditycontract의 소유자만 호출할 수 있는 함수를 만들고 싶다고 가정해봅시다
함수의 첫 줄에 require문을 넣어 처리할 수도 있지만 더욱 좋은 방법은 함수제어자를 사용하는 것 입니다
함수제어자는 다음과 같이 만들 수 있습니다
modifier onlyOwner() {
require(msg.sender == owner);
_;
}
함수제어자는 위와같이 function 키워드 대신 modifier 키워드를 사용합니다
그리고 require 등으로 실행조건을 체크하고, 마지막에는 _; 으로 끝나야 합니다
그럼 함수에서 함수제어자를 사용해 보겠습니다
function withdraw() external onlyOwner {
owner.transfer(this.balance);
}
위에서 만든 함수제어자 onlyOwner를 함수에 붙여주었습니다
그럼 이제 withdraw 함수가 호출되면 함수제어자 onlyOwner가 실행되고,
함수제어자 내부의 _; 부분에서 함수로 되돌아와 함수가 실행되게 됩니다
이제 이 함수는 contract의 소유자만이 호출할 수 있는 함수가 되었습니다
함수제어자를 이용하면 이처럼 특정조건에 부합할때만 함수가 실행되도록 간편하게 설정할 수 있습니다
'Web3 > Solidity' 카테고리의 다른 글
[Solidity] 상속, 다중상속, 함수 오버라이드(override) (0) | 2022.11.10 |
---|---|
[Solidity] error handler (require, assert, revert) (0) | 2022.11.08 |
[Solidity] view, pure 함수 (0) | 2022.11.06 |
[Solidity] 접근 제어자 (public, private, internal, external) (0) | 2022.11.05 |