Skip to content

Commit 4f1b1a4

Browse files
authored
Merge branch 'DefiLlama:main' into main
2 parents f31f553 + 88ebec4 commit 4f1b1a4

24 files changed

Lines changed: 506 additions & 93 deletions

File tree

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
name: Build tvlModules and upload artifact
2+
3+
on:
4+
push:
5+
branches: [ "main" ]
6+
7+
jobs:
8+
build-and-upload:
9+
runs-on: ubuntu-latest
10+
steps:
11+
- name: Checkout repository
12+
uses: actions/checkout@v4
13+
with:
14+
fetch-depth: 0
15+
16+
- name: Setup Node.js
17+
uses: actions/setup-node@v4
18+
with:
19+
node-version: "20"
20+
21+
- name: Install dependencies
22+
run: npm ci
23+
24+
- name: Run buildImports script
25+
run: node scripts/buildImports.js
26+
27+
- name: Publish tvlModules.json as "latest" release
28+
uses: ncipollo/release-action@v1
29+
with:
30+
tag: latest
31+
name: Latest tvlModules
32+
artifacts: scripts/tvlModules.json
33+
allowUpdates: true

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,6 @@ yarn.lock
1010
.vscode
1111
projects/binance/data.csv
1212

13-
*.log
13+
*.log
14+
15+
scripts/tvlModules.json

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
"test": "echo \"Error: no test specified\" && exit 1",
88
"weeklyChanges": "git pull && git diff $(git log -1 --before=@{7.days.ago} --format=%H) --stat | grep -E \"projects/\" | cut -d / -f 2 | cut -d \" \" -f 1 | uniq | wc -l",
99
"dev": "babel-watch curve.js",
10+
"build": "node scripts/buildImports.js",
1011
"lint": "eslint -c .eslintrc.js .",
1112
"eslint:github-action": "eslint -c .eslintrc.js .",
1213
"test-interactive": "node utils/testInteractive",

projects/2pi/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ const tvl = async (api) => {
3131
api.add(tokens, bals)
3232
}
3333

34+
module.exports.deadFrom = '2025-01-01'
3435

