Skip to content

Commit 3f68b24

Browse files
committed
Add ren adapter
1 parent 7943904 commit 3f68b24

File tree

1 file changed

+70
-0
lines changed

1 file changed

+70
-0
lines changed

projects/ren/index.js

+70
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
const { request, gql } = require("graphql-request");
2+
const sdk = require('@defillama/sdk');
3+
const BigNumber = require("bignumber.js")
4+
5+
const graphUrl = 'https://api.thegraph.com/subgraphs/name/renproject/renvm'
6+
const graphQuery = gql`
7+
query get_tvl($block: Int) {
8+
assets(
9+
block: { number: $block }
10+
) {
11+
priceInUsd
12+
symbol
13+
tokenAddress
14+
}
15+
}
16+
`;
17+
const usdtAddress = '0xdac17f958d2ee523a2206206994597c13d831ec7';
18+
const darkNodeStakingContract = "0x60Ab11FE605D2A2C3cf351824816772a131f8782";
19+
const renToken = '0x408e41876cCCDC0F92210600ef50372656052a38'
20+
21+
async function tvl(timestamp, block) {
22+
const balances = {}
23+
const {assets} = await request(
24+
graphUrl,
25+
graphQuery,
26+
{
27+
block,
28+
}
29+
);
30+
const assetCalls = assets.map(asset=>({
31+
target: asset.tokenAddress
32+
}))
33+
const decimals = sdk.api.abi.multiCall({
34+
abi: 'erc20:decimals',
35+
block,
36+
calls: assetCalls
37+
});
38+
const totalSupplies = sdk.api.abi.multiCall({
39+
abi: 'erc20:totalSupply',
40+
block,
41+
calls: assetCalls
42+
});
43+
const stakedRen = await sdk.api.abi.call({
44+
target: renToken,
45+
abi: 'erc20:balanceOf',
46+
params: [darkNodeStakingContract],
47+
block
48+
});
49+
balances[renToken] = stakedRen.output;
50+
51+
const resolvedDecimals = (await decimals).output;
52+
const resolvedSupplies = (await totalSupplies).output
53+
const assetsUsdTvl = assets.reduce((acc, asset, index)=>{
54+
const dec = Number(resolvedDecimals[index].output)
55+
const supply = BigNumber(resolvedSupplies[index].output)
56+
const usdAmount = supply.div(BigNumber(10).pow(dec)).times(asset.priceInUsd).toNumber()
57+
return acc + usdAmount;
58+
}, 0)
59+
balances[usdtAddress]= (assetsUsdTvl * 1e6).toFixed(0)
60+
61+
return balances
62+
}
63+
64+
module.exports = {
65+
name: 'REN',
66+
token: 'REN',
67+
category: 'Assets',
68+
start: 0, // WRONG!
69+
tvl
70+
}

0 commit comments

Comments
 (0)