Block-Chain/Solidity
Instance
WebDevLee
2022. 12. 28. 16:41
Solidity의 Instance에 대해 정리하였습니다.
< Instance >
Instance란 한 스마트 컨트랙트의 인스턴스(분신)를 말합니다.
Instance는 한 스마트 컨트랙트에서 다른 스마트 컨트랙트에 접근하기 위해 사용됩니다.
But, Instance는 한 스마트 컨트랙트 전부를 가져오는 것이기 때문에 Gas가 많이 소비되어 비추천하는 방식임.
- 인스턴스 생성 방법
new 인스턴스이름();
Ex) B 컨트랙트에서 A컨트랙트 함수에 접근
// SPDX-License-Identifier:GPL-30
pragma solidity >= 0.7.0 < 0.9.0;
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);
}
}
< Constructor >
constructor는 Instance의 초기값 세팅을 위해 사용됩니다.
Ex)
contract A {
string public name;
uint256 public age;
constructor(string memory _name, uint256 _age) {
name = _name;
age = _age;
}
function change(string memory _name, uint256 _age) public {
name = _name;
age = _age;
}
}
contract B {
A instance = new A("Alice", 52);
function change(string memory _name, uint256 _age) public {
instance.change(_name, _age);
}
function get() public view returns(string memory, uint256) {
return (instane.name(), instance.age());
}
}