Skip to content

Commit

Permalink
Merge pull request #2 from dtrinity/feat/add_dtrinity
Browse files Browse the repository at this point in the history
Add dTrinity adapter
  • Loading branch information
0xstupig authored Jan 6, 2025
2 parents 7cf53d4 + b16e162 commit 2d1b177
Show file tree
Hide file tree
Showing 3 changed files with 107 additions and 110 deletions.
61 changes: 0 additions & 61 deletions projects/dlend/index.js

This file was deleted.

104 changes: 104 additions & 0 deletions projects/dtrinity/helper.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
const erc20Abi = require("../helper/abis/erc20.json");
const ADDRESSES = require('../helper/coreAssets.json')

const dLendABIs = {
getReserveTokensAddresses: "function getReserveTokensAddresses(address asset) view returns (address aTokenAddress, address stableDebtTokenAddress, address variableDebtTokenAddress)",
getAllReservesTokens: "function getAllReservesTokens() view returns ((string symbol, address tokenAddress)[])",
getReserveData: "function getReserveData(address asset) view returns (uint256 unbacked, uint256 accruedToTreasuryScaled, uint256 totalAToken, uint256 totalStableDebt, uint256 totalVariableDebt, uint256 liquidityRate, uint256 variableBorrowRate, uint256 stableBorrowRate, uint256 averageStableBorrowRate, uint256 liquidityIndex, uint256 variableBorrowIndex, uint40 lastUpdateTimestamp)",
};

const CONFIG = {
fraxtal: {
dUSDCollateralVault: "0x624E12dE7a97B8cFc1AD1F050a1c9263b1f4FeBC",
dUSDAMOManager: "0x49a0c8030Ca199f6F246517aE689E3cC0775271a",
dLendProtocolDataProvider: ["0xFB3adf4c845fD6352D24F3F0981eb7954401829c"],
dUSDCollaterals: [
ADDRESSES.fraxtal.FRAX,
ADDRESSES.fraxtal.sFRAX,
ADDRESSES.fraxtal.DAI,
ADDRESSES.fraxtal.sDAI,
ADDRESSES.fraxtal.USDC
]
}
}

const fetchReserveData = async (api, poolDatas, isBorrowed) => {
const reserveTokens = await api.multiCall({
calls: poolDatas,
abi: dLendABIs.getAllReservesTokens
});
const calls = [];

poolDatas.map((pool, i) => {
reserveTokens[i].forEach(({ tokenAddress }) =>
calls.push({ target: pool, params: tokenAddress })
);
});

const reserveData = await api.multiCall({
abi: isBorrowed ? dLendABIs.getReserveData : dLendABIs.getReserveTokensAddresses,
calls
});

const tokensAndOwners = [];
reserveData.forEach((data, i) => {
const token = calls[i].params;
if (isBorrowed) {
api.add(token, data.totalVariableDebt);
} else {
tokensAndOwners.push([token, data.aTokenAddress]);
}
});

if (isBorrowed) return api.getBalances();
return api.sumTokens({ tokensAndOwners });
}

const dUSDCollateralTvl = async (api) => {
const chain = api.chain;
const vault = CONFIG[chain].dUSDCollateralVault;
const collaterals = CONFIG[chain].dUSDCollaterals;
for (const token of collaterals) {
const balance = await api.call({
abi: erc20Abi.balanceOf,
target: token,
params: [vault]
});
api.add(token, balance);
}
}

const dUSDAMOTvl = async (api) => {
const chain = api.chain;
const dUSDAMOManager = CONFIG[chain].dUSDAMOManager;
const totalAmoSupply = await api.call({
abi: "function totalAmoSupply() public view returns (uint256)",
target: dUSDAMOManager
});
api.add(ADDRESSES.fraxtal.dUSD, totalAmoSupply);
}

const dLendTvl = async (api) => {
const chain = api.chain;
const poolDatas = CONFIG[chain].dLendProtocolDataProvider;
const baseTokens = await fetchReserveData(api, poolDatas);
const borrowedTokens = await fetchReserveData(api, poolDatas, true);
return {
...baseTokens,
...borrowedTokens
};
}

const dLendBorrowed = async (api) => {
const chain = api.chain;
const poolDatas = CONFIG[chain].dLendProtocolDataProvider;
const borrowedTokens = await fetchReserveData(api, poolDatas, true);
return borrowedTokens;
}

module.exports = {
dUSDCollateralTvl,
dUSDAMOTvl,
dLendTvl,
dLendBorrowed
};
52 changes: 3 additions & 49 deletions projects/dtrinity/index.js
Original file line number Diff line number Diff line change
@@ -1,64 +1,18 @@
const dlend = require('../dlend');
const erc20Abi = require("../helper/abis/erc20.json");
const ADDRESSES = require('../helper/coreAssets.json')

const CONFIG = {
fraxtal: {
dUSDCollateralVault: "0x624E12dE7a97B8cFc1AD1F050a1c9263b1f4FeBC",
dUSDAMOManager: "0x49a0c8030Ca199f6F246517aE689E3cC0775271a",
dUSDCollaterals: [
ADDRESSES.fraxtal.FRAX,
ADDRESSES.fraxtal.sFRAX,
ADDRESSES.fraxtal.DAI,
ADDRESSES.fraxtal.sDAI,
ADDRESSES.fraxtal.USDC
]
}
}

const dUSDCollateralTvl = async (api) => {
const chain = api.chain;
const vault = CONFIG[chain].dUSDCollateralVault;
const collaterals = CONFIG[chain].dUSDCollaterals;
for (const token of collaterals) {
const balance = await api.call({
abi: erc20Abi.balanceOf,
target: token,
params: [vault]
});
api.add(token, balance);
}
}

const dUSDAMOTvl = async (api) => {
const chain = api.chain;
const dUSDAMOManager = CONFIG[chain].dUSDAMOManager;
const totalAmoSupply = await api.call({
abi: "function totalAmoSupply() public view returns (uint256)",
target: dUSDAMOManager
});
api.add(ADDRESSES.fraxtal.dUSD, totalAmoSupply);
}
const { dLendTvl, dUSDCollateralTvl, dUSDAMOTvl, dLendBorrowed } = require('./helper');

const tvl = async (api) => {
const chain = api.chain;
await Promise.all([
dlend[chain].tvl(api),
dLendTvl(api),
dUSDCollateralTvl(api),
dUSDAMOTvl(api)
]);
return api.getBalances();
}

const borrowed = async (api) => {
const chain = api.chain;
await dlend[chain].borrowed(api);
}

module.exports = {
methodology: 'Includes TVL for dLEND and TVL for dUSD.',
fraxtal: {
tvl,
borrowed
borrowed: dLendBorrowed
}
};

0 comments on commit 2d1b177

Please sign in to comment.