일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- Deep Dive
- 프로퍼티
- 함수
- 블록체인
- BOJ
- 정렬
- Queue
- solidity
- 파이썬
- 클로저
- react
- 리액트
- Javascript
- var
- blockchain
- let
- Python
- 딥다이브
- 알고리즘
- Algorithm
- Execution context
- 솔리디티
- 실행 컨텍스트
- Interview
- 백준
- frontend
- 변수
- git pull
- nft
- 자바스크립트
Archives
- Today
- Total
공부하자
Solidity 기초 문법 - instance 본문
instance : 하나의 contract에서 다른 contract에 접근할 때 쓰임.
정의 : (컨트랙 이름) (인스턴스 이름) = new 컨트랙이름();
contract A{
uint256 public a = 5;
function change(uint256 _value) public {
a = _value;
}
}
contract B{
A instance = new A();
function get_A() public view returns(uint256) {
return instance.a();
}
function change_A(uint256 _value) public {
instance.change(_value);
}
}
위와 같이 contract B에서 contract A에 접근하고 싶을 때는 instance 정의를 먼저 해주고, 변수 a나 change 함수에 접근 하고 싶을 때는 인스턴스의 이름(위의 예제에서는 instance)에 .을 붙이고 변수는 변수(), 함수는 change(파라미터)로 접근해주면 됩니다.
주의해야 할 점!!
instance를 만들어서 변수 a의 값을 변경한다 해도, smart contract A만 배포한 곳에는 값이 변하지 않습니다. 즉, instance는 smart contract A를 복사한 것이지 그 컨트랙에 직접 접근해 값을 바꾸는 것은 아닙니다.
constructor : 생성자, 스마트 컨트랙이 생성이나 배포 그리고 인스턴스화 될 때 초기값을 설정해주는 용도.
contract A{
string public name;
uint256 public age;
constructor(string memory _name, uint256 _age){
name = _name;
age = _age;
}
}
contract B{
A instance = new A("Alice", 52);
}
contract A에 들어있는 constructor를 보면 name과 age를 설정해주고 있습니다. 이는 contract B에서 A를 인스턴스화 할 때, 기본적으로 필요한 초기값을 설정해준 것입니다. 그래서 contract B의 A instance를 보면 "Alice"와 52라는 초기값을 넣어준 것 입니다.
도움 받은 곳 : https://dayone.tistory.com/
개인공부를 위해 위의 강의를 정리한 내용입니다.
'Solidity' 카테고리의 다른 글
Solidity 기초 문법 - event (0) | 2022.04.01 |
---|---|
Solidity 기초 문법 - 상속 (0) | 2022.03.22 |
Solidity 기초 문법 - function (0) | 2022.03.09 |
Solidity 기초 문법 - 변수만들기 (0) | 2022.03.09 |
Comments