In this track: Read logs and failures
advanced · 4 MIN READ

Empty revert data explained

A failed call can return no diagnostic bytes at all.

LET’S PICTURE IT

A process can stop without handing back a written explanation.

SEE IT FOR YOURSELF
Follow a revert and decode its error dataStep 1 / 4
Follow a revert and decode its error dataRequested actionTransfer 100 raw unitsExample inputsAvailable balance40 raw unitsCheck the ruleA deliberately failing local scenario, not a live transactionCondition fails100 > 40Request rejectedRollbackNo successful transferConsumed gas still mattersTop-level failure and a caught nested failure have different contextsError selector0x08c379a04 bytesMessage tailNot enough tokensDynamic string encodingCustom errors and Panic use different selectors and schemasDecoded messageNot enough tokensA diagnostic clueFurther evidenceCaller and code pathRelevant stateError bytes can be constructed by code; decoding is not authentication

This fictional call requests a transfer of one hundred raw units while the relevant balance is forty.

Animated local teaching model. No wallet, RPC or live blockchain data. Some labels and hashes are abbreviated for readability.

Separate failure from its payload

The call outcome and returned byte sequence are different pieces of information. A failure with empty data remains a failure; empty bytes do not imply success.

Recognize possible causes

Code can deliberately revert with no data. Exceptional execution such as running out of gas can also leave no usable explanation, depending on where the failure occurs.

Avoid inventing a reason

A decoder cannot recover an absent message from an empty sequence. Present the lack of revert data and keep the original call context available for further investigation.

Inspect additional evidence

A local trace, gas conditions, inputs and matching code can narrow the cause. The receipt alone may not expose the exact internal operation that failed.

Inspect the example

Low-level outcome: success = false
Returned bytes: 0x

No selector or arguments are available to decode.

A data decoder cannot determine the missing reason from 0x alone.

TURN UNDERSTANDING INTO PRACTICEOpen the Revert decoder →
QUICK CHECK · NO PRESSURE

Does empty revert data prove a successful call?

Your progress stays in this browser.
Keep exploring the original referenceSolidity documentation ↗

Original explanations by EtherTools. Examples are educational and source-linked; this site is independent of the Ethereum Foundation. Our approach.