인터페이스는 다른 컨트랙트에 있는 함수를 불러올 수 있는 길을 터주는 역할을 한다.
JS의 module.exports , require 와 비슷한 개념이다
인터페이스에 들어갈 함수는 { } 의 내용이 빠진채로 끝내주면 된다.
contract 인터페이슥 {
function 함수다(매개변수) public returns (uint a, uint b);
}
이렇게 인터페이스가 정의 되면 다른 컨트랙트에서 가져다가 사용할 수 있다.
contract 멸치컨트랙트 {
인터페이슥 인터컨트랙트;
인터컨트랙트.함수다(매개매개);
}
크립토좀비에서 사용하고있는 형태에 의하면
나를 가리키고 있는 주소값을 다른 주소값으로 변경할 수도 있나보다.
contract 멸치컨트랙트 {
address 남의주소 = 0xabc...
인터페이슥 인터컨트랙트 = 인터페이슥(남의주소);
}
이렇게 하면 '인터컨트랙트'는 '내'가 아닌 '0xabc...'가 기준이 되게끔 초기화된다고 한다
그래서 msg.sender가 0xabc...를 가리키게 된다
그리고 반환하는 값이 두개 이상인 경우 반환받고 싶은 것만 골라서 받을 수 있다.
contract 멸치컨트랙트 {
address 남의주소 = 0xabc...
인터페이슥 인터컨트랙트 = 인터페이슥(남의주소);
uint 골라담을변수;
(,골라담을변수) = 인터컨트랙트.함수다(매개매개);
}
이렇게 하면 '함수다' 함수는 반환하는 값이 a와 b 두개이지만
b만 '골라담을변수'에 받을 수 있다.
'솔리디티' 카테고리의 다른 글
오버플로우, 언더플로우 (0) | 2022.02.16 |
---|---|
리믹스 이더리움으로 SimpleCoin 트랜잭션 만들어보기 (0) | 2022.02.11 |
storage, memory (0) | 2022.02.11 |
구조체 (struct) (0) | 2022.02.10 |
컨트랙트 contract (0) | 2022.02.10 |
댓글