Skip to content
Projects

zhouxingchi1017/v4revert has 51 GitHub stars and 0 forks. Star changes are not measured yet. Last checked 2026-11-14 01:10 UTC. Last push 2026-11-05.

How these counts are measured

Measured star growth

in 24h
Collecting history
in 7 days
Collecting history
in 15 days
Collecting history
in 1 month
Collecting history

Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.

About

Decode Uniswap v4 revert data: recursively unwraps WrappedError. One file, zero dependencies.

Developer Tools

README.md

Original

v4revert

Uniswap v4 hides the real revert. When a hook fails, PoolManager wraps it in WrappedError(address,bytes4,bytes,bytes) (0x90bfb865), the Universal Router may wrap that again in ExecutionFailed, and your tooling prints a useless blob, or execution reverted.

v4revert peels every layer. One file, zero dependencies, works offline.

npx github:zhouxingchi1017/v4revert 0x90bfb8650000000000000000000000001111111111111111111111111111111111110088575e24b40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000006408c379a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001377616c6c65742063617020657863656564656400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004a9e35b2f00000000000000000000000000000000000000000000000000000000
WrappedError
  target: 0x1111111111111111111111111111111111110088
  selector: 0x575e24b4 (beforeSwap)
  reason: Error("wallet cap exceeded")
  details: HookCallFailed()

Usage

v4revert 0x90bfb865...                                # argument
echo 0x90bfb865... | v4revert                        # stdin
v4revert --sig 'WalletCap(uint256 cap)' 0x...         # your hook's custom errors (repeatable)

Decodes Error(string), Panic(uint256), v4-core and v4-periphery errors, Universal Router and Permit2 errors, and names the hook callback in WrappedError.selector. Unknown selectors are printed as raw hex: pass them in with --sig.

Library

const { decode, render } = require('v4revert');
console.log(render(decode(revertData, ['WalletCap(uint256 cap)'])));

Test

node test.js

License

MIT

Explore related projects