Skip to content

Update reservoir protocol assets#18777

Open
eukadish wants to merge 2 commits intoDefiLlama:mainfrom
reservoir-protocol:update-reservoir-protocol-assets
Open

Update reservoir protocol assets#18777
eukadish wants to merge 2 commits intoDefiLlama:mainfrom
reservoir-protocol:update-reservoir-protocol-assets

Conversation

@eukadish
Copy link
Copy Markdown
Contributor

@eukadish eukadish commented Apr 15, 2026

NOTE

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


  1. If you would like to add a volume/fees/revenue adapter please submit the PR here.

  2. 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.

  3. 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.

  4. 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

  5. Please do not add new npm dependencies, do not edit/push pnpm-lock.yaml file 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

    • Extended protocol support to additional blockchains with new chain integrations.
  • Chores

    • Updated and expanded token/owner configurations across multiple supported blockchains to improve tracking coverage
    • Simplified TVL calculation mechanism for improved stability and reliability
    • Enhanced supported token pair listings to include additional stablecoins and protocol tokens

Eugene Kadish added 2 commits April 15, 2026 16:05
- 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
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Apr 15, 2026

📝 Walkthrough

Walkthrough

This 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

Cohort / File(s) Summary
Caching mechanism removal
projects/reservoir-protocol/index.js
Removed the getConfig cached fetch of Reservoir reserves that dynamically populated tokensAndOwners with [token, owner] pairs and associated console logging. tvl now relies entirely on static config[api.chain] data.
Ethereum configuration overhaul
projects/reservoir-protocol/index.js
Updated Ethereum funds list (removed 2 addresses, added 1 Gauntlet USDC Prime address). Substantially reworked Ethereum tokensAndOwners with new stablecoins (USDC, USDT, USD1, PYUSD, RLUSD, GHO) and extensive protocol-specific entries (Aave, Cap, Ethena, Euler, Fluid, Morpho, Pendle, Hyperithm, IPOR, Stargate, Sky-Spark, Uniswap v4).
New chain support expansion
projects/reservoir-protocol/index.js
Added configuration for three new chains (bsc, monad, hyperliquid) with non-empty tokensAndOwners arrays. Populated previously empty entries for mantle and optimism with token/owner pairs.
Multi-chain updates
projects/reservoir-protocol/index.js
Modified tokensAndOwners for arbitrum, base, and plasma by adding new token/owner pairs and updating comments/labels on existing entries.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Poem

A rabbit hops through tokens bright,
Static chains replace dynamic flight,
From Ethereum's grand display,
New blockchains join the fray—
Bsc, Monad, Hyperliquid's might! 🐰✨

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The pull request title 'Update reservoir protocol assets' clearly and concisely summarizes the main change: updating asset configurations for the Reservoir Protocol adapter.
Description check ✅ Passed The pull request description is the standard template filled with repository guidelines and contributor instructions, but contains no new listing information specific to this update (all optional fields are left blank as expected for an update PR).
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link
Copy Markdown

The adapter at projects/reservoir-protocol exports TVL:

ethereum                  196.70 M
plasma                    10.02 M
mantle                    2.01 M
berachain                 1.00
bsc                       0.00
arbitrum                  0.00
optimism                  0.00
monad                     0.00
base                      0.00
wc                        0.00
hyperliquid               0.00

total                    208.73 M 

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

📥 Commits

Reviewing files that changed from the base of the PR and between 1f67a4b and 0543b2d.

📒 Files selected for processing (1)
  • projects/reservoir-protocol/index.js

Comment on lines +34 to +100
// --- 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)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

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.

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.

1 participant