일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- ethers
- 깃허브명령어
- git rebase
- chainlink 설명
- ethers v6
- multicall
- 러스트 기초 학습
- 스마트컨트렉트 예약어 함수이름 중복
- SBT표준
- 스마트 컨트렉트 함수이름 중복
- 러스트기초
- Vue.js
- ambiguous function description
- 컨트렉트 동일한 함수이름 호출
- 스마트컨트렉트프록시
- 프록시배포구조
- 체인의정석
- ethers type
- 머신러닝기초
- nestjs 튜토리얼
- vue기초
- 러스트 기초
- nest.js설명
- 스마트컨트렉트테스트
- ethers typescript
- rust 기초
- ethers websocket
- 컨트렉트 배포 자동화
- Vue
- 스마트컨트렉트 함수이름 중복 호출
Archives
- Today
- Total
체인의정석
ethers에서 함수를 못찾을 때 , 오버로딩 문제 체크해 보기 본문
728x90
반응형
TypeError: 컨트렉트이름.함수 is not a function
위와 같은 에러가 난다면?
위에처럼 ethers에서 함수를 못 찾을 때는 일단 abi 부터 체크해 보아야 한다.
먼저 컨트렉트와 상호작용한 변수를 만들어 주면
const exampleContract = await ethers.getContractAt("exampleContract", exampleContractAddress);
이런식으로 변수를 만들어 준 후에
console.log(exampleContract.functions);
해당 변수에 담겨있는 함수들 리스트를 가져와서 내가 사용하려는 함수가 있는지 확인해 본다.
근데 만약 다시 컴파일도 하고 함수이름까지 있는데 인식이 안된다면?
이건 오버로딩 문제일 수도 있다.
ethers에서 소통하는 컨트렉트가 인자값이 1개인 함수, 2개인 함수가 있다고 했을 때
두 함수 중 어떤 걸 사용해 주어야 할지 명시해야 한다.
const tokenPrice = await tokenContract["examplefunction(address)"](input);
const tokenPriceV2 = await tokenContract["examplefunction(address,string)"](input,"input2");
이런식으로 examplefuntion이 같은 이름으로 2개가 정의가 되어 있고 입력 값의 개수만 다를 경우
오버로딩이 된 상황인데
이러한 경우 일반적인 호출을 하게 되면 함수를 인식하지 못하게 된다.
따라서 오버로딩 된 함수들 중 어떤 함수를 사용할 지 위와 같이 지정해서 사용해 주어야 한다.
728x90
반응형
'블록체인 > Ethers & web3' 카테고리의 다른 글
블록체인에서 발생한 이벤트 데이터 정리해서 엑셀 파일로 만들기 (ethers, hardhat, excel) (0) | 2023.07.10 |
---|---|
hardhat 에서 HeadersTimeoutError: Headers Timeout Error 해결 법 (0) | 2023.07.10 |
ethers에서 블록태그(block tag) 사용하기 (0) | 2023.05.23 |
web3의 getPastEvent가 있다면ethers에는 query filter가 있다. query filter 설명 (0) | 2023.05.15 |
스캔에 뜨지 않는 EVM 에러 코드 확인하는 법, hardhat console 사용 (0) | 2023.03.23 |
Comments