일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- ethers typescript
- 스마트컨트렉트 예약어 함수이름 중복
- multicall
- Vue.js
- Vue
- ethers v6
- 러스트기초
- 스마트컨트렉트프록시
- rust 기초
- 스마트컨트렉트테스트
- 프록시배포구조
- git rebase
- ethers type
- 컨트렉트 배포 자동화
- chainlink 설명
- nest.js설명
- 체인의정석
- 머신러닝기초
- ambiguous function description
- 러스트 기초
- vue기초
- 티스토리챌린지
- 스마트컨트렉트 함수이름 중복 호출
- 러스트 기초 학습
- ethers
- 오블완
- SBT표준
- 스마트 컨트렉트 함수이름 중복
- 컨트렉트 동일한 함수이름 호출
- ethers websocket
Archives
- Today
- Total
체인의정석
Solidity 사용, 라이브러리를 가져와서 컨트렉트끼리 연결시키는 경우 본문
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
반응형
'블록체인 > Solidity' 카테고리의 다른 글
Comments