3536
Object.keys(chains).forEach(chain => {
3637
module.exports[chain] = { tvl }

projects/bio/index.js

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
// Token and staking contract configurations per chain
2+
const config = {
3+
ethereum: [
4+
// BIO token staking (veBio)
5+
{ token: '0xcb1592591996765Ec0eFc1f92599A19767ee5ffA', staking: '0xF91a12742Aa609d41513a137d3c36b749F56f40C' },
6+
// HairDAO
7+
{ token: '0x9Ce115f0341ae5daBC8B477b74E83db2018A6f42', staking: '0xB90F1028266210a007780E6A37D2c36738830F69' },
8+
// VitaDAO
9+
{ token: '0x81f8f0bb1cB2A06649E51913A151F0E7Ef6FA321', staking: '0x3350153900C0bD8DfDbfE77B274Ac4e49d002588' },
10+
// AthenaDAO
11+
{ token: '0xA4fFdf3208F46898CE063e25c1C43056FA754739', staking: '0x67CdF8faF53fe5411940caE499799242c6dFCeCc' },
12+
// ValleyDAO
13+
{ token: '0x761A3557184cbC07b7493da0661c41177b2f97fA', staking: '0xD12E4175619607A39299388D0f8a4233f3121E79' },
14+
// CryoDAO
15+
{ token: '0xf4308b0263723b121056938c2172868E408079D0', staking: '0x0BB56479c5D9d253E22380ecFe9a2885aa126cCa' },
16+
// Cerebrum DAO
17+
{ token: '0xab814ce69E15F6B9660A3B184c0B0C97B9394A6b', staking: '0x357d6E1AE7c075984174d2a7E96f6E724ED0Ae7c' },
18+
// PsyDAO
19+
{ token: '0x2196B84EaCe74867b73fb003AfF93C11FcE1D47A', staking: '0x023c3e7cC97b5d00Bc88B47e068D324FafFB98BE' },
20+
// Quantum Biology DAO
21+
{ token: '0x3e6a1b21bd267677fa49be6425aebe2fc0f89bde', staking: '0xE41BA1329c76640A5DA6D995bfd1b56A08c52352' },
22+
],
23+
base: [
24+
// BIO token staking (veBio)
25+
{ token: '0x226A2FA2556C48245E57cd1cbA4C6c9e67077DD2', staking: '0xE1B48C0279Cd95D984f1290293116c45D049A3bD' },
26+
// HairDAO
27+
{ token: '0x3a38dde9824e18CC4C0A147824F95Bf5d608F0B3', staking: '0xEe8Ea7C133d986b8D9a2708Ef50d83D81fF3b4A1' },
28+
// VitaDAO
29+
{ token: '0x490a4B510d0Ea9f835D2dF29Eb73b4FcA5071937', staking: '0xCBD956381a12Cc84302344960C95E4AC313845db' },
30+
// AthenaDAO
31+
{ token: '0x58D75a1c4477914f9a98A8708fEaeD1DbE40b8a3', staking: '0xE01B67eacA87d742638842FcEb9E8C2f006dc29b' },
32+
// ValleyDAO
33+
{ token: '0x321725ee44cb4bfa544cf45a5a585b925d30a58c', staking: '0x6C85E430Ac13F6e88C83434b7789B969497Ca9f8' },
34+
// CryoDAO
35+
{ token: '0x1f4446fAAAed23090f324f051C3F8c5ce5aD1c36', staking: '0xe1eA71E1c1Dc3C2492A4D6B7618840d9f1EbE13F' },
36+
// Cerebrum DAO
37+
{ token: '0x3568c7a4f7545805e379c264303239781B4E9A79', staking: '0x85ecbC26F39fdCA293D76C40Fdd9feADc6a66797' },
38+
// Aubrai
39+
{ token: '0x9d56c29e820dd13b0580b185d0e0dc301d27581d', staking: '0xAfb64ab91DA6Be665d84016844e5C345399e07D0' },
40+
// PsyDAO
41+
{ token: '0x85d0e1bde4e71aede97e0f0412c6e4b3d1e59a97', staking: '0x852c11E88478aaFda31950F9E4F4Fe86d9342e53' },
42+
// BiomeAI
43+
{ token: '0x492AE2107F952b02f2554cE153841933c09d6d43', staking: '0xec637540aE2DA2b795aFe9427B840A827cF72f9a' },
44+
// EDMT
45+
{ token: '0x7dB6dFE35158bab10039648CE0e0e119d0ec21ec', staking: '0x9dFF3a11F315288cdb100364D6a81088ea9C6A7F' },
46+
// D1CKGPT
47+
{ token: '0xE183b1A4DD59Ca732211678EcA1836EE35bCE582', staking: '0xf17268f639C67512AB3857bD2113EE147eCD1C18' },
48+
// vitastem
49+
{ token: '0x5D4d258144bc954aEfC00ee6cBdA0433b1B2dcD3', staking: '0x240384103A66B87aB055BfC905306f1BA406941C' },
50+
],
51+
}
52+
53+
async function tvl(api) {
54+
const chainConfig = config[api.chain]
55+
if (!chainConfig) return {}
56+
57+
const tokens = chainConfig.map(c => c.token)
58+
const calls = chainConfig.map(c => ({ target: c.token, params: [c.staking] }))
59+
60+
const balances = await api.multiCall({ abi: 'erc20:balanceOf', calls })
61+
api.addTokens(tokens, balances)
62+
}
63+
64+
module.exports = {
65+
methodology: 'Calculates TVL by summing token balances in staking/vesting contracts across Ethereum and Base chains',
66+
ethereum: {
67+
tvl: () => ({}),
68+
staking: tvl,
69+
},
70+
base: {
71+
tvl: () => ({}),
72+
staking: tvl,
73+
},
74+
}

projects/clearstar/index.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,11 @@ const configs = {
3333
'0x30988479C2E6a03E7fB65138b94762D41a733458',
3434
],
3535
},
36+
hemi: {
37+
morphoVaultOwners: [
38+
'0x30988479C2E6a03E7fB65138b94762D41a733458'
39+
],
40+
},
3641
}
3742
}
3843

projects/curve/index.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,12 @@ const blacklistedPools = {
5353
'0xc528b0571D0BE4153AEb8DdB8cCeEE63C3Dd7760',
5454
'0x8272E1A3dBef607C04AA6e5BD3a1A134c8ac063B'
5555
],
56+
base: [ ]
57+
}
58+
59+
const globalBlacklistedTokens = {
5660
base: [
57-
'0x302A94E3C28c290EAF2a4605FC52e11Eb915f378', // superOETH
61+
'0xdbfefd2e8460a6ee4955a68582f85708baea60a3', // superOETHb
5862
]
5963
}
6064

