WATS Wallet logoWATS Wallet
기술8분 분량

암호화폐 지갑 오류 메시지 해설: Execution Reverted, Nonce Too Low, Blockhash Not Found (EVM, Solana, TON)

"execution reverted", "nonce too low", "Blockhash not found", AA21, TON 종료 코드 37을 찾아보세요. EVM, Solana, TON 오류가 각각 무엇을 뜻하는지, 시도에 네트워크 수수료가 들었는지, 해결 방법은 무엇인지 정리했습니다.

WATS Wallet을 만든 Alltoscan LLC 작성 편집 정책

게시일 업데이트

2026년 10월 기준으로 대부분의 지갑 오류는 두 부류로 나뉩니다. "nonce too low", "replacement transaction underpriced", "insufficient funds for gas * price + value", Solana의 "Transaction simulation failed: Blockhash not found"처럼 트랜잭션이 블록에 포함되기 전에 발생하는 오류는 온체인에 아무것도 기록되지 않았고 네트워크 수수료도 들지 않았다는 뜻입니다. EVM 트랜잭션이 리버트되었거나 가스가 부족했거나, Solana 트랜잭션이 오류와 함께 반영되었거나, TON 컴퓨트 단계가 실패한 경우처럼 포함된 이후의 실패는 수행된 작업에 대한 수수료가 그대로 소모됩니다. 아래 표에서 정확한 문자열을 찾아 의미와 해결 방법을 확인하세요.

실패한 트랜잭션에 수수료가 들었나요? 먼저 확인할 한 가지 규칙

실패한 트랜잭션은 실패하기 전에 블록에 포함된 경우에만 네트워크 수수료가 듭니다.

트랜잭션은 두 시점에서 실패할 수 있습니다.

  • 포함 전: 지갑의 시뮬레이션, RPC 노드 또는 멤풀이 거부합니다. 블록에 도달한 것이 없으므로 네트워크 수수료는 들지 않습니다.
  • 포함 후: 트랜잭션이 블록에 들어가 코드가 실행되다가 실패합니다. 수행된 작업에 대한 수수료가 소모됩니다. Etherscan은 연산이 사용되었기 때문에 실패한 트랜잭션에서도 가스가 차감된다고 설명하며, Solana의 수수료 문서도 트랜잭션이 실패해도 수수료는 그대로 청구된다고 밝힙니다.

어느 경우인지 확인하려면 블록 탐색기에서 트랜잭션 해시나 서명을 검색하세요. 몇 분이 지나도 기록이 없다면 보통 반영되지 않았고 비용도 들지 않은 것입니다. Pending 상태는 아직 포함되지 않았다는 뜻입니다. Failed 또는 Reverted로 표시되거나 0이 아닌 종료 코드가 있는 기록은 반영되었고 수수료가 소모되었다는 뜻입니다.

"nonce too low", "underpriced", "out of gas"는 어떤 EVM 오류인가요?

이 문자열들은 go-ethereum 클라이언트 소스에 나오는 정확한 문자열이며, 대부분 트랜잭션이 블록에 도달하기 전에 거부되었다는 뜻입니다.

정확한 오류의미네트워크 수수료 발생?해결 방법
"nonce too low"이 번호의 트랜잭션이 이미 확정되었으며 지갑 상태가 오래됨아니요지갑을 다시 동기화하고 탐색기를 확인하세요. 의도한 작업이 이미 실행되지 않았을 때만 다시 보내세요
"replacement transaction underpriced" 오류가속 또는 취소에 사용한 수수료 인상 폭이 너무 작음아니요더 많이 올리세요. Geth의 기본값은 10%를 요구합니다
"max fee per gas less than block base fee" 오류최대 수수료가 현재 기본 수수료(base fee)보다 낮음아니요최대 수수료를 올리세요
"insufficient funds for gas * price + value" 오류네이티브 코인이 금액과 최대 가스를 합친 것을 감당하지 못함아니요네이티브 코인을 충전하세요. 토큰은 있지만 가스 토큰이 없을 때를 참고하세요
"already known"같은 트랜잭션이 이미 멤풀에 있음아니요기다리세요. 해롭지 않습니다
"out of gas"실행이 가스 한도를 넘었으며 변경 사항은 취소됨예더 높은 가스 한도로 다시 시도하세요

