Conversation
- Add USDC, USDT, USD1, PYUSD, RLUSD, GHO stablecoin tracking across multiple adapters
- Add Aave positions: aEthUSDG, stkGHO on Ethereum; aManUSDT0, aManGHO on Mantle; aPlaGHO on Plasma
- Add Cap stcUSD, Infinifi siUSD, Sky Money USDT Savings
- Add Euler vaults: eUSDC-70, eUSDC-80 on Ethereum
- Add Fluid fGHO on Ethereum, Arbitrum, and Plasma
- Add new Morpho vaults: steakUSDC Prime Instant V2, gtUSDC Prime V2, senPYUSDV2, senRLUSDv2, bbqPYUSD
- Add new Pendle PT tokens: PT-iUSD-19FEB2026, PT-siUSD-8JAN2026, PT-USDe-25SEP2025, PT-sUSDE-{31JUL,25SEP,27NOV}2025, PT-USDe-{27MAR}2025, PT-sUSDE-29MAY2025, PT-sUSDe-27MAR2025
- Add Arbitrum: GHO, fGHO, bbqUSDC V2, bbqUSDT0, ptUSDCturbo
- Add Plasma: GHO, aPlaGHO, fGHO, 246USDT0, Re7USDT0Core, hyperEulerUSDT
- Add Base: steakUSDC Prime Instant V2, gtUSDCp V2
- Add Optimism: Gauntlet USDC Prime (gtusdcp)
- Add Mantle: aManUSDT0, aManGHO
- Add new chains: BSC (fvUSDT, USDC), Monad (cAUSD, grove-bbqAUSD), HyperLiquid/HyperEVM (feUSDC, feUSDH)
- Fix bbqUSDT adapter address to match CSV
- Fix fUSDT0 (Plasma) adapter address to match CSV
- Remove 3 deprecated Ethereum fund addresses not in current reserves
- Remove unlisted Plasma entry (0xa9C251F8...)
- Rename hyperevm chain key to hyperliquid per DefiLlama chains.json
📝 WalkthroughWalkthroughThis change removes dynamic Reservoir reserves caching and replaces it with static configuration. The Ethereum setup is substantially updated with modified fund addresses and an expanded set of token/owner pairs across multiple protocols. Configuration is extended to support three new chains (bsc, monad, hyperliquid) and includes token/owner mappings for previously empty chains (mantle, optimism), plus updates to existing multi-chain configurations. Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
The adapter at projects/reservoir-protocol exports TVL: |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@projects/reservoir-protocol/index.js`:
- Around line 34-100: The Reservoir adapter is missing the doublecounted flag so
these listed receipt/strategy positions are being treated as unique TVL; update
the adapter's exported config (the adapter object in index.js that contains the
token pairs array and chain config for Ethereum) to include doublecounted: true
(set it alongside other adapter-level properties for the Reservoir adapter), and
ensure the same flag is applied for the additional sections covering lines
~103-194 where similar external positions are listed.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: ed1df717-0fa3-4ee6-b902-1bbe3324b624
📒 Files selected for processing (1)
projects/reservoir-protocol/index.js
| // --- Aave --- | ||
| ['0xFa82580c16A31D0c1bC632A36F82e83EfEF3Eec0', '0x3063C5907FAa10c01B242181Aa689bEb23D2BD65'], // aEthRLUSD | ||
| ['0x0C0d01AbF3e6aDfcA0989eBbA9d6e85dD58EaB1E', '0x3063C5907FAa10c01B242181Aa689bEb23D2BD65'], // aEthPYUSD | ||
| ['0xaF5372792a29dC6b296d6FFD4AA3386aff8f9BB2', '0x3063C5907FAa10c01B242181Aa689bEb23D2BD65'], // eRLUSD-7 | ||
| ['0xba98fc35c9dfd69178ad5dce9fa29c64554783b5', '0x3063C5907FAa10c01B242181Aa689bEb23D2BD65'], // ePYUSD-6 | ||
| [ADDRESSES.ethereum.sUSDe, '0x5563CDA70F7aA8b6C00C52CB3B9f0f45831a22b1'], // sUSDe | ||
| ['0x7c0477d085ECb607CF8429f3eC91Ae5E1e460F4F', '0x3063C5907FAa10c01B242181Aa689bEb23D2BD65'], // aEthUSDG | ||
| ['0x1a88df1cfe15af22b3c4c783d4e6f7f9e0c1885d', '0x3063C5907FAa10c01B242181Aa689bEb23D2BD65'], // stkGHO | ||
| // --- Cap --- | ||
| ['0x88887bE419578051FF9F4eb6C858A951921D8888', '0x289C204B35859bFb924B9C0759A4FE80f610671c'], // stcUSD | ||
| // --- Ethena --- | ||
| [ADDRESSES.ethereum.sUSDe, '0x5563CDA70F7aA8b6C00C52CB3B9f0f45831a22b1'], // sUSDe | ||
| ['0x1fb3c5c35d95f48e48ffc8e36bcce5cb5f29f57c', '0x5563CDA70F7aA8b6C00C52CB3B9f0f45831a22b1'], // PT-srUSDe-15JAN2026 | ||
| // ['0xBeEf11eCb698f4B5378685C05A210bdF71093521', '0x31Eae643b679A84b37E3d0B4Bd4f5dA90fB04a61'], // wrapped version of RUSD, excluded steakRUSD | ||
| ['0xBEeFFF209270748ddd194831b3fa287a5386f5bC', '0x841DB2cA7E8A8C2fb06128e8c58AA162de0CfCbC'], // bbqUSDC | ||
| ['0xA0804346780b4c2e3bE118ac957D1DB82F9d7484', '0x289C204B35859bFb924B9C0759A4FE80f610671c'], // bbqUSDT | ||
| ['0x5C20B550819128074FD538Edf79791733ccEdd18', '0x289C204B35859bFb924B9C0759A4FE80f610671c'], // fUSDT | ||
| // --- Euler --- | ||
| ['0xe0a80d35bb6618cba260120b279d357978c42bce', '0x3063C5907FAa10c01B242181Aa689bEb23D2BD65'], // eUSDC-22 | ||
| ['0x797DD80692c3b2dAdabCe8e30C07fDE5307D48a9', '0x3063C5907FAa10c01B242181Aa689bEb23D2BD65'], // eUSDC-2 | ||
| ['0xba98fc35c9dfd69178ad5dce9fa29c64554783b5', '0x3063C5907FAa10c01B242181Aa689bEb23D2BD65'], // ePYUSD-6 | ||
| ['0xaF5372792a29dC6b296d6FFD4AA3386aff8f9BB2', '0x3063C5907FAa10c01B242181Aa689bEb23D2BD65'], // eRLUSD-7 | ||
| ['0x9bD52F2805c6aF014132874124686e7b248c2Cbb', '0x3063C5907FAa10c01B242181Aa689bEb23D2BD65'], // eUSDC-70 | ||
| ['0xAB2726DAf820Aa9270D14Db9B18c8d187cbF2f30', '0x3063C5907FAa10c01B242181Aa689bEb23D2BD65'], // eUSDC-80 | ||
| ['0x6DFC8ae855FA8Ab7bAbB81aB7c8a6DA7794f60fB', '0x3063C5907FAa10c01B242181Aa689bEb23D2BD65'], // erUSD-1 | ||
| // --- Fluid --- | ||
| ['0x9Fb7b4477576Fe5B32be4C1843aFB1e55F251B33', '0x289C204B35859bFb924B9C0759A4FE80f610671c'], // fUSDC | ||
| ['0xc197ad72936b7c558c96417f22041fe9e3c7043f', '0x289C204B35859bFb924B9C0759A4FE80f610671c'], // ResHY | ||
| ['0xdd0f28e19C1780eb6396170735D45153D261490d', '0x289C204B35859bFb924B9C0759A4FE80f610671c'], // gtUSDC | ||
| ['0x777791C4d6DC2CE140D00D2828a7C93503c67777', '0x2adf038b67a8a29cda82f0eceb1ff0dba704b98d'], // hyperUSDC | ||
| ['0x1135b22d6e8FD0809392478eEDcd8c107dB6aF9D', '0x8d3A354f187065e0D4cEcE0C3a5886ac4eBc4903'], // PT-tUSDe-18DEC2025 | ||
| [ADDRESSES.ethereum.USDe, '0x8d3A354f187065e0D4cEcE0C3a5886ac4eBc4903'], // USDe | ||
| ['0xA01227A26A7710bc75071286539E47AdB6DEa417', '0x8d3A354f187065e0D4cEcE0C3a5886ac4eBc4903'], // tUSDe | ||
| ['0x62C6E813b9589C3631Ba0Cdb013acdB8544038B7', '0x8d3A354f187065e0D4cEcE0C3a5886ac4eBc4903'], // PT-tUSDe-18DEC2025 (alt) | ||
| [ADDRESSES.ethereum.USDC, '0x4809010926aec940b550D34a46A52739f996D75D'], // USDC | ||
| ['0x5C20B550819128074FD538Edf79791733ccEdd18', '0x289C204B35859bFb924B9C0759A4FE80f610671c'], // fUSDT | ||
| ['0x6a29a46e21c730dca1d8b23d637c101cec605c5b', '0x289C204B35859bFb924B9C0759A4FE80f610671c'], // fGHO | ||
| // --- Infinifi --- | ||
| ['0xDBDC1Ef57537E34680B898E1FEBD3D68c7389bCB', '0x289C204B35859bFb924B9C0759A4FE80f610671c'], // siUSD | ||
| // --- Morpho --- | ||
| ['0xBEeFFF209270748ddd194831b3fa287a5386f5bC', '0x841DB2cA7E8A8C2fb06128e8c58AA162de0CfCbC'], // bbqUSDC (Smokehouse USDC) | ||
| ['0xA0804346780b4c2e3bE118ac957D1DB82F9d7484', '0xb595ba80d38b8e4c9894a6734a1b9a7b198870a2'], // bbqUSDT (Smokehouse USDT) | ||
| ['0xbeef088055857739C12CD3765F20b7679Def0f51', '0x289C204B35859bFb924B9C0759A4FE80f610671c'], // steakUSDC Prime Instant V2 | ||
| ['0xdd0f28e19C1780eb6396170735D45153D261490d', '0xA100A910A30b745064d7174863B730AD6d92Fe64'], // gtUSDC (Gauntlet USDC Prime) | ||
| ['0xdd0f28e19C1780eb6396170735D45153D261490d', '0x289C204B35859bFb924B9C0759A4FE80f610671c'], // gtUSDC (Gauntlet USDC Prime old) | ||
| ['0x8c106EEDAd96553e64287A5A6839c3Cc78afA3D0', '0x289C204B35859bFb924B9C0759A4FE80f610671c'], // gtUSDC V2 | ||
| ['0xb576765fB15505433aF24FEe2c0325895C559FB2', '0x289C204B35859bFb924B9C0759A4FE80f610671c'], // senPYUSDV2 | ||
| ['0x6dc58a0fdfc8d694e571dc59b9a52eeea780e6bf', '0x289C204B35859bFb924B9C0759A4FE80f610671c'], // senRLUSDv2 | ||
| ['0xd8A6511979D9C5D387c819E9F8ED9F3a5C6c5379', '0x289C204B35859bFb924B9C0759A4FE80f610671c'], // bbqPYUSD | ||
| ['0x23f5E9c35820f4baB695Ac1F19c203cC3f8e1e11', '0x289C204B35859bFb924B9C0759A4FE80f610671c'], // skymoneyusdtsavings | ||
| // Note: Morpho Blue market 0xBBBBBbbBBb9cC5e90e3b3Af64bdAF62C37EEFFCb is a non-ERC20 singleton and cannot be queried via balanceOf | ||
| // --- Pendle --- | ||
| ['0xf63bdb49Ab15eb8F85d5e200D4fa9E242cc4e853', '0x8Cc5a546408C6cE3C9eeB99788F9EC3b8FA6b9F3'], // Pendle-rUSD LP token | ||
| ['0xA00f596e9D03fe90c5d22C15B468e8Dce4d24dE0', '0x8Cc5a546408C6cE3C9eeB99788F9EC3b8FA6b9F3'], // Pendle-rUSD market | ||
| ['0x77B50ef8D55b8d6F9a632468e417bE21d5712A2E', '0x8Cc5a546408C6cE3C9eeB99788F9EC3b8FA6b9F3'], // Pendle-wsrUSD LP token | ||
| ['0x41b5236DF40C4718A76d4342e83153556373C072', '0x8Cc5a546408C6cE3C9eeB99788F9EC3b8FA6b9F3'], // Pendle-wsrUSD market | ||
| ['0xEC4402d1389E749C14A7caEef3e4c1f861e09Bc8', '0x8Cc5a546408C6cE3C9eeB99788F9EC3b8FA6b9F3'], // PT-iUSD-19FEB2026 | ||
| ['0x545A490f9ab534AdF409A2E682bc4098f49952e3', '0x8Cc5a546408C6cE3C9eeB99788F9EC3b8FA6b9F3'], // PT-cUSD-29JAN2026 | ||
| ['0xC3c7E5E277d31CD24a3Ac4cC9af3B6770F30eA33', '0x8Cc5a546408C6cE3C9eeB99788F9EC3b8FA6b9F3'], // PT Staked cap USD 29JAN2026 | ||
| ['0x5510B080449d5E3Bf345b6635eD40A35B36b081f', '0x8Cc5a546408C6cE3C9eeB99788F9EC3b8FA6b9F3'], // PT-siUSD-8JAN2026 | ||
| ['0x1fb3c5c35d95f48e48ffc8e36bcce5cb5f29f57c', '0x5563CDA70F7aA8b6C00C52CB3B9f0f45831a22b1'], // PT-srUSDe-15JAN2026 | ||
| ['0x3b3fB9C57858EF816833dC91565EFcd85D96f634', '0x5563CDA70F7aA8b6C00C52CB3B9f0f45831a22b1'], // PT-sUSDE-31JUL2025 | ||
| ['0x9F56094C450763769BA0EA9Fe2876070c0fD5F77', '0x5563CDA70F7aA8b6C00C52CB3B9f0f45831a22b1'], // PT-sUSDE-25SEP2025 | ||
| ['0xe6A934089BBEe34F832060CE98848359883749B3', '0x5563CDA70F7aA8b6C00C52CB3B9f0f45831a22b1'], // PT-sUSDE-27NOV2025 | ||
| ['0xb7de5dfcb74d25c2f21841fbd6230355c50d9308', '0x5563CDA70F7aA8b6C00C52CB3B9f0f45831a22b1'], // PT-sUSDE-29MAY2025 | ||
| ['0xe00bd3df25fb187d6abbb620b3dfd19839947b81', '0x5563CDA70F7aA8b6C00C52CB3B9f0f45831a22b1'], // PT-sUSDe-27MAR2025 | ||
| ['0x1135b22d6e8FD0809392478eEDcd8c107dB6aF9D', '0x8d3A354f187065e0D4cEcE0C3a5886ac4eBc4903'], // PT-tUSDe-18DEC2025 | ||
| ['0xBC6736d346a5eBC0dEbc997397912CD9b8FAe10a', '0x8d3A354f187065e0D4cEcE0C3a5886ac4eBc4903'], // PT-USDe-25SEP2025 | ||
| ['0x8A47b431A7D947c6a3ED6E42d501803615a97EAa', '0x8d3A354f187065e0D4cEcE0C3a5886ac4eBc4903'], // PT-USDe-27MAR2025 | ||
| ['0x62C6E813b9589C3631Ba0Cdb013acdB8544038B7', '0x8d3A354f187065e0D4cEcE0C3a5886ac4eBc4903'], // PT-USDe-27NOV2025 | ||
| [ADDRESSES.ethereum.USDe, '0x8d3A354f187065e0D4cEcE0C3a5886ac4eBc4903'], // USDe | ||
| ['0xA01227A26A7710bc75071286539E47AdB6DEa417', '0x8d3A354f187065e0D4cEcE0C3a5886ac4eBc4903'], // tUSDe | ||
| // --- Hyperithm --- | ||
| ['0x777791C4d6DC2CE140D00D2828a7C93503c67777', '0x2adf038b67a8a29cda82f0eceb1ff0dba704b98d'], // hyperUSDC | ||
| // --- IPOR --- | ||
| ['0xc197ad72936b7c558c96417f22041fe9e3c7043f', '0x289C204B35859bFb924B9C0759A4FE80f610671c'], // ResHY | ||
| // --- Stargate --- | ||
| ['0x5DaAee9EF143faFF495B581e9863570e83F99d31', '0xE94fc572b5E5Abe38F326F7DeDfe4f0Df9851d2A'], // S*USDC Ethereum | ||
| ['0x17BBC9BD51a52aAf4d2CC6652630DaF4fdB358F7', '0xE94fc572b5E5Abe38F326F7DeDfe4f0Df9851d2A'], // S*USDT Ethereum | ||
| ['0x17BBC9BD51A52aAf4d2CC6652630DaF4fdB358F7', '0xE94fc572b5E5Abe38F326F7DeDfe4f0Df9851d2A'], // S*USDT Ethereum | ||
| // --- Sky/Spark --- | ||
| ['0xdC035D45d973E3EC169d2276DDab16f1e407384F', '0x0b578e123e3725a15F6FCbd43ADf314EaA667c04'], // USDS | ||
| // --- Uniswap v4 --- | ||
| [ADDRESSES.ethereum.USDT, '0x289C204B35859bFb924B9C0759A4FE80f610671c'], // Uniswap USDe/USDT LP (USDT side) |
There was a problem hiding this comment.
Mark this adapter as doublecounted.
These additions are mostly external receipt/strategy positions (Aave, Euler, Fluid, Morpho, Pendle, Stargate, etc.), so their underlying capital is already counted in the source protocols. Without doublecounted: true, Reservoir will be reported as additive unique TVL instead of layered exposure.
Suggested fix
Object.keys(config).forEach(chain => {
- module.exports[chain] = { tvl }
+ module.exports[chain] = { tvl, doublecounted: true }
})Based on learnings: the GRVT and Royco adapters mark balances as doublecounted: true when they include assets already tracked in external protocols.
Also applies to: 103-194
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@projects/reservoir-protocol/index.js` around lines 34 - 100, The Reservoir
adapter is missing the doublecounted flag so these listed receipt/strategy
positions are being treated as unique TVL; update the adapter's exported config
(the adapter object in index.js that contains the token pairs array and chain
config for Ethereum) to include doublecounted: true (set it alongside other
adapter-level properties for the Reservoir adapter), and ensure the same flag is
applied for the additional sections covering lines ~103-194 where similar
external positions are listed.
NOTE
Please enable "Allow edits by maintainers" while putting up the PR.
If you would like to add a
volume/fees/revenueadapter please submit the PR here.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.
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.
For updating listing info It is a different repo, you can find your listing in this file, you can edit it there and put up a PR
Please do not add new npm dependencies, do not edit/push
pnpm-lock.yamlfile as part of your changes(Needs to be filled only for new listings)
Name (to be shown on DefiLlama):
Twitter Link:
List of audit links if any:
Website Link:
Logo (High resolution, will be shown with rounded borders):
Current TVL:
Treasury Addresses (if the protocol has treasury)
Chain:
Coingecko ID (so your TVL can appear on Coingecko, leave empty if not listed): (https://api.coingecko.com/api/v3/coins/list)
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)
Short Description (to be shown on DefiLlama):
Token address and ticker if any:
Category (full list at https://defillama.com/categories) *Please choose only one:
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):
Github org/user (Optional, if your code is open source, we can track activity):
Does this project have a referral program?
Summary by CodeRabbit
New Features
Chores