Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- blockchain
- React
- node.js
- it5
- 정보처리기사실기요약
- 콜백함수this
- git
- 카카오페이지클론
- 정보처리기사실기
- ETH
- web3.js
- ERC721
- it5분잡학사전
- Klaytn
- 노개북
- ERC-721
- 이더리움
- 솔리디티
- 2021정보처리기사실기
- github
- 카카오홈페이지클론
- 페이지클론
- 노마드코더
- npm
- 블록체인
- 정보처리기사
- 비트코인
- 클레이튼
- solidity
- Non-Blocking
Archives
- Today
- Total
Be lazy, Be crazy
constructor && Ownable 본문
728x90
반응형
Constructor개념은 많은 언어들에서 보았던 개념이다. java에서는 객체가 생성될때 제일 먼저하는 일이며 보통 값을 초기화 시켜줄 때 많이 하는 작업으로 알고있다.
solidity에서도 마찬가지로 컨트랙트가 만들어질 때 제일 먼저 실행된다고 생각하면 될 것같다.
제일먼저 실행된다 == 초기화시킨다 == 첫 변수에 내가원하는 값으로 셋팅한다.
이정도로 생각하면 코드를 보고 실행할 때 수월 할 것같다.
그렇다면 Ownable란 무엇일까요??
전글에서 배웠던 modifier개념과 owner변수를 조합해서 onlyOwner라는 modifier 생성하는 것이다.
이렇게 되면 owner = msg.sender 이 의미는 owner는 이 컨트랙트를 배포한 사람이 되는 것이다.
이 onlyOwner를 함수에 붙여서 사용하면 우리는 제한을 줄 수가있다. 배포한사람 즉 owner가 아니면 함수를 사용하지 못한다는
조건을 생성해서 실행시킬 수 있는 것이다.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.7;
contract Constructor {
address public owner; //default address(0)
uint public x; //default 0
//우리는 생성자를 통해서 owner, x값을 초기화 시킬 수 있습니다.
constructor(uint _x) {
owner = msg.sender;
x = _x;
}
}
contract Ownable {
address public owner;
constructor () {
owner = msg.sender;
}
//컨트랙을 배포한 계정만 함수를 사용할수 있는 모디파이어
modifier onlyOwner() {
require(msg.sender == owner, "caller is not owner");
_;
}
//컨트랙트 배포 계정이 소유자를 바꿔주는 함수
function setOwner(address _newOwner) external onlyOwner {
require(_newOwner != address(0), "invalid address");
owner = _newOwner;
}
}
반응형
Comments