"execution reverted"는 무슨 뜻인가요?

"Execution reverted"는 스마트 컨트랙트가 작업을 거부하고 자신이 한 모든 변경을 되돌렸다는 뜻입니다. 두 시점에 나타나며 수수료는 시점에 따라 다릅니다.

지갑의 전송 전 추정 단계에서 나타났다면 아무것도 전송되지 않았고 수수료도 들지 않았습니다. 트랜잭션이 반영되었다면 Etherscan은 이를 Fail 또는 Reverted로 표시하며, Alchemy에 따르면 보낸 사람은 사용된 가스에 대한 비용을 여전히 냅니다. 콜론 뒤의 문구가 실제 이유입니다. 흔한 예는 다음과 같습니다.

  • "UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT": 서명한 시점과 포함된 시점 사이에 가격이 슬리피지 한도를 넘어 움직였습니다.
  • "ERC20: insufficient allowance": 토큰 승인 금액이 사용하려는 금액보다 작습니다. 비슷한 "ERC20: transfer amount exceeds balance"는 옮기려는 양보다 토큰을 적게 보유하고 있다는 뜻입니다.

두 ERC-20 문자열은 OpenZeppelin v4 컨트랙트에서 나온 것이며, 더 새로운 버전은 이름이 다른 커스텀 오류를 사용합니다.

ERC-4337 AA 코드와 EIP-7702 오류는 무슨 뜻인가요?

스마트 컨트랙트 계정은 일반 트랜잭션 대신 번들러를 통해 UserOperation을 보내며, EIP-4337 명세는 EntryPoint 오류 메시지가 AA## 형식의 코드로 시작한다고 규정합니다.

코드의미네트워크 수수료 발생?
AA21 didn't pay prefund페이마스터를 사용하지 않았고, 계정의 EntryPoint 예치금이 최대 가스를 감당하지 못함아니요
AA23 reverted계정의 검증 코드가 작업을 거부함아니요
AA33 reverted페이마스터의 검증이 작업을 거부함아니요
AA95 out of gas번들의 가스 한도가 작업 또는 하위 호출에 비해 너무 낮았음보통 아니요. handleOps가 리버트됨

EIP-4337 명세는 시뮬레이션이 리버트되는 작업을 번들러가 버려야 한다고 규정하므로, 검증 실패(AA2x와 AA3x)는 보통 온체인에 아무것도 남기지 않습니다. 작업이 포함되었고 주 호출이 리버트되면, 가스는 계정 또는 이를 후원한 페이마스터가 온체인에서 그대로 냅니다. Alchemy는 AA95가 보통 가스 한도가 너무 낮게 설정되었다는 뜻이라고 설명합니다. handleOps가 리버트되므로 더 높은 가스 한도(번들러 또는 SDK 설정)로 다시 시도하세요.

EIP-7702는 노드에서 볼 수 있는 오류를 하나 추가합니다. "in-flight transaction limit reached for delegated accounts"입니다(Geth의 풀은 이런 계정에 대해 실행 가능한 대기 트랜잭션을 하나만 받으므로 그것이 처리되기를 기다리세요). 체인 ID나 nonce가 잘못된 authorization은 조용히 건너뛰어지므로, 위임이 적용되지 않은 채 트랜잭션이 성공할 수 있습니다. 의도적으로 계정을 위임한 적이 없다면 위임을 확인하고 취소하세요. 예상하지 못한 위임은 드레이너의 신호입니다.

Solana의 "Blockhash not found"와 "block height exceeded"는 무슨 뜻인가요?

"Block height exceeded"는 blockhash가 만료되었다는 뜻이고, "Blockhash not found"는 노드가 blockhash를 인식하지 못했다는 뜻입니다(대개 만료, 가끔 노드의 지연). 두 경우 모두 트랜잭션은 보통 처리되지 않았습니다. Solana의 확정 가이드에 따르면 blockhash는 약 151개 블록, 대략 60초에서 90초 동안 유효하며, 만료된 트랜잭션은 더 이상 처리될 수 없습니다.

