일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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기초
- Vue
- ethers type
- rust 기초
- 스마트컨트렉트 함수이름 중복 호출
- 스마트컨트렉트테스트
- SBT표준
- chainlink 설명
- Vue.js
- ambiguous function description
- 체인의정석
- 티스토리챌린지
- 프록시배포구조
- 스마트 컨트렉트 함수이름 중복
- 러스트 기초
- ethers websocket
- nest.js설명
- 러스트기초
- 스마트컨트렉트 예약어 함수이름 중복
- ethers typescript
- 러스트 기초 학습
- 머신러닝기초
- 오블완
- 스마트컨트렉트프록시
- git rebase
- multicall
- ethers v6
- ethers
- 컨트렉트 동일한 함수이름 호출
- 컨트렉트 배포 자동화
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