Tx Doctor / EVM 리버트 사전
EVM 트랜잭션은 왜 리버트되었나?
리버트 원인은 몇 가지뿐입니다. 컨트랙트 자체 검사 실패, 가스 소진, ERC-20 승인이나 잔액 부족, 슬리피지 한도 초과, 이미 사용된 nonce. 각 항목에서 구분법과 실제로 통하는 해결책을 설명합니다.
내 트랜잭션 진단하기지원 체인
체인은 해시 자체로 판별하므로 네트워크를 잘못 고르는 일이 없습니다. 지원하지 않는 체인은 추측하지 않고 명시합니다.
실행 revert(사유 문자열 없음)
EVM · reverted — 컨트랙트가 호출을 거부했고 메시지도 반환하지 않았습니다. 사유 없는 require(), 디코더가 모르는 custom error, 또는 호출 내부의 가스…
가스 부족
EVM · gas — 호출이 끝나기 전에 가스 한도를 다 써서 EVM이 모든 상태를 되돌렸습니다. 가스는 그대로 청구됩니다.
기본 가스가 너무 낮음
EVM · gas — 지정한 가스 한도가 거래 자체의 고정 비용(21,000 더하기 calldata)보다 작아 실행 전에 거부되었습니다.
가스를 낼 잔액 부족
EVM · balance — 보내는 주소가 '전송 금액 + 설정한 가격의 가스비'를 감당할 수 없어 노드가 거래를 받지 않았습니다.
Nonce가 너무 낮음
EVM · nonce — 이 nonce의 거래가 이미 채굴되어 노드가 새 거래를 중복으로 보고 버립니다.
대체 거래 수수료가 너무 낮음
EVM · nonce — 대기 중인 거래를 대체하려 했지만 새 수수료가 경쟁에서 이길 수준이 아니었습니다. 대부분의 노드는 약 10% 이상 높은 값을 요구합니다.
ERC-20 전송이 잔액 초과
EVM · token — 보내는 주소의 보유량이 요청 금액보다 적어 토큰 컨트랙트가 전송을 거부했습니다. 전송 수수료 토큰이 몫을 먼저 떼는 경우도 같습니다.
ERC-20 승인 한도 부족
EVM · token — 라우터나 컨트랙트가 그만큼 인출할 권한이 없어 transferFrom이 revert했습니다.
세이프 전송 실패(STF / TF / TransferHelper)
EVM · router — 라우터가 지갑에서 토큰을 가져가지 못했습니다. Uniswap 계열은 STF(safeTransferFrom 실패) 또는 TF, PancakeSwap은…
스왑 슬리피지 초과
EVM · DEX — 풀의 출력이 최소 수령액보다 적었거나(또는 최대 입력보다 많이 가져감) 라우터가 더 나쁜 가격에 체결하지 않고 revert했습니다.
스왑 기한 만료
EVM · DEX — 설정한 기한이 지난 뒤 거래가 채굴되어 라우터가 실행을 거부했습니다.
컨트랙트 일시정지·동결·블랙리스트
EVM · token — 토큰이나 프로토콜이 지금 의도적으로 전송을 막고 있습니다. 수수료 조정이나 재시도로 해결되지 않습니다. 제한은 컨트랙트 소유자가 설정합니다.
Solidity panic(산술·경계 오류)
EVM · Panic — 컨트랙트가 컴파일러가 삽입한 panic에 걸렸습니다. 오버플로, 0으로 나누기, 배열 범위 밖 읽기, assert() 실패입니다. 지갑이 아니라 컨트랙트…
알 수 없는 custom error selector
EVM · custom — revert 데이터가 ERC-20 / Panic 표준이 아닌 4바이트 selector로 시작합니다. custom error는 컨트랙트마다 정의되므로 해당…