zhouxingchi1017/v4revert
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.
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 ToolsREADME.md
Originalv4revert
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
codecrafters-io/build-your-own-x
Master programming by recreating your favorite technologies from scratch.
562,352 starspublic-apis/public-apis
A collective list of free APIs
498,798 starsmorluto/rea
Reverse engineer anything with agents, from app behavior down to native binaries.
457,748 starsopenclaw/openclaw
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
394,399 stars