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;
        }
    }

👆 모디파이어가 적용된 모습

 

이전에 포스팅했던 상속 순서와도 거의 똑같은 것 같다