@@ -197,7 +201,7 @@ async function unwrapPools({ poolList, registry, chain, block }) {
197201
let calls = aggregateBalanceCalls({ coins, nCoins, wrapped });
198202
const allTokens = getUniqueAddresses(calls.map(i => i[0]))
199203
const tokenNames = await getNames(chain, allTokens)
200-
const blacklistedTokens = [...blacklist, ...(Object.values(metapoolBases))]
204+
const blacklistedTokens = [...blacklist, ...(Object.values(metapoolBases)), ...(globalBlacklistedTokens[chain] ?? [])]
201205
Object.entries(tokenNames).forEach(([token, name]) => {
202206
if ((name ?? '').startsWith('Curve.fi ')) {
203207
sdk.log(chain, 'blacklisting', name)

projects/dragonswap-sei-v3/index.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,15 @@ const { get } = require('../helper/http')
33
const { sumTokens2 } = require('../helper/unwrapLPs')
44

55
const staker = '0x95C683194B45d2d27842c2C87A7D5FfffD8A5eD6'
6+
const stakerV2 = '0xb71886c52D754CF2B1D3d866c7Cfe9eeC01418a7'
67

78
const staking = async (api) => {
89
const stakingToken = await api.call({ target: staker, abi: 'address:stakingToken' })
10+
const stakingTokenV2 = await api.call({ target: stakerV2, abi: 'address:dragon' })
911
const balance = await api.call({ target: staker, abi: 'uint256:totalDeposits' })
12+
const balanceV2 = await api.call({ target: stakerV2, abi: 'uint256:totalDeposits' })
1013
api.add(stakingToken, balance)
14+
api.add(stakingTokenV2, balanceV2)
1115
}
1216

1317
async function tvl(api) {

projects/evedex/index.js

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,18 @@
1-
const { sumTokens2 } = require('../helper/unwrapLPs')
1+
'use strict';
22

3-
const tokens = ['0xC9b68d8ab057b52785cF0e8e983A2eaFE6858979'];
4-
const owner = '0x1DC14e4261eCd7747Cbf6D2C8538a73371405D76';
3+
const ADDRESSES = require('../helper/coreAssets.json');
4+
const { sumTokens2 } = require('../helper/unwrapLPs');
5+
6+
const tokens = [ADDRESSES.eventum.USDT];
7+
const owners = [
8+
'0x1DC14e4261eCd7747Cbf6D2C8538a73371405D76',
9+
'0x5e023c31E1d3dCd08a1B3e8c96f6EF8Aa8FcaCd1',
10+
'0x026968b5cED079ECCD6CC78f35a5Dfddc13F9Af8',
11+
'0x0a9591c64Fd9e8C1f9A81DB1B668a5f211b5735A'
12+
];
513

614
module.exports = {
715
eventum: {
8-
tvl: (api) => sumTokens2({ api, tokens, owner })
16+
tvl: (api) => sumTokens2({ api, tokens, owners })
917
}
1018
}

projects/helper/cache.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@ function getLink(project, chain) {
1515
return `https://${Bucket}.s3.eu-central-1.amazonaws.com/${getKey(project, chain)}`
1616
}
1717

18-
async function getCache(project, chain, { _ } = {}) {
18+
async function getCache(project, chain, { skipCompression } = {}) {
1919
const Key = getKey(project, chain)
2020
const fileKey = getFileKey(project, chain)
2121

2222
try {
23-
const json = await sdk.cache.readCache(fileKey)
23+
const json = await sdk.cache.readCache(fileKey, { skipCompression})
2424
if (!json || Object.keys(json).length === 0) throw new Error('Invalid data')
2525
return json
2626
} catch (e) {
@@ -36,11 +36,13 @@ async function getCache(project, chain, { _ } = {}) {
3636
}
3737
}
3838

39-
async function setCache(project, chain, cache, { _ } = {}) {
39+
async function setCache(project, chain, cache, { skipCompression } = {}) {
4040
const Key = getKey(project, chain)
4141

4242
try {
43-
await sdk.cache.writeCache(getFileKey(project, chain), cache)
43+
await sdk.cache.writeCache(getFileKey(project, chain), cache, {
44+
skipCompression,
45+
})
4446
} catch (e) {
4547
sdk.log('failed to write data to s3 bucket: ', Key)
4648
sdk.log(e)

0 commit comments

Comments
 (0)