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 |
_; 는 본문코드의 시작을 알리는 문장으로 해석하면 되겠다.
'기술 > BlockChain' 카테고리의 다른 글
[Unity+Ethereum] 유니티에서 smart contract에 이더리움 전송 개발 (1) | 2018.04.22 |
---|---|
[solidity] 솔리디티 잡지식 (0) | 2018.04.20 |
[Ethereum 개발기] Nethereum 개발기록 (0) | 2018.03.11 |