Solidity - instance

RedTiger·2023년 10월 6일

Blockchain

목록 보기
3/7

instance

instance : 특정 contract에서 다른 contract에 접근할때 사용됨
contract to contract을 이어줌

constructor : instance할때, 초기값 설정

// SPDX-License-Identifier: MIT
pragma solidity >= 0.7.0 < 0.9.0; 

contract A
{


    uint256 public a = 5;
    function change(uint256 _value) public 
    {
        a = _value;
    }

    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;
    }
    // input을 받아서, name과 age에 값 저장해서 B contarct에 수정가능

}

contract B
{
    A instance = new A("alice",52); 
    // 괄호안에 초기값인 name = alice와 age = 52가 저장됨
    // instace : A의 복사본
    // 만약 A에서 a의값을 변경해도, get_A를 작동하지않으면, contract B에서 바뀐값이 작동하지않음.
    
    function get() public view returns (string memory, uint256)
    {
        returns (instance.name(), instance.age());
    }
    // B의 func get()는 instance A의 name과 age를 return하는 func

    function get_A() public view returns(uint256)
    {
        return instance.a();
    }
    // get_A : A contract의 a값사용하여 을 return하는 func

    function change_A(uint256 _value) public
    {
        instance.change(_value);
    }
    // change_A : A contract의 change func을 사용하는 func

    // instance. 을 사용하여, 다른 contarct의 변수나 함수에 접근가능
}
profile
Communication & SW

0개의 댓글