체인의정석

스캔에 뜨지 않는 EVM 에러 코드 확인하는 법, hardhat console 사용 본문

블록체인/Ethers & web3

스캔에 뜨지 않는 EVM 에러 코드 확인하는 법, hardhat console 사용

체인의정석 2023. 3. 23. 15:57
728x90
반응형

EVM 체인을 포크해서 사용하는 경우에 에러 메세지가 안뜨는 경우가 종종 발생합니다.

이때 estimateGas를 쓰게 되면 에러 메세지를 확인할 수 있습니다. (물론 과거 상황의 에러의 경우 estimateGas를  그때 시점에서 하는 것이 아니기에 안되는 케이스도 존재합니다.)

따라서 현재 트랜잭션에서 에러가 발생했는데 tenderly나 이더스캔에서 작동을 하지 않는 경우에 에러 메세지 확인하는 법에 대해서 정리해보았습니다.

1. 원하는 네트워크 환경으로 콘솔 들어가기

먼저 에러 코드를 확인할 testNetwork 에 맞춰서 하드햇 콘솔을 띄웁니다. 그럼 콘솔창에 들어가집니다.

npx hardhat console --network testNetwork

2. 콘솔에서 트랜잭션 가져오고 gasPrice 제거하기

 tx  = await ethers.provider.getTransaction("")

다만, gasPrice가 없어야 estimateGas가 가능하기 때문에 gasPirce를 지워줘야합니다.

 delete tx.gasPrice

3. 이제 estimateGasPrice를 해줍니다.

ethers.provider.estimateGas(tx)

이렇게 해주면 에러가 날 경우 에러메세지를 확인할 수 있습니다.

 

또한 같은 원리로 콘솔창에서 바로 조회용 쿼리를 날려볼 수도 있습니다.

 

먼저 컨트렉트 정보를 가져온 후에

 test = await ethers.getContractAt("ContractName","0x...")

함수로 바로 호출을 날려주면 됩니다.

test.exampleView("address")

마찬가지로 스크립트를 작성하기 귀찮고 일회용인 경우 이렇게 콘솔창을 활용하면 편합니다.

728x90
반응형
Comments