일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 type
- chainlink 설명
- Vue.js
- 러스트 기초
- 체인의정석
- multicall
- 러스트기초
- 컨트렉트 동일한 함수이름 호출
- git rebase
- 스마트컨트렉트테스트
- vue기초
- 프록시배포구조
- 러스트 기초 학습
- rust 기초
- ethers
- nest.js설명
- SBT표준
- ethers websocket
- nestjs 튜토리얼
- Vue
- ethers v6
- ethers typescript
- 스마트컨트렉트 예약어 함수이름 중복
- ambiguous function description
- 컨트렉트 배포 자동화
- 깃허브명령어
- 스마트 컨트렉트 함수이름 중복
- 머신러닝기초
Archives
- Today
- Total
체인의정석
hardhat 트랜잭션 테스트 코드 본문
728x90
반응형
만약 로컬테스트에서는 통과를 했는데 메인넷 테스트에서 실패를 한다면?
함수를 실행하고 조회하기까지 어느정도의 시간을 넣어주어야 에러가 안 나는 경우도 있다.
await bridge.setCustody(erc721Custody.address,tokenType721);
await delay(15000);
console.log("getCustody address",await bridge.typeToCustody(tokenType721));
function delay(ms: number) {
return new Promise( resolve => setTimeout(resolve, ms) );
}
위와 같이
setCustody 함수를 실행하자마자 바로 그 결과값을 확인한다면 결과 값이 반영이 되기 전이라 조회가 잘못 될 수도 있다.
따라서 블록의 확정 시간을 고려하여서 시간을 잠깐 두고 나서 조회를 해야 한다.
함수가 쓰는 행위의 경우 동기화가 되면 차례대로 진행되지만
실제 네트워크에서 쓰자마자 값을 확인하는 행위를 체크하기 위해서는 위와 같이 어느정도의 장부에 반영되는 시간을 마련해 두는것도 필요한 것같다. 하지만 위와 같이 timeout을 주는것 대신 동기화를 해주어야 제대로 된 코드이다.
const setCustodyTx = await bridge.setCustody(erc721Custody.address,tokenType721);
await setCustodyTx.wait();
console.log("getCustody address",await bridge.typeToCustody(tokenType721));
다음과 같이 custody를 tx로 정의한 후 동기화를 시켜주면 깔끔하게 해결이 된다.
728x90
반응형
'블록체인 > Ethers & web3' 카테고리의 다른 글
ethers를 사용하여 이미 배포된 컨트렉트에 연결하여 트랜잭션 보내기 (0) | 2022.02.18 |
---|---|
스마트컨트렉트 배포 시 hardhat etherscan verify 로직 추가 (0) | 2022.02.15 |
ether.js에서 abi encode 하기 (0) | 2022.02.14 |
ethers.js에서 keccak256 사용하기 (0) | 2022.02.13 |
ether.js에서 HexPad 하기 (0) | 2022.02.11 |
Comments