일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- vue기초
- ethers type
- ethers v6
- 스마트컨트렉트테스트
- 프록시배포구조
- 스마트 컨트렉트 함수이름 중복
- 체인의정석
- 스마트컨트렉트 함수이름 중복 호출
- 스마트컨트렉트 예약어 함수이름 중복
- Vue.js
- 오블완
- ethers websocket
- 컨트렉트 동일한 함수이름 호출
- 러스트 기초 학습
- chainlink 설명
- ethers typescript
- 티스토리챌린지
- ethers
- multicall
- git rebase
- nest.js설명
- 머신러닝기초
- rust 기초
- 컨트렉트 배포 자동화
- 스마트컨트렉트프록시
- SBT표준
- 러스트기초
- 러스트 기초
- ambiguous function description
- Vue
Archives
- Today
- Total
체인의정석
smart contract에서 동일한 함수 이름이나 예약어가 있을 경우 본문
728x90
반응형
account abstraction의 기본 예제에서는 getAddress라는 컨트렉트 함수가 있어 ethers.js의 getAddress가 대신 호출되어 오류가 난다. 또한 erc721 기본 예제에서도 함수이름은 동일하나 파라미터 개수만 다른 safeTransferFrom과 같은 함수가 존재한다.
이러한 함수들을 그냥 호출하려고 하면
"TypeError: ambiguous function description (i.e. matches "safeTransferFrom(address,address,uint256)", "safeTransferFrom(address,address,uint256,bytes)") (argument="key", value="safeTransferFrom", code=INVALID_ARGUMENT, version=6.13.2)"
이런 오류가 발생하게 된다.
이러한 경우 직접적으로 해당 ABI를 지정해서 호출해 주면 해결이 된다.
await expect(NFT["safeTransferFrom(address,address,uint256)"](account1.address, account2.address, 1)).to.be.reverted;
await expect(NFT["safeTransferFrom(address,address,uint256,bytes)"](account1.address, account2.address, 1, "0x")).to.be.reverted;
이런식으로 NFT라는 contractFactory에 원래는 NFT.safeTranferFrom()을 써서 함수를 호출했다면 해당 케이스에서는 함수명과 변수명을 같이 지정하여 호출해주면 해결 가능하다.
728x90
반응형
'블록체인 > 퍼블릭 블록체인' 카테고리의 다른 글
ERC4337 + Pass Key, 계정추상화에 패스키 적용하기 (0) | 2024.10.14 |
---|---|
smart contract에서 동일한 함수 이름이나 예약어가 있을 경우 (0) | 2024.09.30 |
다중 체인 환경 hardhat써서 로컬에서 테스트하기 (0) | 2024.06.24 |
폴리곤 Polygon amoy 테스트넷 사용방법 (0) | 2024.06.05 |
AVAX 아발란체 테스트넷 사용법 (0) | 2024.06.05 |
Comments