체인의정석

Ethers Estimate Gas & Error: execution reverted (unknown custom error) 본문

블록체인/Solidity

Ethers Estimate Gas & Error: execution reverted (unknown custom error)

체인의정석 2024. 11. 14. 12:02
728x90
반응형

트랜잭션 실행 전에 먼저 아래와 같이 estimateGas를 쓰면 트랜잭션을 보내기 전에 오류 메세지를 받아올 수 있다.

contract.someMethod.estimateGas(arg0, arg2)

그런데

Error: execution reverted (unknown custom error)

이런식으로 에러가 날 수 있다.

Error: execution reverted (unknown custom error) (action="estimateGas", data="0xe2517d3f0000000000000000000000001ff0718d46e7d2b30995e52caf83b5f1916a975b2aeb38be3df14d720aeb10a2de6df09b0fb3cd5c5ec256283a22d4593110ca40", reason=null, transaction={ "data": "0x94a16c78000000000000000000000000000000000000000000000000000000000000000b000000000000000000000000de3ed9f4fa84fdc0a3a989cc27ce6ee0f959e146000000000000000000000000e73337842f319eaea8ee169c509bf40c64cdfb99000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000002540be40000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000f57b226465736372697074696f6e223a22467269656e646c79204f70656e536561204372656174757265207468617420656e6a6f7973206c6f6e67207377696d7320696e20746865206f6365616e2e222c2265787465726e616c5f75726c223a2268747470733a2f2f6f70656e7365616372656174757265732e696f2f33222c22696d616765223a2268747470733a2f2f73746f726167652e676f6f676c65617069732e636f6d2f6f70656e7365612d70726f642e61707073706f742e636f6d2f70756666732f332e706e67222c226e616d65223a2244617665205374617262656c6c79222c2261747472696275746573223a22227d0000000000000000000000", "from": "0x1fF0718d46E7d2b30995e52caf83B5f1916A975B", "to": "0x783677D00636160BE9E3E9a559D4Cb715D4C32bB" }, invocation=null, revert=null, code=CALL_EXCEPTION, version=6.13.1)

그럼 여기서 디코딩을 해야하는데 디코딩의 경우 일반적인 툴로는 안된다.

일단 먼저 funcsig를 검색해준다.

https://www.4byte.directory/signatures/?bytes4_signature=e2517d3f

그러면 어떤 함수에서 난 에러 메세지인지 볼 수 있는데 

이런식으로 함수를 직접 찾아가서 data에 뜬 값들의 뒤에 부분, account와 role 부분을 빼서 디버깅을 하면된다.

 

만약 자료형이 string이라면?
https://etherscan.io/utf8converter

 

UTF8 Converter | Etherscan

UTF8 Conversion in the Ethereum Network.

etherscan.io

여기서 검색해서 컨버팅 하면된다.

728x90
반응형
Comments