Tx Doctor / EVM 리버트 사전

EVM 트랜잭션은 왜 리버트되었나?

리버트 원인은 몇 가지뿐입니다. 컨트랙트 자체 검사 실패, 가스 소진, ERC-20 승인이나 잔액 부족, 슬리피지 한도 초과, 이미 사용된 nonce. 각 항목에서 구분법과 실제로 통하는 해결책을 설명합니다.

내 트랜잭션 진단하기

지원 체인

Ethereum 1Base 8453Arbitrum One 42161OP Mainnet 10Polygon 137BNB Chain 56

체인은 해시 자체로 판별하므로 네트워크를 잘못 고르는 일이 없습니다. 지원하지 않는 체인은 추측하지 않고 명시합니다.

실행 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는 컨트랙트마다 정의되므로 해당…