Pump Hooks
02 / Hooks / sell-limit

Sell Limit

Anti-dump: a routed sell may move at most a share of the wallet's balance, at most once per cooldown.

RISKruntime moduleunaudited
01

Behavior

  • A routed sell larger than the set share of the wallet's balance is denied.
  • A wallet's routed sells must be at least the cooldown apart; buys do not reset it.
  • Wallets holding at or below the exemption may always sell everything.
  • Optional window: from market activation or a fixed time, for a set duration (or always).
Limitation. Applies to trades routed through Pump Hooks only. A holder can always sell directly on Pump.
Limitation. Limits are per wallet: tokens moved to another wallet start a fresh limit.
02

Callbacks

ABI v1 · wire values frozen
#CallbackSubscribableDefaultSemantics
0BeforeBuy—Routed buy, before the Pump CPI. Can deny.
1AfterBuy—Routed buy, after the Pump CPI. Sees executed amounts; can still fail the transaction.
2BeforeSellyes●Routed sell, before the Pump CPI. Can deny.
3AfterSell—Routed sell, after the Pump CPI.
4BeforeSwap—Either side, before the Pump CPI. Can deny.
5AfterSwap—Either side, after the Pump CPI.
6BeforeLiquidityreservedReserved (wire value 6).
7AfterLiquidityreservedReserved (wire value 7).
8BeforeFeeActionreservedReserved (wire value 8).
9AfterFeeActionreservedReserved (wire value 9).
10OnGraduationreservedReserved (wire value 10).
11OnStrategySignalreservedReserved (wire value 11).
03

Capabilities

granted at install; enforced by the executor
■READ_MARKETRead market config, venue reserves and the trade context
■VETO_ROUTED_SWAPDeny a routed trade in a before-callback (reverts the transaction)
□WRITE_HOOK_STATEPersist its 48-byte slot state on the market
□WRITE_USER_STATEUpdate the trading wallet's per-market state
□AWARD_POINTSCredit XP / points in the wallet's per-market ledger
□TREASURY_SIGNALEmit treasury allocation intents for the strategy vault
□STRATEGY_EXECUTIONBound or request vault strategy execution (TWAP, orders)
□ORACLE_READRead an external oracle account (reserved; not granted in V1)
□EXTERNAL_CPICall an external hook program (reserved; no permissionless CPI hooks in V1)
□EMIT_SIGNALEmit or consume signed strategy signals
04

Config schema

48 bytes · little-endian
FieldTypeOffsetUnitPresetDescription
maxSellBpsu160bps5000Largest share of the wallet's balance one routed sell may move (0 = no share limit)
cooldownSecsu324seconds60Minimum time between a wallet's routed sells (0 = none)
exemptBelowu648base1000000000000Balances at or below this may sell in full
startTsi6416timestamp—Start (0 = market activation)
durationSecsu3224seconds—How long the limit applies (0 = always)
05

Identity

Module ID
11 (0x000b)
Version
v1
Developer
Pump Hooks
Program
91kRNewiED… (built-in)
Priority range
1000–1999 · default 1300
Markets
bonding-curve · pumpswap
Source
crates/hook-runtime/src/modules/sell_limit.rs
Verification
source in this repository; reproducible-build verification not yet published
Audit
unaudited
06

Registry

Install on a Pump market ›