일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스마트컨트렉트프록시
- vue기초
- SBT표준
- rust 기초
- multicall
- nestjs 튜토리얼
- nest.js설명
- 깃허브명령어
- ethers typescript
- chainlink 설명
- 컨트렉트 동일한 함수이름 호출
- 러스트 기초
- Vue.js
- 러스트기초
- 스마트컨트렉트 함수이름 중복 호출
- ethers websocket
- git rebase
- 체인의정석
- 러스트 기초 학습
- ethers v6
- ambiguous function description
- 스마트컨트렉트 예약어 함수이름 중복
- 컨트렉트 배포 자동화
- 스마트컨트렉트테스트
- 머신러닝기초
- ethers
- 프록시배포구조
- 스마트 컨트렉트 함수이름 중복
- ethers type
- Vue
- Today
- Total
체인의정석
배포시 회사에 이더리움 요청을 위한 gasPrice 계산하기 본문
실제 프로덕트를 배포할 단계가 오면서 가스비에 대한 산정을 해야 하는 단계에 이르렀다.
일단 먼저 usedGas를 사용하기로 하였다.
개발자 단톡방에 물어봐서 조언을 얻은 결과
1. estimateGas 로 고정 가스비 계산
( 이 경우는 이더스캔에서 확실하게 확인하였다.)
2. eth_gasPrice API 결과로 얻은 gasPrice
두 값을 곱해서 결제를 올리면 된다는 추천을 받았다.
다만, gasPrice의 값은 네트워크 상황에 따라 달라질 수 있으며, 변동값인건 어쩔 수 없으므로 보수적으로 넉넉히 받을것
또한 고정된 가스비보다 3만 정도를 더 포함시킬 것이 유의사항이다.
3만을 포함시키는 이유는 측정값보다 더 적게 나올 가능성이 있기 때문이며, 사용안된 가스는 반환되므로 큰 상관이 없다.
그리고 2번은 의외로 쉽게 구할 수 있었는데
https://ethgasstation.info/api/ethgasAPI.json?
예전부터 있었던 API를 사용해서 gasPrice를 구해오면 된다.
{"fast":370,"fastest":400,"safeLow":270,"average":300,"block_time":15.380281690140846,"blockNum":14460250,"speed":0.5719409845737478,"safeLowWait":17.5,"avgWait":3.1,"fastWait":0.5,"fastestWait":0.5,"gasPriceRange":{"4":256.3,"6":256.3,"8":256.3,"10":256.3,"20":256.3,"30":256.3,"40":256.3,"50":256.3,"60":256.3,"70":256.3,"80":256.3,"90":256.3,"100":256.3,"110":256.3,"120":256.3,"130":256.3,"140":256.3,"150":256.3,"160":256.3,"170":256.3,"180":256.3,"190":256.3,"200":256.3,"220":256.3,"240":256.3,"260":30,"270":17.5,"280":9.6,"300":3.1,"320":1.8,"340":0.9,"360":0.6,"370":0.5,"380":0.5,"400":0.5}}
보수적으로 fast 기준
400으로 잡고 계산을 하면 문서를 봤을때 *10 gwei 이므로,
https://docs.ethgasstation.info/gas-price
그리고 여기서 400은 400*10 gwei를 의미한다.
-
1 (Nano)ETHER = 0.000000001 ETHER1,000,000,000 WEI = 1 (GIGA)WEI
그러므로 1,000,000,000 * 4000 이만큼을 최종값에서 곱해주고 10**18 만큼을 나눠서 나온 소수점이 총 소모 비용이다.
이게 맞는지 검산을 해보도록 하겠다.
https://etherscan.io/tx/0xf7b9b0419fa577efdb6d2f3b2647a3a7d8d0d665f682666cd713a57778f09aa5
해당 트랜잭션을 보았을때
대략 66 wei 가 가스비이므로
Usage by Txn = 232999
Gwei = 66
wei 단위 환산 = 1000000000
232999*66*1000000000 = 1.53779E+16
0.015377 만큼이 예상 가스비이다.
가스비 산정의경우 일주일중 가장 높은 하루 평균치를 기준으로 산정하였다.
https://etherscan.io/gastracker#historicaldata
그리고 아래 양식을 바탕으로 깔끔하게 만들어서 보고 완료!
위에 서술한 로직대로 외부 API (이더스캔 또는 가스스테이션)에서 가격을 가져와서 wei단위로 환산 후에 실제로 사용된 gas 또는 estimateGas 를 곱하면 된다.
'블록체인 > Ethers & web3' 카테고리의 다른 글
멀티체인 환경의 스마트컨트렉트 테스트 시 체크리스트 (0) | 2022.04.15 |
---|---|
스마트컨트렉트 자동화 배포/설정 스크립트 짜는법 (0) | 2022.04.15 |
솔리디티 개발 점검 사항) Hardhat 테스트코드 커버리지 + 오픈 소스 넣기 (0) | 2022.04.08 |
테스트 코드 작성에 문제가 없는데 에러가 날 경우? (예외 처리를 마무리 하지 않고 테스트할 경우 오류 발생가능) (0) | 2022.04.07 |
hardhat + ether js 로 스마트컨트렉트 테스트 코드 작성할 때 알아야 할 3가지 대표 유형 (0) | 2022.03.03 |