A panic carries a numeric code instead of a free-form string.
LET’S PICTURE IT
A machine can report a numbered fault category rather than a written explanation.
SEE IT FOR YOURSELF
Follow a revert and decode its error dataStep 1 / 4
This fictional call requests a transfer of one hundred raw units while the relevant balance is forty.
This fictional call requests a transfer of one hundred raw units while the relevant balance is forty.The contract rejects this request. State changes in the reverted call are rolled back, while work already consumed can still cost gas.A common Error(string) begins with selector 08c379a0. This example then encodes the message Not enough tokens.A decoder can recognize the supplied error shape. Identifying the true cause and source still needs the call context, code and state.
Animated local teaching model. No wallet, RPC or live blockchain data. Some labels and hashes are abbreviated for readability.
Recognize a different schema
Panic(uint256) uses selector 0x4e487b71 and one static uint256 argument. Treating its payload as Error(string) would apply the wrong schema.
Read the code word
The integer after the selector identifies a panic category. Hexadecimal 11 is decimal seventeen; its meaning comes from the documented panic-code table.
Separate language checks from explicit messages
Modern Solidity uses panics for certain runtime checks. A user-facing require message and an arithmetic panic are different error forms even when both cause failure.
Preserve the surrounding execution evidence
A code category narrows the investigation but does not identify a source line by itself. Compiler output, call frames and relevant inputs help locate the operation.