Merging updates from defillama - #3
Open
iagoLD wants to merge 6761 commits into
Open
Conversation
Update project-0 adapter to new API endpoint
…idity) and migrate to on-chain RPC (#2762)
The tracked skUSD vault was redeployed on 2026-07-03 to 0x96F5102C15b839757f811A98CEc3725Ac21DfA14. The prior vault (0xdEd74F7E) had a share price distorted by early test deposits; the redeploy resets price-per-share to par. Same ERC-4626 skUSD-over-kUSD design, same asset() (kUSD), same realised on-chain APY logic; only the address changes. Verified on-chain: asset()=kUSD, convertToAssets(1e24)=1e18, totalAssets ~1013 kUSD. Co-authored-by: enerzy17 <enerzy17@users.noreply.github.com>
* show merkl rewards too * add dummy reward token if none present Co-authored-by: Copilot <copilot@github.com> * add direct merkl incentives * wip * add forwarded token opportunities * remove reference file * enable all chains and remove filter * add min 10k tvl filter for api query * fix casing * filter blacklisted pools --------- Co-authored-by: Copilot <copilot@github.com>
* Monetrix: support timetravel for historical backfill; symbol USDM -> sUSDM - apy(timestamp) now anchors every read (block lookup, totalAssets, share prices, window math) at the requested historical timestamp, so the adapter can be backfilled from when yield started (2026-06-10 13:00 UTC). Live runs still anchor at the chain head. Returns [] for timestamps before yield began. - flip timetravel to true - symbol USDM -> sUSDM: the pool is the sUSDM staking vault (deposit USDM, receive sUSDM). Stablecoin classification is unaffected (substring match on usdm). * Monetrix: price backfilled rows at the anchor timestamp utils.getPrices only hits /prices/current, so historical rows were valued with today's USDM/USDC price. Timetravel runs now fetch /prices/historical/<anchor>/... via utils.getPriceApiData; live runs keep using /prices/current. Fallback order (USDM feed -> USDC -> 1) unchanged.
The previous single USDC vault (sSnowbl, 0xd61b…06e8) was retired after a contract migration. Return one pool per new Base ERC-4626 vault, each with its own underlying decimals and USD price: - sUSD -> USDC (6 decimals) - sETH -> WETH (18 decimals) - sBTC -> cbBTC (8 decimals)
* sky-lending: add USDS staking farm pools (SKY, GROVE) Adds the two Sky USDS StakingRewards farms missing from the yields page: - USDS->SKY farm 0x0650CAF159C5A49f711e8169D4336ECB9b950275 (reward period currently ended, apyReward 0) - USDS->GROVE farm 0x4E41488C19cD35EB4de3083Fc3e204854c75c86a (~$88M TVL) APY calc mirrors the existing spkFarm() in the sparklend adapter (same contract shape). Per-pool urls deep-link to the corresponding farm on app.sky.money. * sky-lending: guard USDS price lookup in farmsAPY Short-circuit farmsAPY with an empty array when the USDS price is missing from the price API, matching the defensive pattern in susdsAPY(), so a missing price cannot reject the whole apy() chain. * sky-lending: drop SKY farm pool (pool id owned by sparklend), keep GROVE CI's pool-id uniqueness check flags 0x0650CAF159C5A49f711e8169D4336ECB9b950275 as already owned by the sparklend adapter (it listed the SKY farm historically). Scope this PR to the new GROVE farm only; full jest suite now passes (218/218). * retrigger CI (transient RPC failure in globalSetup) --------- Co-authored-by: techsqrt <techsqrt@users.noreply.github.com>
* meta tags * comments
* Add Hybra V4 yield adapter Hybra V4 is a dynamic-fee concentrated-liquidity DEX with a ve(3,3) flywheel on Hyperliquid L1 (HyperEVM). LPs stake positions in gauges and earn weekly HYBR emissions; swap fees accrue to veHYBR voters (matching the hybra-v4 dimension-adapters methodology), so pools report apyReward from gauge emissions with apyBase 0. - pools + TVL + token prices from the public Hybra V4 Goldsky subgraph - gauge staked amounts and weekly HYBR emission per gauge from the gauge-rewards subgraph; apyReward = latest epoch emission annualized over the USD value staked in the gauge - skips near-empty gauges (<$100 staked) to avoid absurd APRs * fix(hybra-v4): paginate gaugeEpochRewards query The rewards query was a single request capped at first: 1000, which would silently drop entries once the gauge count grows and exclude those pools from results. Reuse paginate() like the other two queries; the newest-first ordering is preserved across pages so the latest-entry-per- gauge dedupe is unchanged.
* Add Tori Finance yields adapter (strUSD; protocolId 8063) * tori-finance fixes --------- Co-authored-by: kr3p <123127490+0xkr3p@users.noreply.github.com>
* add shapeswap v3 yields * Update index.js * Update index.js * chore: retrigger CI * address review: fix prior-volume fallback, raw symbol, add protocolId
* feat: add T3tris Finance APY adapter - Calculates 1d and 7d APY from share price growth (convertToAssets) - Fetches historical blocks via coins.llama.fi/block API - Reports vault metadata: fees, symbol, underlying asset - Pool URL: https://app.t3tris.finance/vault/\{address\} - Supports 15 chains * fix: add xdai (Gnosis) chain to APY adapter * fix: use oracle getLastSavedPricePerShare() for PPS instead of totalAssets/totalSupply * fix: smooth APY with multi-window blending (7d/14d/30d) to handle infrequent oracle updates * feat: T3tris integration * fix(t3tris): update to protocol v1 proxy address + WAD-based fee getters * feat(t3tris): source vaults from ecosystem API (verified & non-blacklisted) + landing URL * fix(t3tris): BigInt-safe decimal math + axios timeouts (CodeRabbit) * feat(t3tris-apy): match TVL curation filter + anchor APY at last NAV (extrapolate, no decay) * fix(t3tris-apy): exclude public:false vaults from APY listing Add a public !== false gate to the ecosystem-API vault discovery, on top of the existing verified + non-blacklisted curation filter, so vaults explicitly marked public:false are not surfaced in the yield listing. * feat(t3tris-finance): replace APY blend with TVL+time-weighted linear formula The previous inverse-day-weighted blend included 1d/3d windows with very high weights (1/1 and 1/3), causing the blended apyBase to spike to 70%+ right after each oracle NAV update — far above the ~18-25% the app displays. Fix: - Replace computeSmoothedApy with computeTvlWeightedApy implementing YEAR × Σ(TVLᵢ·rᵢ) / Σ(TVLᵢ·Δtᵢ) — the exact formula used by the app (performance.service.ts in the indexer). - Use non-overlapping intervals [LVT-30d→LVT-14d, LVT-14d→LVT-7d, LVT-7d→LVT] to avoid double-counting across overlapping lookback windows. - Weight each interval by average totalAssets (fetched on-chain at each historical block alongside the oracle PPS read). - Reserve 1d/3d windows as fallback only for vaults < 7 days old. Result for 'First - USDC' (0x98e4…d01f, Arbitrum): before: apyBase ≈ 28–70% (oscillating with oracle update cadence) after: apyBase ≈ 18.95% (indexer M window = 18.33%, W window = 20.82%) * fix(t3tris-finance): report oracle pricePerShare to avoid false negative fees T3tris vaults have a settlement cycle: when deposits land, totalSupply increases (shares are minted) BEFORE totalAssets is updated by the oracle. This makes naive totalAssets/totalSupply drop (e.g. from 1.004 to 0.514), triggering the DefiLlama fee test's negative-fee detection. Fix: report the oracle's getLastSavedPricePerShare as the pool's pricePerShare field. The oracle PPS only moves on valuation updates and is immune to the deposit-settlement cycle. * fix(t3tris-finance): address review feedback - add protocolId (8068) matching the t3tris-finance slug - report raw vault.symbol instead of utils.formatSymbol - use a single fixed 7d APY window instead of the dynamic 7d/14d/30d blend for consistency across vaults - remove the now-unused computeTvlWeightedApy helper and multi-window historical fetch * fix(t3tris-finance): correct vault deep-link URL and simplify poolMeta - URL: use /vaults/{chainId}/{address} (was /vault/{address}, which 404s) - poolMeta: reduce to 'perf x%, mgmt x%' when mgmt > 0, else 'perf x%' (drop entry/exit fees) Addresses review follow-up on #2735. --------- Co-authored-by: blablalf <contact@alfred-gaillard.fr>
* Add vesting APY as reward APY to selected IPOR Fusion vaults * Add fix to PR review comments * Add HyperEVM and Robinhood chains support in Fusion by IPOR
* rename: stable-jack-v1 to stablejack-v1 * add migration file
* sky-lending: add SKY staking engine pool + savings deep links - New pool: SKY staking engine rewards farm 0xB44c2Fb4181D7cb06BdFf34a46FdFE4A259b40Fc (StakingRewards; staked token lsSKY is the engine's 1:1 SKY wrapper, priced via SKY). - farmsAPY generalized: per-farm stake token/symbol/poolMeta/url instead of hardcoded USDS. - sUSDS pools get per-pool urls to the savings widget (ethereum / arbitrumone), replacing the project-level homepage fallback. * sky-lending: guard apyReward against zero-TVL farms An active farm with zero staked balance would divide by zero and emit apyReward Infinity; return 0 instead. --------- Co-authored-by: techsqrt <techsqrt@users.noreply.github.com>
* feat: add GILDer yield adapter * feat: added token:null to prevent triggerAdaptor * fix: PR fixes * fix: PR fixes
* Add vesting APY as reward APY to selected IPOR Fusion vaults * Add fix to PR review comments * Add HyperEVM and Robinhood chains support in Fusion by IPOR * Add Monad chain support in Fusion by IPOR
* feat(aave-v4): add global dollar hub * add rewards
* hrusd: add HRUSD/USDC Uniswap V3 staking pool * hrusd: price HRUSD off the pool TWAP and fail on incomplete previews * hrusd: gate reward apy on unspoken-for inventory, add fee-based apyBase * hrusd: require liquidity behind the TWAP, take fees from Swap events
* fix ashswap * fix
* add CARRY APY calculation to vault-street and change methodology * review: improve APY calculation logic and error handling in vault-street * reivew: enhance error handling
Co-authored-by: Richard Liang <6797244+richardliang@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
* feat: add WealthVille APY adapter for Solana yield optimizer WealthVille auto-compounding yield optimizer on Solana. 5 vaults across Orca Whirlpools and Raydium (AMM/CLMM). TVL ~$14.2M. Website: https://wealthville.net * Update index.js * Update index.js * Update index.js * fix(wealthville): export protocolId (8032) + use canonical /api/v1/defillama/tvl feed Unblocks CI: the 'known protocol slug' test now passes (TVL adapter merged, slug registered) and the adapter exports protocolId matching the DefiLlama protocol id. * wealthville: guard vault_pubkey before building the pool id (addresses coderabbit review) * wealthville: apply the 10k display floor and use real token tickers Two changes requested in review: - Only emit pools at or above DefiLlama's $10k display floor, so the adapter ships what would actually be surfaced instead of dust pools that get filtered downstream. - `symbol` was carrying the vault name ("AI Managed Yield Vault Enhanced"), which is not a ticker. It now resolves the vault's held mints to symbols via coins.llama.fi, ordered by position size (JITOSOL-SOL-USDC), and the vault name moves to `poolMeta` where it belongs. `utils.getPrices` is deliberately not used for the symbol lookup: it lowercases the price keys and Solana mints are case-sensitive base58, so the lookup would miss. * wealthville: drop the 10k floor, keep the ticker fix Reverts the tvlUsd >= 10000 filter from the previous commit. It gave users nothing the display floor doesn't already do, and introduced a real failure mode: test.js does `apy[0].project`, which throws on an empty array, so any dip below the floor by the single qualifying vault would have taken the suite red rather than just surfacing no pools. The symbol/poolMeta fix is unaffected and stays.
* add fallback * fix vol
Co-authored-by: s <s@proton.me>
add v2 tvl dominance gate
Monetrix mxHYPE was listed as its own protocol (id 8519, slug monetrix-mxhype) under parent#monetrix, alongside Monetrix USDM (id 8019). This adds the matching yield adapter for its staking vault. smxHYPE is an ERC4626 vault over mxHYPE (24-decimal shares, 18-decimal asset). APY comes from share-price growth over a trailing 7-day window, clamped to the first production stake (2026-08-17 10:12:20 UTC). Both sides of that ratio are denominated in mxHYPE, so apyBase is a HYPE-denominated return and carries no HYPE price move; the WHYPE price is used only for tvlUsd. src/adaptors/monetrix-usdm is left unchanged.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.