IT/블록체인
[Solidity] modifier
KimCookieYa
2023. 9. 4. 00:37
modifier
- 제어자(Modifier): 함수의 동작을 변경하거나 확장하기 위해 사용된다.
- modifier는 함수가 호출되기 전이나 후에 실행될 추가적인 로직을 담고 있다.
- 주로 스마트 컨트랙트의 함수가 특정 조건을 충족해야 실행될 수 있게 하거나, 상태 변경 등의 추가적인 작업을 수행하는 데 사용된다.
코드
pragma solidity ^0.8.0;
contract Ownable {
address public owner;
constructor() {
owner = msg.sender;
}
modifier onlyOwner() {
require(msg.sender == owner, "You are not the owner");
_;
}
}
contract MyContract is Ownable {
uint public x;
function setX(uint _x) public onlyOwner {
x = _x;
}
}
onlyOwner
라는 modifier가serX()
함수에 적용되어 있다.- 오직 owner만이 이 함수를 호출할 수 있다.
주요 특징
_;
코드가 있는 위치에 원래 함수의 코드가 삽입된다.- 재사용성: modifier는 한 번 정의하면 다양한 함수에서 재사용 가능하다.
장점
- 코드의 중복을 줄일 수 있다.
- 함수의 로직을 명확하게 표현할 수 있다.
- 특정 조건을 만족해야 함수가 실행되도록 설정할 수 있다.
단점
- 제어자가 복잡해지면 코드의 가독성과 유지 보수성이 떨어질 수 있다.
- 제어자의 로직에 버그가 있으면 여러 함수에 동일한 버그가 전파된다.