# error_selector

Returns a custom error's 4-byte selector by hashing already-canonical signature text exactly; use it to identify revert payloads.

Canonical HTML: <https://determica.com/docs/functions/error_selector>

- Kind: scalar function
- Category: [Contracts and ABI](/docs/category/contracts-and-abi.md)
- Tags: ABI

Returns a custom error's 4-byte selector by hashing already-canonical signature text exactly; use it to identify revert payloads.

## Overload 1: error_selector(VARCHAR)

```sql
error_selector(VARCHAR)
```

Hashes one already-canonical custom error signature without normalization.

- Kind: scalar
- Execution context: Offline
- Behavior: Exact Signature Error Selector
- Execution modes: Offline
- Input shape: Scalar Arguments
- Planning contract: Runtime
- Cardinality: One Per Input
- Determinism: Deterministic
- Return shape: Scalar
- Schema stability: Fixed
- Stability: Stable
- Side effects: None documented

### Inputs

- `signature` (VARCHAR; required; positional) — Signature text such as ERC20InsufficientBalance(address,uint256,uint256), without parameter names or spaces. The text is hashed exactly without normalization.

### Returns

Custom error selector

First four bytes of the supplied signature's Keccak-256 hash.

- `selector` (BYTES4)

Custom error selector. First four bytes of the supplied signature's Keccak-256 hash.

### Examples

_Local SQL · Local_

```sql
SELECT error_selector('ERC20InsufficientBalance(address,uint256,uint256)') AS selector;
-- e450d38c
```

## Guidance

### Selector, topic0, calldata, and return data

Use error_selector or error_selector_json to match revert data selectors before decoding or classifying custom errors. The JSON helper derives canonical input types and ignores parameter names.

- Canonical signatures omit parameter names and spaces.
- Use function_selector for calldata selectors.
- Use event_signature for event topic0.

```sql
SELECT error_selector('InsufficientBalance(uint256,uint256)') AS selector;
```

## Related functions

- [error_decode_json](/docs/functions/error_decode_json.md) — Usually Before
- [evm_decode_revert_for](/docs/functions/evm_decode_revert_for.md) — See Also
