일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 체인의정석
- 러스트기초
- 스마트컨트렉트 함수이름 중복 호출
- git rebase
- 프록시배포구조
- 스마트컨트렉트테스트
- 스마트컨트렉트프록시
- ethers typescript
- ethers
- nest.js설명
- vue기초
- 티스토리챌린지
- rust 기초
- ambiguous function description
- ethers websocket
- 오블완
- Vue
- 러스트 기초 학습
- Vue.js
- SBT표준
- ethers v6
- ethers type
- 스마트컨트렉트 예약어 함수이름 중복
- 러스트 기초
- multicall
- chainlink 설명
- 컨트렉트 동일한 함수이름 호출
- 머신러닝기초
- 스마트 컨트렉트 함수이름 중복
- 컨트렉트 배포 자동화
Archives
- Today
- Total
체인의정석
Ethers Estimate Gas & Error: execution reverted (unknown custom error) 본문
블록체인/Solidity
Ethers Estimate Gas & Error: execution reverted (unknown custom error)
체인의정석 2024. 11. 14. 12:02728x90
반응형
트랜잭션 실행 전에 먼저 아래와 같이 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
여기서 검색해서 컨버팅 하면된다.
728x90
반응형
'블록체인 > Solidity' 카테고리의 다른 글
Maker DAO Multicall , Multicall 설명 (0) | 2024.09.12 |
---|---|
Solidity 내부에서의 string과 bytes의 형변환 시 나는 오류 (0) | 2024.08.23 |
Solidity 컨트렉트에서 서명 검증하기 (4) | 2024.08.21 |
Tally와 호환되는 DAO 컨트렉트 (timelock & erc20) 구현하기 (0) | 2024.08.09 |
다양한 체인에 동일한 주소로 배포가 가능한 Create3 자세히 살펴보기 (1) | 2024.07.02 |
Comments