일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 프록시배포구조
- Vue.js
- 스마트컨트렉트 함수이름 중복 호출
- ambiguous function description
- vue기초
- 스마트컨트렉트테스트
- 컨트렉트 동일한 함수이름 호출
- ethers
- multicall
- 러스트기초
- 러스트 기초 학습
- SBT표준
- ethers websocket
- 스마트컨트렉트프록시
- nestjs 튜토리얼
- rust 기초
- 깃허브명령어
- ethers type
- 머신러닝기초
- 러스트 기초
- chainlink 설명
- ethers v6
- git rebase
- ethers typescript
- 체인의정석
- nest.js설명
- 스마트 컨트렉트 함수이름 중복
- Vue
- 스마트컨트렉트 예약어 함수이름 중복
- 컨트렉트 배포 자동화
Archives
- Today
- Total
체인의정석
Solidity 0.5.0 버젼 오류해결 ) TypeError: Functions in interfaces must be declared external 본문
블록체인/Solidity
Solidity 0.5.0 버젼 오류해결 ) TypeError: Functions in interfaces must be declared external
체인의정석 2022. 1. 24. 16:54728x90
반응형
인터페이스의 경우 결국 외부에서 호출해와서 external call을 해야하는 것이기 때문에 public은 제외하고 external만 정의해야 한다.
https://github.com/ethereum/ethereum-org/issues/809
찾아보니 함수가 퍼블릭으로정의되어 있어도 external로 바꿔서 사용하라고 되어 있는데 확실한 방법을 보기 위하여 오픈 제플린을 찾아보도록 하겠다.
보면 정말 public을 인터페이스에서는 external로 정의한것을 볼 수 있었다. 이를 참고하여 코드를 수정하도록 하겠다.
최신버전도 한번 살펴보았는데
https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol
여기서도 함수는 모두 extenrnal로 정의되어 있었다.
앞으로 작성한 모든 인터페이스의 함수를 external로 설정해놔야 겠다.
어차피 인터페이스는 추상화 레벨에서 사용되는것이므로 이러한 방식을 취해야 하는것 같다.
물론 최신 버전에서는 virtural, override 개념이 있기 때문에 더 자세히 구분되는걸로 보아서 인터페이스에 대한 규격관련 사항들은 앞으로 더 엄격해지는 방향으로 업데이트가 되지 않을까 싶다.
728x90
반응형
'블록체인 > Solidity' 카테고리의 다른 글
Comments