기술/BlockChain
[Solidity] Solidity 에서 Modifier와 _;의 기능
leatherjean
2018. 3. 22. 17:06
Solidity 개발을 공부하다보면 오픈소스들에 Modifier라는 생소한 문법이 보인다.
그리고 Modifier 구역을 보면 _; 라는 문장이 보이는데, 나는 이것이 뭘 뜻할지 상상이 안갔다.
열심히 공부해본 결과 Modifier는 말 그대로 모듈처럼 동기화 시키는 듯한 문법이다.
예를들어 어떤 컨트랙트에서 함수를 선언하고 그 함수가 현재 컨트랙트를 실행시킨 user만 사용가능하게 하고 싶다면,
1 2 3 4 5 6 7 8 | modifier onlyOwner{ if(msg.sender != owner) throw; _; <=== 여기에 original code가 들어간다. } function setContractInformation(string info) onlyOwner{ contractInformation = info; } | cs |
이렇게 사용할 수 있다.
modifier를 사용하지 않는다면 함수 첫머리에 if 조건문으로 걸어놓긴 하면 되지만,
이렇게 modifier를 사용하면 코드도 간결하고 유지보수도 쉽고
function에 onlyOwner가 있느냐 없느냐에 따라서
쉽게 제한사항을 파악할 수 있기 때문에 가독성도 향상된다.
위 코드는 아래처럼 해석될 수 있겠다.
1 2 3 4 | function setContractInformation(string info) onlyOwner{ if(msg.sender != owner) throw; contractInformation = info; } | cs |
_; 는 본문코드의 시작을 알리는 문장으로 해석하면 되겠다.