This contest reviews the contracts that make up the Super DCA Liquidity Network, powered by Uniswap V4 Hooks. It focuses on the security and economic soundness of the contract suite coordinating dynamic fees, emitting DCA tokens using a Curve-style gauge, and locking liquidity when new tokens are listed.
Scope
On what chains are the smart contracts going to be deployed?
OP, Unichain, Base, Arbitrum, Polygon, BNB, Ethereum, Ink (when Uniswap V4 will be deployed on Ink)
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?
The Super DCA Gauge is design to work with any ERC20 token. There's a Listing System that allows any token to be listed as long as there is a listing fee paid and Uniswap V4 supports the token. You can read more about the listing system in this section of the Super DCA Whitepaper: https://github.com/Super-DCA-Tech/super-dca-whitepaper/tree/main?tab=readme-ov-file#listing-fee.
As such, it's a critical priority to make sure that the contract safely handles tokens. There are not any weird tokens that come to mind, but the system is supposed to allow permissionless listing for any token. This may not be safe and it's something I would consider addressing by adding an allowlist since weird token traits can and have caused problems for protocols.
Only tokens that are supported by UniswapV4 and can be used to make a UniswapV4 pool are considered in scope.
Are there any limitations on values set by admins (or other roles) in the codebase, including restrictions on array lengths?
Manager is trusted. They can tune the fees.
Keeper is not trusted. They have a lower fee when using pools with the Super DCA gauge applied.
Listing agent (i.e., the one calling list
) is not trusted.
Stakers are not trusted.
All the untrusted roles can be considered malicious and harm the protocol/users.
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?
No
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.
No. The keeper role is designed to be assumed by the Super DCA team running a bot off-chain. But, the keeper can be no one and the protocol works fine. The keeper has the right, but not the obligation, to swap through pools with the Super DCA Gauge hook. Therefore, the protocol does not misbehave if the Keeper is offline or not set.
What properties/invariants do you want to hold even if breaking them has a low/unknown impact?
Global DCA token accounting
Reward index and accrual
Distribution and settlement
Staking bookkeeping
Keeper system
Role-independent behavior and failure scenarios
Please discuss any design choices you made.
donate
function. Each pool's donation is triggered when liquidity is added or removed. Each pool's rewards math is computed seperately and this might lead to some unintended ways to game the protocol's DCA rewards emissions. Please provide links to previous audits (if any) and all the known issues or acceptable risks.
We don't have any prior audits.
Known issues in SupderDCACashback:
No circuit breaker: Contract lacks pause; mitigation is emergency withdrawal of funds, which also blocks honest users.
Admin key risk: ADMIN_ROLE can drain all tokens; enforce multisig + monitoring.
External dependency trust: Malicious or buggy SuperDCATrade could misreport startTime/flowRate, inflating rewards—off-chain governance must validate trade data integrity. That means Watsons should assume SuperDCATrade will work correctly and return correct values.
USDC balance exhaustion: Claims revert if balance insufficient; consider automated top-ups and alerts.
Precision floor: _convertToUSDCPrecision truncates <1e12 results, so very small flow rates yield zero cashback; document to users.
Known issues in SuperDCAGauge:
Gauge lacks explicit pause or timelock; admin compromises allow immediate fee or staking address changes. See docs/GOV_SPEC.md for planned governance implementation to address this.
SuperDCAStaking.stake relies on gauge.isTokenListed; if listing not set or listing contract compromised, staking eligibility checks may fail-open/closed accordingly.
Dynamic fee logic trusts external IMsgSender implementations; malicious routers could spoof trader identity to obtain 0% fees.
Please list any relevant protocol resources.
Super DCA Whitepaper: https://github.com/Super-DCA-Tech/super-dca-whitepaper
This is written for the version that was deployed to Uniswap V3, but the version we're deploying to v4 works very similar.
Additional audit information.
The Super DCA Token is deployed at: op/base/unichain/arb:0xb1599cde32181f48f89683d3c5db5c5d2c7c93cc
Total Rewards
Contest Pool
Lead Senior Watson
Judging Pool
Lead Judge
19,210 USDC
4,000 USDC
1,060 USDC
1,600 USDC
Status
Scope
Start Time
End Time
Judging Rules