Solidity
여러개의 modifier 적용 시 순서
pangyoelon
2023. 6. 15. 23:38
솔리디티의 modifier는 한 함수에 여러개 적용이 가능한데 그 순서를 알아보자
아래의 예시를 살펴보겠습니다
contract Test {
address owner;
modifier onlyOwner {
require(msg.sender == owner);
_;
}
modifier costs(uint price) {
if (msg.value >= price) {
_;
}
}
constructor() public {
owner = msg.sender;
}
function changeOwner(address newOwner) public onlyOwner costs(10) {
owner = newOwner;
}
}
여기서 먼저 앞에 나온 onlyOwner부터 적용이 됩니다
고로 [ onlyOwner의 _; == cost(10) ] 이 됩니다
function changeOwner(address newOwner) public {
require(msg.sender == owner);
if (msg.value >= price) {
owner = newOwner;
}
}
👆 모디파이어가 적용된 모습
이전에 포스팅했던 상속 순서와도 거의 똑같은 것 같다