일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 앵커링
- Klaytn API Service
- 제어자
- 솔리디티
- vue
- vue.js
- Klaytn
- blockchain
- nodejs
- Solidity
- Geth
- API
- 접근제어자
- 웹
- 이더리움
- web3.js
- SCN
- 프론트엔드
- web3
- geth구현
- Web
- 프레임워크
- 블록체인
- frontend
- 블록체인 구조와 이론
- 서비스체인
- javascript
- kas
- 클레이튼
- ethereum
Archives
- Today
- Total
BloCCat
Ownable.sol 본문
생성자 : 컨트랙트랑 같은 이름으로 정의하거나 constructor() 로 정의
modifier : 함수 제어자, 다른 함수들에 대한 접근을 제어하기 위해 사용되는 일종의 유사 함수.
/**
* @title Ownable
* @dev The Ownable contract has an owner address, and provides basic authorization control
* functions, this simplifies the implementation of "user permissions".
*/
contract Ownable {
address public owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev The Ownable constructor sets the original `owner` of the contract to the sender
* account.
*/
function Ownable() public {
owner = msg.sender;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(msg.sender == owner);
_;
}
/**
* @dev Allows the current owner to transfer control of the contract to a newOwner.
* @param newOwner The address to transfer ownership to.
*/
function transferOwnership(address newOwner) public onlyOwner {
require(newOwner != address(0));
OwnershipTransferred(owner, newOwner);
owner = newOwner;
}
}
- 컨트랙트의 생성자가 owner에 msg.sender(컨트랙트를 배포한 사람)를 대입
- 특정한 함수들에 대해서 오직 소유자만 접근할 수 있도록 제한 가능한 onlyOwner 제어자를 추가
- 새로운 소유자에게 해당 컨트랙트 소유권을 옮길 수 있게 함
대부분의 컨트랙트 개발자들은 첫 컨트랙트에 이 컨트랙트를 상속시킴.
contract MyContract is Ownable {
event LaughManiacally(string laughter);
// 아래 `onlyOwner`의 사용 방법을 잘 보게:
function likeABoss() external onlyOwner {
LaughManiacally("Muahahahaha");
}
}
likeBoss() 함수를 호출하면 onlyOwner의 코드가 먼저 실행되고 _;를 만나면 다시 likeBoss()로 돌아가
해당 코드 (LaughManiacally())를 실행함.
'Study > Solidity' 카테고리의 다른 글
효율적인 Contract 작성법 (2) - 가스 절약 (0) | 2021.08.30 |
---|---|
효율적인 Contract 작성법 (1) (0) | 2021.08.29 |
solidity 기초 (3) (0) | 2021.08.29 |
solidity 기초(2) (0) | 2021.08.29 |
solidity 기초 (1) (0) | 2021.08.29 |