정확한 오류의미네트워크 수수료 발생?해결 방법
"Transaction simulation failed: Blockhash not found" 오류blockhash가 너무 오래되었거나, 시뮬레이션한 노드가 아직 그것을 보지 못함아니요새 blockhash를 받도록 다시 시도하세요
"block height exceeded" 오류 (TransactionExpiredBlockheightExceededError)blockhash가 만료되기 전에 반영되지 않음아니요. 만료 직전에 반영되었다면 예외이니 서명을 확인하세요탐색기에서 서명을 확인한 뒤 다시 시도하세요
"Transaction simulation failed: Error processing Instruction N: custom program error: 0x..." 오류프로그램이 스왑 슬리피지 같은 실패를 예측함아니요. 전송 전 시뮬레이션에서 걸러진 경우에 한함. 지갑이나 앱이 시뮬레이션을 건너뛰면 트랜잭션이 Failed로 반영되어 수수료가 소모될 수 있음이유를 읽고 슬리피지나 금액을 조정하세요
"Attempt to debit an account but found no record of a prior credit." 오류수수료를 내는 계정에 SOL이 전혀 없음아니요SOL을 충전하세요
"Transaction results in an account (0) with insufficient funds for rent" 오류전송하면 계정이 렌트 면제 최소 금액 아래로 떨어짐아니요. 시뮬레이션에서 걸러진 경우에 한함. 시뮬레이션을 건너뛰면 Failed로 반영되어 수수료가 들 수 있음조금 덜 보내세요. Solana 렌트를 참고하세요
탐색기에 "Failed"로 표시반영되었고 프로그램이 오류를 반환함예탐색기 로그를 읽고 수정한 뒤 다시 보내세요

Solana 수수료는 항상 SOL로 내므로 "Insufficient funds for fee"와 "insufficient funds for rent"는 SOL이 필요하다는 뜻입니다. 토큰 전송에서 나오는 단순한 "insufficient funds"나 "custom program error: 0x1"은 보내려는 양보다 해당 토큰을 적게 보유하고 있다는 뜻입니다.

Solana에서 우선순위 수수료를 올려야 하나요?

우선순위 수수료(priority fee)는 시뮬레이션 오류가 나타났을 때가 아니라, 혼잡한 동안 트랜잭션이 계속 만료될 때만 올리세요.

solana.com의 수수료 문서에 따르면 Solana 수수료는 서명당 5,000 램포트의 기본 수수료(50%는 소각, 50%는 검증자에게)에 선택적 우선순위 수수료를 더한 것입니다. 우선순위 수수료는 컴퓨트 유닛 가격(마이크로 램포트 단위)에 컴퓨트 유닛 한도를 곱해 1,000,000으로 나누고 올림하여 정수 램포트로 만든 값이며, 전액 검증자에게 갑니다. 우선순위 수수료가 높으면 바쁜 리더가 트랜잭션을 스케줄링할 가능성이 높아집니다. 슬리피지, 렌트, SOL 부족 오류는 해결하지 못하며, 트랜잭션이 반영되었다가 실패해도 그대로 청구됩니다. 시뮬레이션 오류가 나타나면 원인을 고치세요.

TON 종료 코드와 바운스된 메시지는 무슨 뜻인가요?

TON 트랜잭션은 단계(스토리지, 크레딧, 컴퓨트, 액션, 바운스)별로 실행되며, docs.ton.org에 따르면 종료 코드 0과 1은 성공이고 그 외는 모두 실패입니다. 컴퓨트가 실패하면 액션 단계는 건너뛰고, 바운스 가능한 수신 메시지에 대해서는 바운스 메시지가 만들어집니다. 수수료는 단계별로 차감되므로 앞선 수수료는 이미 소모된 상태로 남습니다. 수수료는 GRAM(예전 Toncoin, 이름 변경으로 달라진 점 참고)으로 냅니다.

신호의미네트워크 수수료 발생?해결 방법
종료 코드 13 또는 -14컴퓨트 단계에서 가스 부족예, 사용한 가스만큼GRAM을 더 첨부하세요
종료 코드 9셀 언더플로: 컨트랙트가 셀이 담고 있는 것보다 많은 데이터를 읽으려 했으며, 페이로드가 컨트랙트가 기대하는 것과 맞지 않기 때문인 경우가 많음예페이로드나 코멘트가 해당 컨트랙트에 맞는지 확인하세요
종료 코드 37액션 단계: 나가는 메시지를 보내기에 "Not enough GRAMs"예GRAM을 더 첨부하세요
컴퓨트 단계 건너뜀메시지에 실행 비용을 낼 GRAM이 너무 적게 담겨 있었음가스는 없음. 스토리지 단계는 그대로 실행됨GRAM을 더 첨부해 보내세요
바운스된 메시지목적지가 실패했거나 존재하지 않음예, 수수료 차감됨메시지 및 가스 수수료를 뺀 금액이 돌아옴

