일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 러스트 기초 학습
- 스마트컨트렉트테스트
- multicall
- 스마트 컨트렉트 함수이름 중복
- ethers type
- rust 기초
- Vue.js
- ethers v6
- 깃허브명령어
- 러스트기초
- chainlink 설명
- 컨트렉트 배포 자동화
- 스마트컨트렉트프록시
- 스마트컨트렉트 함수이름 중복 호출
- nestjs 튜토리얼
- nest.js설명
- vue기초
- SBT표준
- ethers typescript
- git rebase
- 프록시배포구조
- 스마트컨트렉트 예약어 함수이름 중복
- 러스트 기초
- ethers websocket
- ethers
- ambiguous function description
- 머신러닝기초
- 체인의정석
- 컨트렉트 동일한 함수이름 호출
- Vue
Archives
- Today
- Total
체인의정석
ether.js에서 0으로 들어가는 주소 및 값 테스트 하기 본문
728x90
반응형
테스트 코드에서는 잘못된 값을 넣었을 때 실패를 반환하는지를 체크해서 알려주어야 한다.
ethers.constants.AddressZero //0x0000 형태의 주소
일단 위와 같은 제로 address의 경우 스마트컨트렉트 오딧을 받게 되면 항상 막아야 한다고 나오게 된다.
제로 address를 막는 이유는 빈값이 들어왔을 때 이를 막기 위함이 아닐까 싶다.
아무튼 주소값이 입력값으로 들어오는 경우면 위의 Addresszero를 사용하여 해당 값을 넣었을 때 false 값을 반환하는지에 대한 여부를 항상 체크해 주어야 한다.
이 외에도 bytes32형태로 값을 넣는 경우가 종종 있다. 이벤트 구독형 기능을 사용하거나 하나의 컨트렉트에 여러 세부 모듈을 다룰 때 이를 많이 사용하는데
const zero32byte = ethers.utils.hexZeroPad("0x0", 32)
위와 같이 0x00으로 zeroPad를 사용하여 32자리수를 모두 0x00으로 만들어 버릴 수 있다.
이러한 값을 사용하여 예외처리를 하는 테스트코드는 아래와 같다.
it("[Ethereum]Should revert if originToken address is zero", async () => {
await expect(bridge.mapToken(ethers.constants.AddressZero,werc721Luni.address,tokenType721)).to.be.revertedWith(
"Bridge: mapToken from the zero address"
);
})
it("[Ethereum]Should revert if wrappedToken address is zero", async () => {
await expect(bridge.mapToken(exampleERC721.address,ethers.constants.AddressZero,tokenType721)).to.be.revertedWith(
"Bridge: mapToken to the zero address"
);
})
위와 같이 0x000에 대한 주소처리를 체크하는 부분의 테스트코드를 작성하면 된다.
스마트컨트렉트는 너무나도 중요하기 때문에 이런식으로 테스트코드는 최대한 자세히 작성해야 하고 하나씩 추가될 때마다 오류를 고쳐가며 테스트 코드를 하나씩 완성시켜나가야한다.
728x90
반응형
'블록체인 > Ethers & web3' 카테고리의 다른 글
타입스크립트 백엔드와 스마트컨트렉트 연동하기 1) ABI 가져오기 (타입스크립트로 모듈 만들기) (0) | 2022.02.22 |
---|---|
hardhat에서 스마트컨트렉트 console 찍기 (0) | 2022.02.22 |
ethers를 사용하여 이미 배포된 컨트렉트에 연결하여 트랜잭션 보내기 (0) | 2022.02.18 |
스마트컨트렉트 배포 시 hardhat etherscan verify 로직 추가 (0) | 2022.02.15 |
hardhat 트랜잭션 테스트 코드 (0) | 2022.02.15 |
Comments