[Solidity] Function Modifier

냐옹·2023년 7월 31일

Solidity

목록 보기
4/13
post-thumbnail
특징설명
코드 재사용Modifier는 여러 함수에 걸쳐서 공통적으로 사용되는 로직을 재사용할 수 있게 해줍니다.
가독성 향상Modifier의 이름을 통해 해당 함수가 어떤 전제 조건하에 동작하는지 쉽게 이해할 수 있습니다.
유연성Modifier 내에서 _를 사용하면 원래 함수의 코드가 어느 위치에 삽입될지 정할 수 있습니다. 이를 통해 함수의 실행 전후에 원하는 로직을 삽입할 수 있습니다.
조건 체크Modifier는 함수가 실행되기 전에 특정 조건을 검사하는 데 주로 사용됩니다. 만약 조건이 만족되지 않으면 함수는 실행되지 않습니다.

Function Modifier

Function Modifier는 함수에 미리 정의된 로직을 적용할 수 있게 해주는 기능입니다. 이것을 통해서 반복적인 코드를 줄이고 가독성을 높일 수 있습니다.

다음은 예시 입니다.

contract MyContract {
    address public owner;
    
    constructor() public {
        owner = msg.sender;
    }
    
    modifier onlyOwner {
        require(msg.sender == owner, "Not the owner!");
        _;
    }
    
    function changeOwner(address _newOwner) public onlyOwner {
        owner = _newOwner;
    }
}

위에서 보면 onlyOwner Modifier는 changeOwner 함수가 실행되기 전에 msg.sender가 현재 컨트랙트의 owner와 같은지 확인합니다. require문이 참이면 원래의 함수코드 owner = _newOwner;가 실행되고 거짓이면 에러메세지를 출력하고 함수 실행을 중지시킵니다.

_; 기호는 Modifier의 코드 내에서 원래 함수의 코드가 삽입될 위치를 표시합니다. 이 위치에 원래 함수의 로직이 삽입되어 실행됩니다.

따라서 Modifier는 특정 함수의 실행 전후에 원하는 로직을 삽입하거나, 특정 조건을 만족하는 경우에만 함수가 실행되도록 하는 기능 등을 수행합니다. 이것을 통해서 코드의 가독성과 재사용성을 높일 수 있습니다.

0개의 댓글