WATS Wallet은 이 오류들과 어떤 관계인가요?

Alltoscan LLC가 만든 WATS Wallet은 EVM 네트워크, Solana, TON을 위한 논커스터디얼 지갑(Chrome 확장 프로그램과 iOS/Android 앱)으로, 키와 복구 문구는 사용자가 직접 보유합니다. 이 가이드의 메시지는 해당 체인이 정의한 네트워크 수준의 오류이며 WATS 고유의 코드가 아닙니다.

Solana에서는 네트워크 수수료를 SOL로 내므로 Solana의 "insufficient funds" 항목이 그대로 적용됩니다. 소액의 SOL 잔액을 유지하면 이를 피할 수 있습니다. TON 항목은 프로토콜 수준의 오류를 설명하며, WATS Wallet에서 TON 수수료는 ATS로 지불됩니다. EVM 네트워크에서 WATS Wallet은 ERC-4337 페이마스터를 통해 BNB Chain에 있는 하나의 ATS 잔액에서 네트워크 수수료를 ATS로 청구하며, ATS 수수료의 작동 방식은 별도로 설명되어 있습니다.

자주 묻는 질문

암호화폐 트랜잭션이 실패하면 돈을 잃나요?

실패한 시점에 따라 다릅니다. 포함 전에 거부되었다면("nonce too low", "replacement transaction underpriced", "Blockhash not found" 같은 시뮬레이션, 노드 또는 멤풀 오류) 아무것도 반영되지 않았고 네트워크 수수료도 들지 않았습니다. 반영된 뒤 실패했다면(EVM 리버트 또는 가스 부족, 탐색기의 Solana "Failed", TON의 0이 아닌 종료 코드) 수행된 작업에 대한 수수료는 소모되지만, 보내려던 금액은 계정에 그대로 남고 TON 바운스는 수수료를 뺀 금액을 돌려줍니다. 탐색기에서 해시나 서명을 확인하면 어느 경우인지 알 수 있습니다.

보류 중인 트랜잭션이 없는데 지갑에 "nonce too low"가 나오는 이유는 무엇인가요?

nonce는 계정의 트랜잭션 카운터이며, "nonce too low"는 그 번호의 트랜잭션이 이미 확정되었다는 뜻입니다. 흔한 원인은 같은 계정을 다른 지갑 앱이나 기기에서 사용했거나, "멈춘" 트랜잭션이 실제로는 확정되었거나, 캐시된 지갑 상태가 오래된 경우입니다. 의도한 결제나 작업이 이미 처리되었는지 탐색기에서 확인하세요. 처리되었다면 다시 보내지 말고, 처리되지 않았다면 지갑을 다시 동기화하고 보내세요. 거부된 시도 자체에는 수수료가 들지 않았습니다. 트랜잭션이 정말 보류 중이라면 <a href="/blog/speed-up-or-cancel-stuck-transaction">보류 중인 트랜잭션을 가속하거나 취소하는 방법</a>을 참고하세요.

Solana에서 "block height exceeded"나 "Blockhash not found"가 나온 뒤 다시 시도해도 안전한가요?

대체로 그렇습니다. "Block height exceeded"는 blockhash가 만료되었다는 뜻(약 151개 블록, 대략 60초에서 90초)이고, "Blockhash not found"는 노드가 그것을 인식하지 못했다는 뜻으로 대개 만료 때문입니다. 만료된 트랜잭션은 더 이상 처리될 수 없으므로 나중에 반영되어 새 트랜잭션과 중복될 수 없습니다. 그래도 먼저 Solana 탐색기에서 서명을 조회한 다음 새 blockhash로 다시 시도하세요. 만료된 시도는 만료 전에 반영되지 않았다면 수수료가 청구되지 않으며(탐색기 조회로 확인 가능), 혼잡 중에 계속 만료된다면 우선순위 수수료를 조금 높이는 것이 도움이 될 수 있습니다.