Likely access control hook on Soneium
Uniswap v4 Hook Contract 0xb9583e7bcc42e6627a1c119b09bac07b14594800 on Soneium · Access control
- Volume (24h)
- $0
- Value locked (TVL)
- $0
- All-time volume
- $0
- Pools using this hook
- 1
- Swaps (24h)
- 0 (0 traders)
- Total swaps
- 324
What it does
A range-gated access-control hook that restricts which tick ranges liquidity can be added to in its pool, with the range set by privileged role holders.
How it works step by step
- Enables beforeAddLiquidity to check the requested position against an allowed tick range before liquidity is added.
- Stores tickLowerBound and tickUpperBound in storage slots 1 and 2 (packed int24 values) as the allowed range.
- Exposes setTickRange(int24,int24) so an authorized role can update the range.
- Uses OpenZeppelin-style AccessControl (DEFAULT_ADMIN_ROLE, MANAGER_ROLE, grantRole, revokeRole, renounceRole) to restrict configuration.
- Reverts with TicksOutOfOrder when the supplied bounds are not ordered correctly.
- Swap behaviour
- No swap callbacks.
- Liquidity behaviour
- beforeAddLiquidity is enabled and reverts or restricts liquidity additions based on the configured tick range (ticks outside tickLower/tickUpper are bounded via TicksOutOfOrder and tick bound checks). beforeRemoveLiquidity and afterRemoveLiquidity are present in the dispatch table but are not enabled in the hook permissions, so they should not be called by the PoolManager.
- Fee behaviour
- Uses the pool's static fee.
- Owner & admin controls
- Role-based access control (AccessControl) with DEFAULT_ADMIN_ROLE and MANAGER_ROLE. setTickRange(int24,int24) is callable by holders of an authorized role and updates the tickLower/tickUpper bounds stored in slot 1. Roles can be granted, revoked and renounced via grantRole, revokeRole and renounceRole. No pause or upgrade functions were found in the decoded selectors.
Enabled Uniswap v4 callbacks
beforeAddLiquidity
beforeAddLiquidity: gates liquidity additions to the configured tick range.
Security & trust assessment
Risk level: low, estimated (decoded bytecode, medium confidence).
Who controls it: Holders of DEFAULT_ADMIN_ROLE or MANAGER_ROLE can change the allowed tick range with setTickRange and grant or revoke roles. A privileged key could narrow the range to block new liquidity provision in the pool, though it cannot directly move funds.
Risk to user funds: The hook does not take or hold user tokens and has no return-delta or swap-blocking callbacks. It can only prevent liquidity additions outside the configured range, so LPs may be unable to add liquidity if the range is changed, but existing positions are not affected by the hook.
Security findings
- [info] Privileged tick range setter: setTickRange is a privileged setter that changes the allowed tick bounds; the authority of the caller is enforced by the AccessControl role check in the bytecode.
- [low] Centralized role management: Roles are managed through grantRole, revokeRole and renounceRole, so control of the pool's allowed liquidity range rests with whoever holds the admin role.
- [info] Unverified source: Without verified source, the exact enforcement logic in beforeAddLiquidity and the storage packing of tickLower and tickUpper could not be fully confirmed from bytecode alone.
Contract details
- Verified source
- No
- Bytecode size
- 7,609 bytes
- Upgradeable proxy
- No
- Detected patterns
- ownable
Pools using Likely access control hook
- SILEC / SILESC (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today