userop & 7702 hash calculator
erc-4337 userOpHash for entrypoint v0.6–v0.9, and eip-7702 authorization hashes.
userOpHash
entrypoint v0.70x551f7f54a198928c07a006728dc59e6e0ebd4ca0b6920be3d95fdd23e82c322bwhat validateUserOp receives and what the account's owner signs0x341fd4e972feaecfa2c5c3b19d97f4442dfd8a8d91518b2e90c86db8c418e12devery field except the signature; dynamic fields go in as their keccak256simpleaccount-style v0.6 / v0.7 accounts check personal_sign over this hash (the \x19Ethereum Signed Message prefix is added).
the fields
- sender
- 0x5a6b2f7d1e3c8B4A9F0E1D2c3b4A5968778695A4
- nonce
- seq 0
- callGasLimit
- 80,000
- verificationGasLimit
- 100,000
- preVerificationGas
- 46,536
- maxFeePerGas
- 0.1 gwei
- maxPriorityFeePerGas
- 0.001 gwei
- max gas cost
- 0.0000226536 ETH226,536 gas × maxFeePerGas: the prefund the entrypoint holds back
packed form (what handleOps and the entrypoint take)
0x0x000000000000000000000000000186a0000000000000000000000000000138800x000000000000000000000000000f424000000000000000000000000005f5e1000xwhat it does
- account function
- execute(address,uint256,bytes)
- used by
- simpleaccount, light account, coinbase smart wallet, simple7702
- calls
- 1
1. 0xa9059cbb
to 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
good to know
- the signature is never part of the hash, so you can compute it before signing, and the same op on another chain or entrypoint gets a different hash.
- bundlers return this hash from eth_sendUserOperation; look it up with eth_getUserOperationReceipt or on a 4337 explorer like jiffyscan or blockscout.
- v0.7+ rpc fields (factory, paymaster…) and the packed onchain form (initCode, accountGasLimits, gasFees, paymasterAndData) give the same hash.
