체인의정석

Solidity 사용, 라이브러리를 가져와서 컨트렉트끼리 연결시키는 경우 본문

블록체인/Solidity

Solidity 사용, 라이브러리를 가져와서 컨트렉트끼리 연결시키는 경우

체인의정석 2022. 3. 14. 15:40
728x90
반응형

코드리뷰 전에는 주소를 받아와서 넣어서 사용하였는데, 반복되는 사용처에는 이런식으로 사용하는 대신 인터페이스를 정의하여 사용하는 것이 더 깔끔하다.

 

라이브러리를 가져와서 컨트렉트끼리 연결시키는 경우 주소값을 받아와서 라이브러리를 정의한 후 사용하면 된다.

  IMapping mappingContract;

위와 같이 인터페이스에 해당하는 컨트렉트를 자료형으로 지정한 후 뒤에 변수를 넣으면 되는데,

  constructor(
    address mappingContractAddress
  ) public {
    mappingContract = IMapping(mappingContractAddress);
  }

위와 같이 생성자 안에서 주소를 지정하여 인터페이스 객체로 만들어 주면 된다.

 

이런식으로 만들었을 경우 조회함수와 수정함수를 넣어두어야 하는데

  function getMappingContractAddress() public view returns (address) {
    return address(mappingContract);
  }

조회의 경우 이렇게 간단하게 address(인터페이스객체) 형태로 만들면 되며

  function setMappingContractAddress(address mappingContractAddress) public onlySigner{
    mappingContract = IMapping(mappingContractAddress);
    emit MappingContractChanged(mappingContractAddress);
  }

수정의 경우 이런식으로 정의한 인터페이스에 업데이트를 해주면 된다.

728x90
반응형
Comments