BMX is a DeFi ecosystem designed to address a core challenge for long-term users and liquidity providers: the reliance on speculative trading cycles and temporary, unsustainable incentive programs. Deli Swap is a DEX built using Uniswap v4 hooks that exemplifies the ecosystem's unique design, allowing liquidity providers to earn from two sources simultaneously: swap fees and the underlying yield generated by their wBLT in pools. This contest is for the Deli Swap contracts.
Scope
On what chains are the smart contracts going to be deployed?
Base
If you are integrating tokens, are you allowing only whitelisted tokens to work with the codebase or any complying with the standard? Are they assumed to have certain properties, e.g. be non-reentrant? Are there any types of weird tokens you want to integrate?
Creating pools with DeliHook and DeliHookConstantProduct allows for any ERC20 token to be paired with wBLT (also ERC20), and users can stream additional incentives with any of the underlying pool or additional universally whitelisted token. This whitelist for universal reward tokens is maintained by an owner address (multisig). However, only the standard tokens that are compatible with UniV4 are considered in scope of the contest (except Native ETH).
Are there any limitations on values set by admins (or other roles) in the codebase, including restrictions on array lengths?
Owner: trusted. Keeper: semi-trusted (can only flush buybacks; slippage/thresholds enforced); they should only be able to do what is described in the question about "off-chain mechanisms" and are trusted to do that correctly, but if they manage to do something else to harm the protocol/users, and it leads to High/medium impact, then it may be considered valid. Hooks: must be whitelisted; Adapter callers must be authorised; both are trusted.
DeliHook (V4)
DeliHookConstantProduct (V2)
FeeProcessor
DailyEpochGauge
IncentiveGauge
PositionManagerAdapter
Voter
Arrays/length limits
flushBuffers
). All loops are gas‑bounded.Are there any limitations on values set by admins (or other roles) in protocols you integrate with, including restrictions on array lengths?
No
Is the codebase expected to comply with any specific EIPs?
Not specifically
Are there any off-chain mechanisms involved in the protocol (e.g., keeper bots, arbitrage bots, etc.)? We assume these mechanisms will not misbehave, delay, or go offline unless otherwise specified.
What properties/invariants do you want to hold even if breaking them has a low/unknown impact?
DeliHook (V4)
DeliHookConstantProduct (V2)
sqrtPriceLimitX96
enforced against virtual price from reserves.FeeProcessor
claimVoterFees
; cannot sweep BMX or wBLT; only whitelisted hooks can call collectFee
.DailyEpochGauge
streamRate
matches current day bucket / 86400.IncentiveGauge
remaining
never underflows; deactivates when finished.PositionManagerAdapter
PoolKey
or reverts.notifyUnsubscribe
does not exceed 300k (Uniswap v4 PositionManager gas limit for unsubscribe callback on Base is 300k)Handlers
Voter
nextEpochToFinalize
advances monotonically over settled epochs.Please discuss any design choices you made.
Please provide links to previous audits (if any) and all the known issues or acceptable risks.
Please list any relevant protocol resources.
All documentation is in the repository README files.
Additional audit information.
The in-scope contracts will interact with these already deployed contracts (on Base):
RewardDistributor: 0x0259083181ae54730f4fbb1c174a53e21bce5266
BMX: 0x548f93779fBC992010C07467cBaf329DD5F059B7
wBLT: 0x4E74D4Db6c0726ccded4656d0BCE448876BB4C7A
sbfBMX: 0x38E5be3501687500E6338217276069d16178077E
They will also be referred to in the Judging Phase.
Total Rewards
Contest Pool
Lead Senior Watson
Lead Judge
19,300 USDC
20,000 USDC
6,000 USDC
Status
Scope
Start Time
End Time
Judging Rules