Skip to content

Merging updates from defillama - #3

Open
iagoLD wants to merge 6761 commits into
Window-Finance:masterfrom
DefiLlama:master
Open

Merging updates from defillama#3
iagoLD wants to merge 6761 commits into
Window-Finance:masterfrom
DefiLlama:master

Conversation

@iagoLD

@iagoLD iagoLD commented Jul 18, 2022

Copy link
Copy Markdown

No description provided.

slasher125 and others added 28 commits July 6, 2026 10:38
Update project-0 adapter to new API endpoint
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>
Louis and others added 30 commits August 19, 2026 09:52
* 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
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.
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.