일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 러스트기초
- 스마트컨트렉트 예약어 함수이름 중복
- 스마트 컨트렉트 함수이름 중복
- ethers
- rust 기초
- ethers type
- ethers typescript
- 스마트컨트렉트 함수이름 중복 호출
- multicall
- 프록시배포구조
- chainlink 설명
- SBT표준
- 머신러닝기초
- 러스트 기초
- 컨트렉트 동일한 함수이름 호출
- Vue.js
- ethers v6
- 티스토리챌린지
- Vue
- nest.js설명
- ethers websocket
- 체인의정석
- 컨트렉트 배포 자동화
- vue기초
- 스마트컨트렉트프록시
- git rebase
- 스마트컨트렉트테스트
- 러스트 기초 학습
- 오블완
- ambiguous function description
- Today
- Total
목록블록체인/Ethers & web3 (59)
체인의정석
오랜기간 ethers와 typescipt를 사용했었는데 ethers의 타입을 지정하는 부분이 많이 어려웠었다. 지금까지 알게 된 내용들을 한번 정리해 보려고 한다. 1. 컨트렉트 객체 생성 시에 타입 지정해 버리기 import { NonfungiblePositionManager } from '../typechain/NonfungiblePositionManager'; const nonfungiblePositionManager = await ethers.getContractAt("NonfungiblePositionManager", contractAddressNftManager, signer) as NonfungiblePositionManager; 위와 같은 형태로 typechain을 사용하면 여기서 기본적인..
hardhat config 에서 먼저 다음과 같이 네트워크와 프라이빗 키를 넣어준다. wemixTest: { url: 'https://api.test.wemix.com', accounts: [process.env.PRIVATE_KEY!,process.env.PRIVATE_KEY2!], } 해당 private key에 대한 public key를 불러오려면 다음과 같이 쓰면 된다. const signer = await ethers.getSigners(); console.log("getSigner:", signer[0].address); console.log("getSigner:", signer[1].address); 그리고 해당 signer의 경우 const contractName = await ethers..
실제로 실무를 하다보면 블록체인 서비스의 데이터를 종합하여 보고해야 하는 일이 빈번히 일어난다. 백엔드 개발과 더불어 지속적으로 들어오는 업무이므로, 뭔가 자체적인 db를 쌓기에는 반복적이지 않고 엑셀로 결과물을 정리해서 비 개발직군 분들에게 넘겨줘야 할 경우를 생각하여 프로그램을 설계해 봤다. STEP 1. 다양한 레포지토리의 컨트렉트를 하나의 경로에서 모두 관리하기 먼저 가장 귀찮았던 것은 매 컨트렉트 마다 계속해서 경로를 생성해서 처리해줘야하는 부분이였다. 이 경우 생각보다 매우 쉬운 방법이 있다. 바로 hardhat의 특징 상 기본 경로 구조 자체가 contracts에 들어가 있기 때문에 contracts 폴더의 하위 디렉터리로 각 레포지토리를 넣어주면 되는 것이였다. 예를 들어 하나의 defi ..
사용환경 : typescript, ethers, hardhat 에러 코드 및 발생 상황 : HeadersTimeoutError: Headers Timeout Error at Timeout.onParserTimeout [as _onTimeout] (/Users/chohk/Desktop/git/geteventwinner/node_modules/undici/lib/client.js:902:28) at listOnTimeout (node:internal/timers:571:11) at processTimers (node:internal/timers:512:7) { code: 'UND_ERR_HEADERS_TIMEOUT' } 만약 hardhat 환경에서 이벤트를 뽑아내거나 view를 호출하는데 양이 많거나 여러 ..
TypeError: 컨트렉트이름.함수 is not a function 위와 같은 에러가 난다면? 위에처럼 ethers에서 함수를 못 찾을 때는 일단 abi 부터 체크해 보아야 한다. 먼저 컨트렉트와 상호작용한 변수를 만들어 주면 const exampleContract = await ethers.getContractAt("exampleContract", exampleContractAddress); 이런식으로 변수를 만들어 준 후에 console.log(exampleContract.functions); 해당 변수에 담겨있는 함수들 리스트를 가져와서 내가 사용하려는 함수가 있는지 확인해 본다. 근데 만약 다시 컴파일도 하고 함수이름까지 있는데 인식이 안된다면? 이건 오버로딩 문제일 수도 있다. ethers에서..
과거 특정 시점에서의 특정 값을 조회 할 때 이벤트 말고도 조회가 가능한 방법이 있다. 바로 조회 함수에 특정 블록번호를 넣어주는 블록태그 blocktag이다. https://github.com/ethers-io/ethers.js/blob/ab319f2f4c365d4cd1b1e17e577ecd18a7a89276/packages/contracts/src.ts/index.ts#L33 GitHub - ethers-io/ethers.js: Complete Ethereum library and wallet implementation in JavaScript. Complete Ethereum library and wallet implementation in JavaScript. - GitHub - ethers-io..
web3의 getPastEvents를 ethers에서 하려면 "query filter"를 사용하면 된다고 한다. 이걸 못찾아서 노가다를 했었는데 앞으로 이걸써야지 https://docs.ethers.org/v5/api/contract/contract/#Contract-queryFilter Contract Documentation for ethers, a complete, tiny and simple Ethereum library. docs.ethers.org // Get the address of the Signer myAddress = await signer.getAddress() // '0x8ba1f109551bD432803012645Ac136ddd64DBA72' // Filter for all to..
EVM 체인을 포크해서 사용하는 경우에 에러 메세지가 안뜨는 경우가 종종 발생합니다. 이때 estimateGas를 쓰게 되면 에러 메세지를 확인할 수 있습니다. (물론 과거 상황의 에러의 경우 estimateGas를 그때 시점에서 하는 것이 아니기에 안되는 케이스도 존재합니다.) 따라서 현재 트랜잭션에서 에러가 발생했는데 tenderly나 이더스캔에서 작동을 하지 않는 경우에 에러 메세지 확인하는 법에 대해서 정리해보았습니다. 1. 원하는 네트워크 환경으로 콘솔 들어가기 먼저 에러 코드를 확인할 testNetwork 에 맞춰서 하드햇 콘솔을 띄웁니다. 그럼 콘솔창에 들어가집니다. npx hardhat console --network testNetwork 2. 콘솔에서 트랜잭션 가져오고 gasPrice 제..