Payable
- State Mutability를 결정하는 함수 제어자 중 하나
- 함수 호출 시 이더(eth)를 송금해야 하는 경우 사용하는 키워드
OpenZeppelin
-
안전한 블록체인 애플리케이션을 목적으로 하는 표준 라이브러리를 제공
-
OpenZeppelin 의 Ownable 컨트랙트 사용
-
Ownable 컨트랙트는 대표적으로 다음과 같은 역할
- 컨트랙트 생성 시 컨트랙트 생성자가 owner에 msg.sender를 할당
- 특정한 함수들에 대해서 소유자만 접근할 수 있도록 onlyOwner 제어자 추가
- 새로운 소유자에게 컨트랙트의 소유권을 옮길 수 있도록 함
커스텀 함수 제어자 onlyOwner
https://github.com/OpenZeppelin/openzeppelincontracts/blob/master/contracts/access/Ownable.sol
- 아무나 참조하는 컨트랙트의 주소를 변경하게 되면 시스템이 의도한대로 동작하지 않을 수 있음
- 컨트랙트의 주인만 참조하는 컨트랙트의 주소를 변경할 수 있어야 함
- 커스텀 함수 제어자는 modifier 라는 키워드로 정의함
- modifier 내부의 _; 구문은 함수를 계속해서 실행하라는 의미
- 커스텀 함수 제어자는 인수를 가지는 경우도 있음