Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
5831 commits
Select commit Hold shift + click to select a range
c1714fd
fix: sir adapter
0xkr3p Jan 21, 2026
675c46d
Merge pull request #2278 from 0xkr3p/fix/sir-adapter
0xkr3p Jan 21, 2026
8f31861
fix and exclude unidex-perp
0xkr3p Jan 21, 2026
7545c4c
Merge pull request #2279 from 0xkr3p/fix/unidex-perp-fix-exclude
0xkr3p Jan 21, 2026
39ce67c
uni v4 fix
slasher125 Jan 22, 2026
9c8c8ee
fix: add new api url
0xkr3p Jan 22, 2026
ebb695e
remove unnecessary comments
0xkr3p Jan 22, 2026
4875374
Merge pull request #2280 from 0xkr3p/fix/flamingo-finance
0xkr3p Jan 22, 2026
e4914fd
fix: superstate and switch to stable 30d base w/7day
0xkr3p Jan 22, 2026
1ce965e
Merge pull request #2281 from 0xkr3p/fix/superstate-uscc-spikes
0xkr3p Jan 22, 2026
da1075d
fix: stablecoins incorrectly marked
NFToby Jan 22, 2026
86be6dc
Merge pull request #2283 from NFToby/fix/stablecoin-flagging
slasher125 Jan 23, 2026
e733d82
fix merkl poolmeta and symbol
0xkr3p Jan 23, 2026
63c04d8
replace pool protocol with lend token
0xkr3p Jan 23, 2026
f401cbe
feat: add hyperswap-v2
0xkr3p Jan 23, 2026
30099eb
Merge pull request #2284 from 0xkr3p/fix/merkl-token-pool-meta
0xkr3p Jan 23, 2026
17952c0
Merge pull request #2285 from 0xkr3p/feat/add-hyperswap-pools
0xkr3p Jan 23, 2026
77a22eb
fix symbiosis adapter
0xkr3p Jan 23, 2026
d92c36e
fix pricing in non stable coins and add missing chains
0xkr3p Jan 23, 2026
e39fb21
Merge pull request #2286 from 0xkr3p/fix/symbiosis-adapter
0xkr3p Jan 23, 2026
b1605d9
Fix lazy adapter to use 7-day APY as primary metric
Jan 23, 2026
70ef881
feat: add openeden-tbill adapter
0xkr3p Jan 23, 2026
96506e6
Added additional yield tokens for future activation
fabiaz84 Jan 23, 2026
d17dd8e
Merge master into harborfi: keep harbor README.md
fabiaz84 Jan 23, 2026
0657598
feat: add openeden-usdo adapter
0xkr3p Jan 23, 2026
b1f7602
feat: add POK Vault yield adapter
yashnaman Jan 24, 2026
eda5262
fix: use formateEther
yashnaman Jan 24, 2026
efc7bf8
fix: resolve nitpicks
yashnaman Jan 24, 2026
6ba53c0
fix: chunk pricing reqs
0xkr3p Jan 25, 2026
ed6741c
remove lodash and use js
0xkr3p Jan 25, 2026
0d103f2
feat: add altura adapter
0xkr3p Jan 25, 2026
7627b18
Merge pull request #2293 from 0xkr3p/feat/add-altura-adapter
0xkr3p Jan 25, 2026
930578a
fix: add 0 as pricing fallback
0xkr3p Jan 25, 2026
174cb5d
fix broken avax link for isolated markets
0xkr3p Jan 25, 2026
1976947
Merge pull request #2292 from 0xkr3p/fix/silo-v2
0xkr3p Jan 25, 2026
cc755bc
Merge pull request #2287 from sirmoremoney/add-lazyusd
slasher125 Jan 26, 2026
f3a83dc
Merge pull request #2289 from fabiaz84/harborfi
slasher125 Jan 26, 2026
4ef73c0
fix
slasher125 Jan 26, 2026
6084699
Merge pull request #2288 from 0xkr3p/feat/add-openeden-tbill
0xkr3p Jan 26, 2026
cf0abb7
fix: exclude davos
0xkr3p Jan 26, 2026
4b0d34b
fix: hermes-v2
0xkr3p Jan 26, 2026
5791d85
Merge pull request #2294 from 0xkr3p/fix/exclude-davos
0xkr3p Jan 26, 2026
44c7b02
Merge pull request #2295 from 0xkr3p/fix/hermes-v2
0xkr3p Jan 26, 2026
21c236f
use bignumber for precision
0xkr3p Jan 26, 2026
322fe9b
Merge pull request #2290 from 0xkr3p/feat/add-openeden-usdo
0xkr3p Jan 26, 2026
682cac9
feat: add goldfinger adapter
0xkr3p Jan 26, 2026
9127988
revert changes and use getEventLogs
0xkr3p Jan 26, 2026
73850b4
Merge pull request #2298 from 0xkr3p/fix/hermes-v2
0xkr3p Jan 26, 2026
f2b1363
use bignumber and promiseAll
0xkr3p Jan 26, 2026
d398044
Merge pull request #2297 from 0xkr3p/feat/add-goldfinger
0xkr3p Jan 26, 2026
21626e4
fix strata adapter
0xkr3p Jan 26, 2026
def6aac
Merge pull request #2299 from 0xkr3p/fix/strata-tranches-adapter
0xkr3p Jan 26, 2026
adc727a
fix: add try / catch to resolve intermittent rpc failure
0xkr3p Jan 26, 2026
82ad319
Merge pull request #2300 from 0xkr3p/fix/folks-finance-xchain-adapter
0xkr3p Jan 26, 2026
57f9762
feat: add ajna-v2 adapter
0xkr3p Jan 27, 2026
7f4c4cb
include abi import
0xkr3p Jan 27, 2026
246e5b6
fix ajna
0xkr3p Jan 27, 2026
1ce875a
add try/catch amd remove inactive chains
0xkr3p Jan 27, 2026
9bbe9b6
feat: add matrixdock-stbt
0xkr3p Jan 27, 2026
89bc3b0
remove bsc
0xkr3p Jan 27, 2026
9b1d0fd
fix precision loss
0xkr3p Jan 28, 2026
35b9ab0
normalise symbols
0xkr3p Jan 28, 2026
900a430
Merge pull request #2304 from 0xkr3p/feat/add-matrixdock-stbt
0xkr3p Jan 28, 2026
0488ac9
Merge pull request #2302 from 0xkr3p/feat/add-ajna-v2-adapter
0xkr3p Jan 28, 2026
58b568f
add project rename script, run migration as part of ci
slasher125 Jan 28, 2026
99bf593
feat: add ondo-yield-assets (#2307)
0xkr3p Jan 28, 2026
0fba093
Add Monad for Curve DEX (#2303)
iamvukasin Jan 28, 2026
e7009ba
Add Monad for Euler v2 (#2301)
iamvukasin Jan 28, 2026
e86a032
Switch to a working and data richer endpoint for Nolus lending/borrow…
metodi96 Jan 28, 2026
c4e19d4
fix neura-vault adapter (#2308)
0xkr3p Jan 28, 2026
2afd9ba
fix: hatom lending (#2309)
0xkr3p Jan 28, 2026
a1c8a7b
add yield
firafighter Jan 28, 2026
e8d7f2d
chore: exclude kokonut-swap & saddle-finance (#2312)
0xkr3p Jan 28, 2026
38a4ce2
feat: add overnight pools
0xkr3p Jan 28, 2026
96050f0
add pool url
0xkr3p Jan 28, 2026
c70bd08
safe guards
firafighter Jan 29, 2026
a88b70c
fix: aave-v3 adapter (#2311)
0xkr3p Jan 29, 2026
9a7d8cd
add try / catch
0xkr3p Jan 29, 2026
4811094
Merge pull request #2313 from 0xkr3p/feat/add-overnight-finance-pools
slasher125 Jan 29, 2026
9442141
feat: add ether.fi-liquid adapter (#2314)
0xkr3p Jan 29, 2026
71a9d46
feat: update rewards apy
AndonMitev Jan 29, 2026
6cae800
remove log
AndonMitev Jan 29, 2026
1a31cfe
feat: update veth address and add manta network pool
killbond007 Jan 29, 2026
f98ffa8
add veda adapter (#2315)
0xkr3p Jan 29, 2026
77c8749
update campaigns
AndonMitev Jan 29, 2026
fc56db6
fix: rename maia-v3 to maia-cl (#2318)
0xkr3p Jan 29, 2026
6ae6f10
Merge pull request #2317 from bifrost-io/master
slasher125 Jan 30, 2026
487ad33
Merge pull request #2316 from yoprotocol/feat/update-rewards-apy
slasher125 Jan 30, 2026
1127856
truncate /url
slasher125 Jan 30, 2026
15d8133
remove old stuff
slasher125 Jan 30, 2026
478cd60
exclude notional-v3 (#2324)
0xkr3p Jan 31, 2026
c4101e3
fix: arrakis-v1 adapter (#2323)
0xkr3p Jan 31, 2026
32ac0e1
fix: add more pools to Yuzu Money (#2320)
tangten Feb 1, 2026
04d1da3
fix monday trade spot adapter (#2325)
0xkr3p Feb 1, 2026
d405662
exclude dot dot finance (#2327)
0xkr3p Feb 1, 2026
46da31d
fix goldfinch subgraph (#2328)
0xkr3p Feb 1, 2026
750f72c
feat: add lazy summer protocol adapter (#2329)
0xkr3p Feb 1, 2026
9b1204a
DSF Finance: update APY calculation to on-chain lpPrice (#2326)
dsf-cto Feb 1, 2026
b70b0f3
remove projects
slasher125 Feb 2, 2026
0994dbf
feat: add superform adapter (#2330)
0xkr3p Feb 2, 2026
f5b229c
add volatility matview
slasher125 Feb 2, 2026
a76d4c5
Merge pull request #2331 from DefiLlama/add-volatiliy-matview
slasher125 Feb 2, 2026
ca074b5
add temp clean symbol (#2334)
0xkr3p Feb 2, 2026
9559883
fix based on comments
firafighter Feb 2, 2026
cec0541
Add Monad for Beefy (#2332)
iamvukasin Feb 2, 2026
d19f923
Addin yPrism and v3 api (#2322)
neelra8n Feb 2, 2026
e257b35
Merge pull request #2310 from Zgorizzo/fira-yield
slasher125 Feb 3, 2026
2739816
fix: add wstETH to apr & tAVAX support (#2336)
0xkr3p Feb 3, 2026
c362121
feat: aera-v3 (#2337)
0xkr3p Feb 3, 2026
ed5fb69
remove aera-v3 add gauntlet (#2339)
0xkr3p Feb 4, 2026
d588346
wip: add volatility data
0xkr3p Feb 4, 2026
0b7013f
fix: batch 1
0xkr3p Feb 5, 2026
840ee45
fix: more
0xkr3p Feb 5, 2026
e227b84
fix: batch 2
0xkr3p Feb 5, 2026
0b9d925
fix: more underlying
0xkr3p Feb 5, 2026
1266c1e
fix: more
0xkr3p Feb 5, 2026
6825390
ghost underlying
0xkr3p Feb 5, 2026
7872854
add sommelier
0xkr3p Feb 5, 2026
2e96922
undefined fallback
0xkr3p Feb 5, 2026
9092fbf
zunami-protocol
0xkr3p Feb 5, 2026
a6c6471
more
0xkr3p Feb 5, 2026
964ed7d
more
0xkr3p Feb 5, 2026
bfaf2dc
more
0xkr3p Feb 5, 2026
390a0c0
more
0xkr3p Feb 5, 2026
a83de9f
fix
0xkr3p Feb 5, 2026
db6f467
more
0xkr3p Feb 5, 2026
661a45e
fix affluent (#2343)
0xkr3p Feb 6, 2026
6ac9fc7
more
0xkr3p Feb 6, 2026
4e481fb
add taiga-karura
0xkr3p Feb 6, 2026
3c32811
fix
0xkr3p Feb 6, 2026
6dcf543
fix
0xkr3p Feb 6, 2026
8c93391
more
0xkr3p Feb 6, 2026
7136944
another
0xkr3p Feb 6, 2026
24e0ffb
fix multipli.fi adapter (#2344)
0xkr3p Feb 6, 2026
5a030c7
fix: add base for rwausdi & pool meta (#2345)
0xkr3p Feb 7, 2026
7347d82
Merge pull request #2342 from 0xkr3p/fix/add-underlying-tokens
slasher125 Feb 9, 2026
8721537
exclude jones-dao, zkp2p, dyson, opyn-squeeth, alpaca-finance (#2348)
0xkr3p Feb 9, 2026
7d256f4
create volaitlity endpoint
0xkr3p Feb 9, 2026
501f9f0
nullify empty rewards & underlying token arrays
slasher125 Feb 9, 2026
787c6fa
auth-gated routes registered before redis cache middleware
0xkr3p Feb 9, 2026
4429a29
add in memory cache
0xkr3p Feb 9, 2026
591fbe7
add try / catch
0xkr3p Feb 9, 2026
86bb315
feat(ploutos): add Ethereum chain support in adapter (#2347)
bogdoslavik Feb 9, 2026
78d5e94
remove dead code
0xkr3p Feb 10, 2026
9c71e69
1hr cache instead of 5 min
0xkr3p Feb 10, 2026
1f0a6bf
remove internal key and add where cv_30d is not null
0xkr3p Feb 10, 2026
e6fff63
custom header
0xkr3p Feb 10, 2026
5cc34ac
Merge pull request #2340 from 0xkr3p/feat/add-volatiltiy-metrics
slasher125 Feb 10, 2026
2e8faf3
update exclusion
slasher125 Feb 10, 2026
95c971b
remove exponential integration
slasher125 Feb 11, 2026
808ecfe
fix logging
slasher125 Feb 11, 2026
d75f605
refactor: joe v.2.2 and v2.1, add monad (#2350)
0xkr3p Feb 11, 2026
c8041ad
exclude projects (#2351)
0xkr3p Feb 11, 2026
e68e0e9
update tests
slasher125 Feb 12, 2026
fc776d4
add tydro adapter (#2354)
0xkr3p Feb 12, 2026
3d4bb95
add avon-megavault adapter + update defillama sdk v5.0.206 to support…
0xkr3p Feb 12, 2026
06959d0
exclude
slasher125 Feb 13, 2026
f527b0d
fix dai underlying token, pool
slasher125 Feb 13, 2026
20cb399
fix underlying tokens in bluefin
slasher125 Feb 13, 2026
ff39fd1
fix underlying
slasher125 Feb 13, 2026
2e654a6
fix folks-finance underlying
slasher125 Feb 13, 2026
6bbaf0e
filecoin fix underlying, fix hype chain
slasher125 Feb 13, 2026
b7064b4
remove filter
slasher125 Feb 13, 2026
c0c57da
hop update underlyingtokens
slasher125 Feb 13, 2026
5a3d86e
liqwid fix underlying
slasher125 Feb 13, 2026
dff5dde
fix: 1inch adapter with stale api (#2357)
0xkr3p Feb 13, 2026
eb3e756
fix starknet address
slasher125 Feb 13, 2026
af1fb6a
fix: add arb susds to sky lending (#2359)
0xkr3p Feb 13, 2026
5723bde
exclude pools
slasher125 Feb 13, 2026
c35fed9
Add maxshot yield adaptor. (#2333)
Skyge Feb 14, 2026
497d4fb
fix: upshfit additional pools and merkl rewards (#2358)
0xkr3p Feb 15, 2026
ca9c8a3
fix: euler-v2 additional pools use subgraph (#2360)
0xkr3p Feb 15, 2026
39c62ce
feat: adds abyss adapter (#2362)
0xkr3p Feb 15, 2026
1eab715
update exclude list
slasher125 Feb 16, 2026
139915d
fix: add more robust underlying token identifier (#2361)
0xkr3p Feb 16, 2026
0d8d4c7
fix ekubo (#2363)
0xkr3p Feb 16, 2026
db75ed3
fix: use LST token address as underlyingTokens for LST/LRT adapters (…
0xkr3p Feb 17, 2026
3975930
fix: layerbank adapter (#2364)
0xkr3p Feb 17, 2026
fe75d69
Nest V1 adapter (#2349)
olecsiuyae Feb 17, 2026
b2f5483
fix node dao (#2368)
0xkr3p Feb 17, 2026
c9b72bd
add .claude (#2369)
0xkr3p Feb 17, 2026
5ea6b43
fix: eth+ symbol formatting
slasher125 Feb 17, 2026
25dee70
fix scallop lend (#2371)
0xkr3p Feb 17, 2026
6a6a0b2
fix: meta pool eth, add new spETH pool (#2370)
0xkr3p Feb 17, 2026
4625383
fix: include pairs in the pool meta for isolated markets (#2373)
0xkr3p Feb 17, 2026
2e191ef
fix: reserve protocol (#2365)
0xkr3p Feb 18, 2026
205f9e9
feat: add stke sol by sol strategies (#2341)
0xkr3p Feb 18, 2026
83a0a7f
feat: add jagpool-staked-sol adapter (#2375)
0xkr3p Feb 18, 2026
17dbe7f
feat: add starke-staked-sol (#2376)
0xkr3p Feb 18, 2026
931f53c
feat: add lantern staked sol adapter (#2377)
0xkr3p Feb 18, 2026
c6c766a
fix: kiloex adapter (#2378)
0xkr3p Feb 18, 2026
902ac24
fix wompie (#2379)
0xkr3p Feb 18, 2026
2a61292
feat: add token address field and revert underlyingTokens (#2380)
0xkr3p Feb 19, 2026
118f226
feat: add doublezero staked sol (#2381)
0xkr3p Feb 19, 2026
e1c425c
feat: add adrastea-lst adapter (#2382)
0xkr3p Feb 19, 2026
bdcf9db
feat: add blazestake adapter (#2383)
0xkr3p Feb 19, 2026
1d66fad
feat: add bonk staked sol (#2384)
0xkr3p Feb 19, 2026
5ecaf62
feat: add dfdv staked sol (#2385)
0xkr3p Feb 19, 2026
f5740d7
feat: add hylo-lsts (#2386)
0xkr3p Feb 19, 2026
cc78d99
feat: add jpool adapter (#2387)
0xkr3p Feb 19, 2026
24ef499
feat: add laine sol (#2388)
0xkr3p Feb 19, 2026
3a939e6
feat: add kyros adapter (#2389)
0xkr3p Feb 19, 2026
5fb66bf
feat: add marginfi-lst adapter (#2390)
0xkr3p Feb 19, 2026
fef179d
feat: add phantom sol adapter (#2391)
0xkr3p Feb 19, 2026
4bb2b9e
feat: add sanctum infinity (#2393)
0xkr3p Feb 19, 2026
ed9945e
feat: add save-sol adapter (#2394)
0xkr3p Feb 19, 2026
ad781f0
feat: pico staked sol adapter (#2392)
0xkr3p Feb 19, 2026
5b30a4d
feat: add stronghold staked sol adapter (#2395)
0xkr3p Feb 19, 2026
e16e1f4
fix: use correct min width spacing for APR calculation (#2398)
0xBugsy Feb 19, 2026
62314a2
feat: add the vault liquid staking adapter (#2396)
0xkr3p Feb 19, 2026
e156757
rename ripple
slasher125 Feb 20, 2026
61662aa
update exclusion list
slasher125 Feb 23, 2026
c1146e3
uni add filter to remove bad data
slasher125 Feb 23, 2026
070f75b
fix: realt token adapter (#2410)
0xkr3p Feb 23, 2026
95e87d1
Added MegaETH and updated subgraphs (#2372)
Codonyat Feb 23, 2026
a11e732
fix: update metrom adapter to add supported chains (#2402)
luzzif Feb 23, 2026
6171027
Ploutus fi/master (#2413)
0xkr3p Feb 24, 2026
9cbe769
feat: add tramplin.io adapter (#2399)
0xkr3p Feb 24, 2026
aea7b4f
fix: curve-llamalend output (#2403)
0xkr3p Feb 24, 2026
3cd35e3
rename: zest -> zest-v1
slasher125 Feb 24, 2026
99a8131
upgrade sdk
slasher125 Feb 24, 2026
3f1a92e
update package.lock
slasher125 Feb 24, 2026
81740a8
fix
slasher125 Feb 24, 2026
a4363f5
project-0 remove dupes
slasher125 Feb 24, 2026
fbbab3d
remove p-limit
slasher125 Feb 24, 2026
63c290a
update node runtime
slasher125 Feb 24, 2026
5139d0e
Merge pull request #2228 from giladm11/kaspacom-dex-yields-from-beackend
slasher125 Feb 24, 2026
86d80f7
fix: add try/catch and arb pools (#2412)
0xkr3p Feb 24, 2026
a1c632f
Merge pull request #2291 from yashnaman/add-pok-vault-adapter
slasher125 Feb 24, 2026
8f8bfa0
update exclusion
slasher125 Feb 24, 2026
f09d14f
replace superagent
slasher125 Feb 24, 2026
ea7690f
Merge pull request #2414 from DefiLlama/remove-superagent
slasher125 Feb 24, 2026
c8f9655
feat: add permapod lending adapter for ZIGChain (#2400)
permapod Feb 24, 2026
54fa40d
update sdk
slasher125 Feb 25, 2026
a65ed64
supernova cl adaptor addition (#2417)
0xnabeel Feb 25, 2026
40152bc
feat: add 3jane-lending (#2415)
0xkr3p Feb 25, 2026
3d115d4
fix hydration-dex adaptor (#2420)
0xkr3p Feb 25, 2026
c9988f8
fix: hydration dex better underlying + stablepools (#2421)
0xkr3p Feb 25, 2026
21a782e
addition of supernova-amm adaptor (#2416)
0xnabeel Feb 25, 2026
20fc541
add /pools and /lendBorrow to server
0xngmi Feb 25, 2026
36acdc7
fix ci
slasher125 Feb 26, 2026
4e37590
test
slasher125 Feb 26, 2026
257164c
fix
slasher125 Feb 26, 2026
d8dc01d
update exclusion
slasher125 Feb 27, 2026
643ff6d
underlying dim token matching (#2427)
0xkr3p Feb 27, 2026
93fcf36
fix ipor fusion slug rename to fusion-by-ipor (#2429)
0xkr3p Feb 27, 2026
1a0168a
usual > usual-usd0 rename (#2430)
0xkr3p Feb 27, 2026
ca62718
Feat: Add jupiter lend adapter (#2405)
startup-dreamer Feb 27, 2026
0cd3eb7
rename minswap
slasher125 Feb 27, 2026
8b14cdd
update exclusion list
slasher125 Feb 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
59 changes: 30 additions & 29 deletions .github/workflows/commentResult.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,36 +3,37 @@ const fetch = require('node-fetch');
const junk = 'VPTOH1X0B7rf8od7BGNsQ1z0BJk8iMNLxqrD';

async function main() {
const [, , log, author, repo, pr, path ] = process.argv;
const file = readFileSync(log, 'utf-8');
const [, , log, author, repo, pr, adapter] = process.argv;
const file = readFileSync(log, 'utf-8');

const jestError = 'FAIL src/adaptors/test.js';
const jestSuccess = 'PASS src/adaptors/test.js';
const summaryIndex = file.indexOf('Test Suites:');
const jestSuccessIndex = file.indexOf(jestSuccess);
const jestErrorIndex = file.indexOf(jestError);
let body;

const errorString = '------ ERROR ------';
const summaryIndex = file.indexOf('------ TVL ------');
const errorIndex = file.indexOf(errorString);
let body;
if (jestErrorIndex === -1 && jestSuccessIndex !== -1) {
body = `The ${adapter} adapter exports pools:
\n \n ${file.substring(summaryIndex).replaceAll('\n', '\n ')}`;
} else if (jestErrorIndex !== -1) {
body = `Error while running ${adapter} adapter:
\n \n ${file.substring(summaryIndex).replaceAll('\n', '\n ')}}`;
} else return;

if (summaryIndex != -1) {
body = `The adapter at ${path} exports TVL:
\n \n ${file.substring(summaryIndex + 17).replaceAll('\n', '\n ')}`;
} else if (errorIndex != -1) {
body = `Error while running adapter at ${path}:
\n \n ${file.split(errorString)[1].replaceAll('\n', '\n ')}`;
} else
return;

await fetch(
`https://api.github.com/repos/${author}/${repo}/issues/${pr}/comments`,
{
body,
method: "POST",
headers: {
Authorization: `token ghp_${translate(junk)}`,
Accept: 'application/vnd.github.v3+json'
}
});
};
await fetch(
`https://api.github.com/repos/${author}/${repo}/issues/${pr}/comments`,
{
body: JSON.stringify({ body }),
method: 'POST',
headers: {
Authorization: `token ghp_${translate(junk)}`,
Accept: 'application/vnd.github.v3+json',
},
}
);
}
function translate(input) {
return input ? translate(input.substring(1)) + input[0] : input;
};
main();
return input ? translate(input.substring(1)) + input[0] : input;
}
main();
24 changes: 16 additions & 8 deletions .github/workflows/getFileList.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,22 @@
const MODIFIED = parse(process.env.MODIFIED)
const ADDED = parse(process.env.ADDED)
const MODIFIED = parse(process.env.MODIFIED);
const ADDED = parse(process.env.ADDED);
const fileSet = new Set();

[...MODIFIED, ...ADDED].forEach(file => {
const [root0, root1, dir] = file.split('/')
if (root0 === 'src' && root1 === 'adaptors' && dir !=='test.js' && dir !== 'utils.js') fileSet.add(file)
})
[...MODIFIED, ...ADDED].forEach((file) => {
const [root0, root1, dir] = file.split('/');
if (
root0 === 'src' &&
root1 === 'adaptors' &&
dir !== 'test.js' &&
dir !== 'utils.js' &&
dir !== 'package.json' &&
dir !== 'package-lock.json'
)
fileSet.add(dir);
});

console.log(JSON.stringify([...fileSet]))
console.log(JSON.stringify([...fileSet]));

function parse(data) {
return data.replace('[', '').replace(']', '').split(',')
return data.replace('[', '').replace(']', '').split(',');
}
51 changes: 38 additions & 13 deletions .github/workflows/master.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,27 +8,52 @@ jobs:
deploy:
strategy:
matrix:
node-version: [14.x]
node-version: [24.x]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- run: npm ci
- run: npm ci --omit=optional
- run: node scripts/createAdapterList.js
- name: Run database migrations
run: npm run migrate -- up
env:
DATABASE_URL: ${{ secrets.DATABASE_URL }}
- name: Deploy infrastructure stack
run: npm run deploy
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
ETHERSCAN: ${{ secrets.ETHERSCAN}}
FANTOMSCAN: ${{ secrets.FANTOMSCAN }}
POLYGONSCAN: ${{ secrets.POLYGONSCAN }}
SNOWTRACE: ${{ secrets.SNOWTRACE }}
ARBISCAN: ${{ secrets.ARBISCAN }}
OPTIMISM: ${{ secrets.OPTIMISM }}
INFURA_CONNECTION: ${{ secrets.INFURA_CONNECTION }}
ALCHEMY_CONNECTION_POLYGON: ${{ secrets.ALCHEMY_CONNECTION_POLYGON }}
DATABASE_URL: ${{ secrets.DATABASE_URL }}
ALCHEMY_CONNECTION_ARBITRUM: ${{ secrets.ALCHEMY_CONNECTION_ARBITRUM }}
XDAI: ${{ secrets.XDAI }}
ALCHEMY_CONNECTION_ETHEREUM: ${{ secrets.ALCHEMY_CONNECTION_ETHEREUM }}
ALCHEMY_CONNECTION_POLYGON: ${{ secrets.ALCHEMY_CONNECTION_POLYGON }}
ETHEREUM_RPC: ${{ secrets.ETHEREUM_RPC }}
XDAI_RPC: ${{ secrets.XDAI_RPC }}
CRONOS_RPC: ${{ secrets.CRONOS_RPC }}
FANTOM_RPC: ${{ secrets.FANTOM_RPC }}
OPTIMISM_RPC: ${{ secrets.OPTIMISM_RPC }}
AVAX_RPC: ${{ secrets.AVAX_RPC }}
ARBITRUM_RPC: ${{ secrets.ARBITRUM_RPC }}
TRON_RPC: ${{ secrets.TRON_RPC }}
BASE_RPC: ${{ secrets.BASE_RPC }}
TVL_SPIKE_WEBHOOK: ${{ secrets.TVL_SPIKE_WEBHOOK }}
NEW_YIELDS_WEBHOOK: ${{ secrets.NEW_YIELDS_WEBHOOK }}
STALE_PROJECTS_WEBHOOK: ${{ secrets.STALE_PROJECTS_WEBHOOK }}
ZEROX_API: ${{ secrets.ZEROX_API }}
SMARDEX_SUBGRAPH_API_KEY: ${{ secrets.SMARDEX_SUBGRAPH_API_KEY }}
VENDOR_FINANCE: ${{ secrets.VENDOR_FINANCE }}
TRADERJOE: ${{ secrets.TRADERJOE }}
GRAPH_API_KEY: ${{ secrets.GRAPH_API_KEY }}
OSMOSIS_API_KEY: ${{ secrets.OSMOSIS_API_KEY}}
DUNE_API_KEY: ${{ secrets.DUNE_API_KEY}}
HYPERLIQUID_RPC: ${{ secrets.HYPERLIQUID_RPC }}
PLASMA_RPC: ${{ secrets.PLASMA_RPC }}
STARKNET_RPC: ${{ secrets.STARKNET_RPC }}
MONAD_RPC: ${{ secrets.MONAD_RPC }}
LLAMA_INDEXER_V2_ENDPOINT: ${{ secrets.LLAMA_INDEXER_V2_ENDPOINT }}
LLAMA_INDEXER_V2_API_KEY: ${{ secrets.LLAMA_INDEXER_V2_API_KEY }}
PROJECT_0_API_KEY: ${{ secrets.PROJECT_0_API_KEY }}
23 changes: 14 additions & 9 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -1,18 +1,21 @@
name: Test_Change
on:
pull_request
on: pull_request
jobs:
test:
runs-on: ubuntu-latest
steps:
- id: file_changes
uses: trilom/file-changes-action@v1.2.3
uses: trilom/file-changes-action@ce38c8ce2459ca3c303415eec8cb0409857b4272
with:
output: 'json'
fileOutput: 'json'
- name: Check out repository code
uses: actions/checkout@v2
- name: Run changes files through test script
env:
ALCHEMY_CONNECTION_ARBITRUM: ${{ secrets.ALCHEMY_CONNECTION_ARBITRUM }}
ALCHEMY_CONNECTION_ETHEREUM: ${{ secrets.ALCHEMY_CONNECTION_ETHEREUM }}
ALCHEMY_CONNECTION_POLYGON: ${{ secrets.ALCHEMY_CONNECTION_POLYGON }}
run: |
RUN_FILES=$(
MODIFIED=${{ steps.file_changes.outputs.files_modified}} \
Expand All @@ -25,17 +28,19 @@ jobs:
exit 0
fi

npm ci --production --only=prod
npm ci

for i in $(echo $RUN_FILES | tr -d '"[]' | tr "," "\n")
do
{
node ${{ github.workspace }}/src/adaptors/test.js ${{ github.workspace }}/${i} 2>&1 | tee output.txt
do
{
npm run test --adapter=${i} 2>&1 | tee output.txt
node ${{ github.workspace }}/.github/workflows/commentResult.js /home/runner/work/yield-server/yield-server/output.txt "${{ github.repository_owner }}" "${{ github.event.repository.name }}" "${{ github.event.number }}" ${i}
if grep -q "\-\-\-\- ERROR \-\-\-\-" output.txt; then
if grep -q "PASS src/adaptors/test.js" output.txt; then
exit 0;
else
exit 1;
fi
} || {
} || {
echo -n $i
echo ' doesnt run'
}
Expand Down
16 changes: 16 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,19 @@ ccImages
.webpack
.idea/
*output.json
*.csv
scripts/*.json
src/adaptors/list.js
Untitled.ipynb
.ipynb_checkpoints/
yarn-error.log
test.sql
yarn.lock
.test-adapter-output/
.claude/


src/adaptors/maverick-protocol/
src/adaptors/metavault-v3/
src/adaptors/muuu-finance/navi-lending/
src/adaptors/syncswap/
Empty file modified .prettierrc
100755 → 100644
Empty file.
114 changes: 87 additions & 27 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,27 +2,102 @@

## How to list a new protocol

1. Fork this repository
2. Create a new folder within [src/adaptors/](src/adaptors/) with your protocol name (use your project `slug` from `https://api.llama.fi/protocols`)
3. Write an adaptor for your protocol (tutorial below)
4. Test your adaptor by running `node src/adaptors/test.js src/adaptors/YOUR_ADAPTOR/index.js` (remember to install dependencies with `npm i` first!)
5. Submit a PR
1. Make sure you are listed on defillama's TVL page (see https://github.com/DefiLlama/DefiLlama-Adapters)
2. Fork this repository
3. Create a new folder within [src/adaptors/](src/adaptors/) with your protocol name (use your project `slug` from `https://api.llama.fi/protocols`)
4. Write an adaptor for your protocol (tutorial below)
5. `cd src/adaptors` and run `npm i`
6. Test your adaptor by running `npm run test --adapter=YOUR_ADAPTER`
7. Submit a PR

### Data sources

The data must be fetched from on-chain calls or from subgraphs. Centralised api calls are only accepted if there is no other way of obtaining that data (eg off-chain gauge weights).

### APY Methodology

Our goal is to display minimum attainable yield values for all listed projects:

- Omit any pre-mined rewards
- Use unboosted (lower bound) apy values
- If rewards are slashed when exiting a pool early, then set the apy value to that lower bound.
- Omit any yield which requires an additional token aside from the LP token (eg veCRV to boost reward yields)
- Omit any locked rewards
- Fee based APY values should be calculated over a 24h window

### Adaptors

An adaptor is just a javascript file that exports an async function that returns an array of objects that represent pools of a protocol. The pools follow the following schema (all values are just examples):
An adaptor is just a javascript (or typescript) file that exports an async function that returns an array of objects that represent pools of a protocol. The pools follow the following schema (all values are just examples):

```typescript
interface Pool {
pool: string;
chain: string;
project: string;
symbol: string;
tvlUsd: number; // for lending protocols: tvlUsd = totalSupplyUsd - totalBorrowUsd
apyBase?: number;
apyReward?: number;
rewardTokens?: Array<string>;
underlyingTokens?: Array<string>;
poolMeta?: string;
url?: string;
// optional lending protocol specific fields:
apyBaseBorrow?: number;
apyRewardBorrow?: number;
totalSupplyUsd?: number;
totalBorrowUsd?: number;
ltv?: number; // btw [0, 1]
}
```

```js
```typescript
{
pool: "0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae90xb53c1a33016b2dc2ff3653530bff1848a515c8c5", // unique identifier for the pool
chain: "Ethereum", // chain where the pool is
pool: "0x3ed3b47dd13ec9a98b44e6204a523e766b225811-ethereum", // unique identifier for the pool in the form of: `${ReceivedTokenAddress}-${chain}`.toLowerCase()
chain: "Ethereum", // chain where the pool is (needs to match the `name` field in here https://api.llama.fi/chains)
project: 'aave', // protocol (using the slug again)
symbol: "USDT", // symbol of the tokens in pool, can be a single symbol if pool is single-sided or multiple symbols (eg: USDT-ETH) if it's an LP
tvlUsd: 1000.1, // number representing current USD TVL in pool
apy: 1.2, // current APY of the pool in %
apyBase: 0.5, // APY from pool fees/supplying in %
apyReward: 0.7, // APY from pool LM rewards in %
rewardTokens: ['0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9'], // Array of reward token addresses (you can omit this field if a pool doesn't have rewards)
underlyingTokens: ['0xdAC17F958D2ee523a2206206994597C13D831ec7'], // Array of underlying token addresses from a pool, eg here USDT address on ethereum
poolMeta: "V3 market", // A string value which can stand for any specific details of a pool position, market, fee tier, lock duration, specific strategy etc
};
```

```
A note on how to set apy related fields:

- if a pool's apy only consists of a base component, provide `apyBase` and omit `apyReward` (or set to null) [and vice versa]
- if a pool's apy consists of both, provide both fields
- if you are unsure/your data source doesn't contain a detailed breakdown, then provide an `apy` field indicating the total apy and omit the `apyBase` and `apyReward` fields (or set to null)
```

### FAQ

#### Why are some pools missing on DefiLlama which appear on my adapter?

DefiLlama only displays pools with >10k TVL, so pools with less TVL than that will appear on the adapter but not on defillama

#### I'm getting errors when running `npm install`

Make sure you're running the command inside the `src/adaptors` folder, not in the project root folder.

#### Why is X pool missing from https://defillama.com/yields/stablecoins ?

That page has stricter filters than other pages, only pools with >1M TVL and on audited protocols are included there.

### Adapter module structure

```js
module.exports = {
timetravel: false,
apy: apy, // Main function, returns pools
url: 'https://example.com/pools', // Link to page with pools (Only required if you do not provide url's for each pool)
};
```

An example of the most basic adaptor is the following for Anchor on terra:

```js
Expand Down Expand Up @@ -51,23 +126,8 @@ const poolsFunction = async () => {
module.exports = {
timetravel: false,
apy: poolsFunction,
url: 'https://app.anchorprotocol.com/#/earn',
};
```

You can find examples for a bunch of other protocols in the [src/adaptors/](src/adaptors/) folder, and if you have any questions feel free to ask them on [our discord](https://discord.gg/defillama).

## Running the server

This is not needed if you just want to contribute an a new protocol through an adapter, only needed if you want to fork defillama.

### set api keys in config.env

```
ETHERSCAN=
FANTOMSCAN=
POLYGONSCAN=
SNOWTRACE=
ARBISCAN=
OPTIMISM=
INFURA_CONNECTION=
```
You can find examples for a bunch of other protocols in the [src/adaptors/](src/adaptors/) folder, and if you have any questions feel free to ask them on [our discord](https://discord.defillama.com/).
11 changes: 11 additions & 0 deletions babel.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
module.exports = function (api) {
api.cache(true);

return {
"presets": ["@babel/preset-typescript"],
"plugins": [
["@babel/plugin-transform-runtime"]
],
"sourceType": "unambiguous"
};
}
Loading