일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ethers typescript
- erc4337 contract
- 오블완
- 스마트컨트렉트 함수이름 중복 호출
- 체인의정석
- 스마트컨트렉트 예약어 함수이름 중복
- ethers v6
- Vue
- 스마트 컨트렉트 함수이름 중복
- ethers
- 계정추상화
- multicall
- 티스토리챌린지
- Vue.js
- vue기초
- rust 기초
- erc4337
- ambiguous function description
- git rebase
- 컨트렉트 동일한 함수이름 호출
- 머신러닝기초
- 러스트 기초 학습
- ethers type
- 컨트렉트 배포 자동화
- chainlink 설명
- SBT표준
- 스마트컨트렉트테스트
- 러스트 기초
- 러스트기초
- ethers websocket
- Today
- Total
체인의정석
ethers에 typescript 제대로 적용해보기 본문
hardhat과 typechain을 사용한 컨트랙트 개발
많은 dApp 프로젝트는 Truffle을 사용한다. Elysia에서도 기존의 스마트 컨트랙트 개발을 Truffle로 진행했다. Truffle은 solidity를 비롯한 블록체인 개발에 있어서 테스트 환경 구축, 배포 등 다양한 기능
tech.elysia.land
1. 타입스크립트를 사용하면 테스트 코드에서 타입을 가져와서 사용할 수 있다.
2. ethers에서 함수를 사용할때 그동안 any를 사용했었다. 근데 여기에 대한 타입은 어디서 가져올까?
eturn ethers.provider.getTransactionReceipt(tx)
예를들어 이렇게 Transaction 영수증을 가져오는 부분이 있다고 쳐보자
https://docs.ethers.org/v5/api/providers/types/#providers-TransactionReceipt
Types
Documentation for ethers, a complete, tiny and simple Ethereum library.
docs.ethers.org
provider.getTransactionReceipt( hash ) ⇒ Promise< TransactionReceipt >
타입을 any로 둘게 아니라 내가 사용한 모듈의 타입을 가져와서 지정해 주어야 하는 것이였다.
다음부터 any로 만들지 말고 공식 문서를 잘 찾고 거기에 해당하는 타입을 잘 잡아주어야겠다.
3. 다시 잘 살펴보니 ethers ts 모듈을 다운 받으면 이미 타입은 다 정의되어 있었다. 또한 2번에 설명한 타입들에 맞는 형태라면 any를 쓰지 않아도 오류가 나지 않았었다.
만약 명시적으로 타입을 지정해주어야 한다면 해당 모듈에 직접 들어가서 위치를 찾아서 가져오면 명시적인 타입 지정이 되지만 제대로 된 타입일 경우 내부적으로 이미 타입이 지정되고 검사까지 되므로 any를 쓸 필요가 없었다.
따라서 타입을 명시적으로 지정해야 하는 경우는 테스트 코드 또는 타입체인을 써서 이미 배포된 컨트렉트에 쉽게 테스트를 하려는 경우에 해당된다.
'블록체인 > Ethers & web3' 카테고리의 다른 글
hardhat, ethers 테스트 코드 스크립트로 바꾸는 법 (여러 지갑주소로 서명하는 스크립트 만드는법) (0) | 2023.03.11 |
---|---|
hardhat 환경에서 잘 작동하지 않는 benchmark와 그에 대한 해결 방안 (0) | 2023.02.21 |
Typescript에서 hardhat 사용하기 - task 사용하는법, config파일 밖으로 꺼내서 코드 가독성 높이는 법 (0) | 2022.12.16 |
ethers & hardhat에서 이벤트 로그 다루기 (검색부터 필터링과 decode) (1) | 2022.11.23 |
ERC20 만들고 test code까지 작성하기 (0) | 2022.08.11 |