Skip to content

Use TVL with 'doublecounted' instead of Pool2 for Super DCA #16022

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Aug 22, 2025

Conversation

mikeghen
Copy link
Contributor

Hi Team,

I misunderstood how TVL would be displayed when I selected pool2. I looked over other adapters using Uniswap V4 Hooks and found this doublecounted module export and I think this is more appropriate.

This adapter does NOT count the Super DCA Token in the TVL. It only counts actual tokens (USDC, WBTC, ETH, AAVE). I hope by excluding the DCA token, it will be acceptable to classify this as Super DCA's TVL, with doublecounted indicating Super DCA's TVL resides inside of Uniswap V4.

I hope you will consider accepting this update from pool2 to tvl so that the Super DCA TVL is displayed on the chart. I have details about the Super DCA Liquidity Network construction here: https://github.com/Super-DCA-Tech/superdca-liquidity-network?tab=readme-ov-file#how-its-used. Super DCA creates a network of liquidity within the Uniswap V4 protocol.

Thank you,

Mike

Please enable "Allow edits by maintainers" while putting up the PR.


  • If you would like to add a volume/fees/revenue adapter please submit the PR here.
  • If you would like to add a liquidations adapter, please refer to this readme document for details.
  1. Once your adapter has been merged, it takes time to show on the UI. If more than 24 hours have passed, please let us know in Discord.
  2. Sorry, We no longer accept fetch adapter for new projects, we prefer the tvl to computed from blockchain data, if you have trouble with creating a the adapter, please hop onto our discord, we are happy to assist you.
  3. Please fill the form below only if the PR is for listing a new protocol else it can be ignored/replaced with reason/details about the PR
  4. For updating listing info It is a different repo, you can find your listing in this file: https://github.com/DefiLlama/defillama-server/blob/master/defi/src/protocols/data2.ts, you can edit it there and put up a PR
  5. Do not edit/push package-lock.json file as part of your changes, we use lockfileVersion 2, and most use v1 and using that messes up our CI
  6. No need to go to our discord and announce that you've created a PR, we monitor all PRs and will review it asap

Name (to be shown on DefiLlama):

Super DCA

Twitter Link:

https://x.com/super_dca

List of audit links if any:
Website Link:

https://superdca.org

Logo (High resolution, will be shown with rounded borders):

Already shared.

Current TVL:
------ TVL ------
optimism                  1.08 k
base                      1.05 k

total                    2.14 k 
Treasury Addresses (if the protocol has treasury)

NA

Chain:

Base, Optimism

Coingecko ID (so your TVL can appear on Coingecko, leave empty if not listed): (https://api.coingecko.com/api/v3/coins/list)

NA

Coinmarketcap ID (so your TVL can appear on Coinmarketcap, leave empty if not listed): (https://api.coinmarketcap.com/data-api/v3/map/all?listing_status=active,inactive,untracked&start=1&limit=10000)

NA

Short Description (to be shown on DefiLlama):

Already shared.

Token address and ticker if any:

DCA

Category (full list at https://defillama.com/categories) *Please choose only one:

DCA Tools

Oracle Provider(s): Specify the oracle(s) used (e.g., Chainlink, Band, API3, TWAP, etc.):
Implementation Details: Briefly describe how the oracle is integrated into your project:
Documentation/Proof: Provide links to documentation or any other resources that verify the oracle's usage:
forkedFrom (Does your project originate from another project):
methodology (what is being counted as tvl, how is tvl being calculated):

Already shared.

Github org/user (Optional, if your code is open source, we can track activity):

Super-DCA-Tech

@mikeghen
Copy link
Contributor Author

This test failure looks unrelated to this change. Let me know if there's something I need to do to resolve this CI check failure.

@waynebruce0x
Copy link
Collaborator

The whitepaper link seems broken. Are there any docs? Can you explain what happens to user deposits?

@waynebruce0x waynebruce0x self-assigned this Aug 22, 2025
@mikeghen
Copy link
Contributor Author

mikeghen commented Aug 22, 2025

@waynebruce0x, apologies for the broken link. Thanks for taking the time to review this PR.

Here's the excerpt from the whitepaper (link: https://github.com/Super-DCA-Tech/super-dca-whitepaper) about the "Super DCA Liquidity Network" below. I wrote it prior to v4 so the diagram shows v3, its the same architecture for v4 though. There's also the README from the Super DCA Hook contract repo: https://github.com/Super-DCA-Tech/super-dca-gauge. This README explains the functionality of the Super DCA Hook in more details.

Users deposit to the network by creating a position in TOK-DCA pools that have the Super DCA Hook attached. Super DCA eliminates fees for DCA users and instead earns revenue by keeping the liquidity network spreads low; ie, keeping the exchange rate of USDC>>DCA>>ETH == the exchange rate of USDC>>ETH. LPs in the Super DCA liquidity network earn fees from "external trades," those not originating from the Super DCA Pool contracts (ie people not doing DCA). This is done by the hook using v4's dynamic fees features.


Embedded AMM using a Uniswap Liquidity Network

Super DCA creates its own network of liquidity on Uniswap. It does this by pairing tokens with its own protocol token, the DCA token. Swaps between two tokens, like USDC to ETH, are routed through two Uniswap pools, USDC-DCA and DCA-ETH. The route through the protocol’s DCA token. The collection of DCA pools on Uniswap create a liquidity network for the protocol to use.

DCA Liquidity Network

Figure 3: Super DCA Liquidity Network, routes swaps through two pools, each pool is paired with the DCA token, pools take 0.05% fee so the net fee through the network is 0.1%

The liquidity network is an open network that meets the description of the TWAMM describe by Paradigm. Mainly, it allows anyone to trade with the protocols liquidity network (i.e., embedded AMM) at any time, “just as if it were a normal AMM.” This is a necessary feature since it means that other traders will be incentivized to keep the various DCA pools inline with the global exchange rates. Arbitrage opportunities created as the price of tokens moves means that searchers will keep the liquidity pools' exchange rates inline with global exchange rates.

@mikeghen
Copy link
Contributor Author

Also this white paper excerpt shows how the Super DCA's long term investors (ie Super DCA users) interact with the liquidity network through the Super DCA Pool contracts. Those contracts are found in this repo: https://github.com/Super-DCA-Tech/super-dca-contracts


Pool Mechanics

Super DCA uses Superfluid, Uniswap, and Gelato in combination to create a TWAMM. The details of these are shown in the Figure below. Users stream tokens into the Super DCA Pool. The tokens accumulate in an internal swap buffer. Once enough tokens have accumulated in this buffer such that a fraction (e.g., 1%) can be used to pay for the execution of the swap, either Gelato or a Staked User will trigger the swap. The remaining input token amount is then swapped using Uniswap. The swap itself routes through the Super DCA protocol token which means that DCA token stakers immediately realize the liquidity pool fees collected as part of the Uniswap protocols functionality. After the swap occurs, the output token (e.g., OP) lands back in the Super DCA Pool where it is distributed using Superfluid proportional to each users input amount.

Super DCA Execution

Figure 2: Users stream tokens into the Pool using Superfluid, Gelato or a staked user will trigger the swap once enough input tokens have accumulated such that a fraction will cover the gas cost plus a premium, input tokens are swapped through the protocol's token using two Uniswap pools, the output tokens are distributed back to users using Superfluid again.

@waynebruce0x waynebruce0x merged commit 775bd2f into DefiLlama:main Aug 22, 2025
1 check failed
@mikeghen
Copy link
Contributor Author

Thanks @waynebruce0x! I really appreciate you all at Defillama being so quick to get these adapters reviewed and integrated.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants