ABOUT ME

Today
Yesterday
Total
  • Instance
    Block-Chain/Solidity 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());
      } 
    }

     

     

     

     

     

    'Block-Chain > Solidity' 카테고리의 다른 글

    조건문 & 반복문  (0) 2023.02.15
    Mapping & Array & struct(구조체)  (0) 2023.01.16
    상속 & 이벤트  (0) 2023.01.05
    Function  (0) 2022.12.26
    Solidity란 & 기본 개념  (0) 2022.12.23

    댓글

Designed by Tistory.