728x90
트랜잭션의 수수료는 gas의 가격과 사용된 gas를 기반으로 계산을 한다.
트랜잭션 type1의 경우에는 gasPrice * gasLimit 으로 수수료가 결정된다.
전에 사용하던 네트워크는 충분한 거래가 이루어지고 블록이 있다보니까 gasPrice의 가격이 안정화 되어있었기 때문에 gasPrice에 대한 이슈가 없었다.
새로 네트워크 생성 후 gasPrice를 기존의 2배로 여유를 주고 트랜잭션을 날릴때마다 gasPrice가 계속 올라갔다.
ethereum 공식문서를 찾아보니 gasPrice는 마지막 100개 블록의 중간값으로 결정한다고 한다.
그래서 네트워크의 최소 gasPrice를 1gwei로 설정하고 트랜잭션을 날릴때 gasPrice는 1gwei로 고정하고 사용했다.
estimateGas를 통해서 몇개의 gas를 사용할지 예측한 후 이 값의 2배를 gasLimit으로 사용했다.
그럼 수수료는 [gasPrice * 실제 사용된 gas개수] 로 계산된다.
이를 활용하여 클라이언트에 보여주는 예상 수수료와 실제 보내는 gasLimit의 양을 다르게 조절했다.
1. 클라이언트에게 보여주는 수수료
- GasPrice * EstimateGas
2. 실제 트랜잭션에 보내는 수수료
- GasPrice * (EstimateGas * 2)*
클라이언트에게는 예상 수수료보다 조금 더 나올수 있다는 문구로 알려주고 실제는 가스때문에 트랜잭션이 실패하지 않도록 위와 같이 설정했다.
728x90
'개발 > BlockChain' 카테고리의 다른 글
[Blockchain] Klaytn WebSocket 끊김 후 재연결 (spring boot) (0) | 2023.08.15 |
---|---|
[Blockchain] 언어별 web3 차이로 트랜잭션 해시값 차이 (0) | 2023.08.08 |
[Blockchain] web3j 에서 nonce값 동시성 해결 (0) | 2023.08.07 |
[BlockChain] EIP 55란? (0) | 2023.07.18 |
[BlockChain] 코인과 토큰의 차이 (0) | 2023.02.06 |