Skip to content

Commit 0184e29

Browse files
authored
feat(bitty): add bitty.io eth chain stats (#16189)
1 parent 7a67776 commit 0184e29

File tree

4 files changed

+97
-0
lines changed

4 files changed

+97
-0
lines changed

projects/bitty/helper/abis.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
module.exports = {
2+
UiPoolDataProvider: {
3+
getSimpleReservesData: "function getSimpleReservesData(address provider) view returns (tuple(address underlyingAsset, string name, string symbol, uint256 decimals, uint256 reserveFactor, bool borrowingEnabled, bool isActive, bool isFrozen, uint128 liquidityIndex, uint128 variableBorrowIndex, uint128 liquidityRate, uint128 variableBorrowRate, uint40 lastUpdateTimestamp, address bTokenAddress, address debtTokenAddress, address interestRateAddress, uint256 availableLiquidity, uint256 totalVariableDebt, uint256 priceInEth, uint256 variableRateSlope1, uint256 variableRateSlope2)[])"
4+
},
5+
BNFTRegistry: {
6+
getBNFTAssetList: "function getBNFTAssetList() external view returns (address[] memory)",
7+
bNftProxys: "function bNftProxys(address) view returns (address)"
8+
},
9+
};

projects/bitty/helper/address.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
const ChainEthereum = {
2+
UiPoolDataProvider: "0xb1CB6836179FeA21d2B9c9D45678D6F1B0058176",
3+
LendPoolAddressesProvider: "0xCBF9c46BC8837F295b0f0d483662e9ac58D7Cb64",
4+
BNFTRegistry: "0x2aaEe23d422e054132D85Db145cA8B08Fb07aC64"
5+
}
6+
7+
module.exports = {
8+
ethereum: ChainEthereum,
9+
}

projects/bitty/helper/index.js

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
const sdk = require("@defillama/sdk");
2+
const { sumTokens2 } = require("../../helper/unwrapLPs");
3+
4+
const abis = require("./abis");
5+
const address = require("./address");
6+
7+
async function tvl(api) {
8+
const addressMap = address[api.chain];
9+
10+
const [simpleReservesData, bnftAssetList] = await Promise.all([
11+
api.call({
12+
target: addressMap.UiPoolDataProvider,
13+
params: [addressMap.LendPoolAddressesProvider],
14+
abi: abis.UiPoolDataProvider.getSimpleReservesData,
15+
}),
16+
api.call({
17+
target: addressMap.BNFTRegistry,
18+
abi: abis.BNFTRegistry.getBNFTAssetList,
19+
}),
20+
]);
21+
22+
const bnftProxyList = await api.multiCall({
23+
calls: bnftAssetList,
24+
target: addressMap.BNFTRegistry,
25+
abi: abis.BNFTRegistry.bNftProxys,
26+
});
27+
28+
const toa = [
29+
...bnftAssetList.map((bnftAsset, idx) => {
30+
const bnftProxy = bnftProxyList[idx];
31+
return [bnftAsset, bnftProxy];
32+
}),
33+
...simpleReservesData.map((reserve) => [
34+
reserve.underlyingAsset,
35+
reserve.bTokenAddress,
36+
]),
37+
];
38+
39+
const balances = await sumTokens2({ api, tokensAndOwners: toa });
40+
41+
return balances;
42+
}
43+
44+
async function borrowed(api) {
45+
const balances = {};
46+
const addressMap = address[api.chain];
47+
48+
const simpleReservesData = await api.call({
49+
target: addressMap.UiPoolDataProvider,
50+
params: [addressMap.LendPoolAddressesProvider],
51+
abi: abis.UiPoolDataProvider.getSimpleReservesData,
52+
});
53+
54+
simpleReservesData.forEach((d) => {
55+
sdk.util.sumSingleBalance(
56+
balances,
57+
d.underlyingAsset,
58+
d.totalVariableDebt,
59+
api.chain
60+
);
61+
});
62+
63+
return balances;
64+
}
65+
66+
module.exports = {
67+
tvl,
68+
borrowed,
69+
}

projects/bitty/index.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
const { tvl, borrowed } = require("./helper");
2+
const methodologies = require("../helper/methodologies");
3+
4+
module.exports = {
5+
methodology: methodologies.lendingMarket,
6+
ethereum: {
7+
tvl,
8+
borrowed,
9+
}
10+
};

0 commit comments

Comments
 (0)