Skip to content

Commit bbaaa48

Browse files
authored
Merge pull request #2201 from silo-finance/feat/silo-v2-vault-support
chore(silo-v2): exclude stream-impacted markets and vaults
2 parents 44c31ab + fc36cc5 commit bbaaa48

File tree

1 file changed

+86
-19
lines changed

1 file changed

+86
-19
lines changed

src/adaptors/silo-v2/index.js

Lines changed: 86 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,72 @@ BigNumber.config({ EXPONENTIAL_AT: [-1e9, 1e9] });
1010
const XAI = '0xd7c9f0e536dc865ae858b0c0453fe76d13c3beac'
1111
const blacklistedSilos = ["0x6543ee07cf5dd7ad17aeecf22ba75860ef3bbaaa",];
1212

13+
const badDebtSilos = {
14+
sonic: [
15+
"0xCCdDbBbd1E36a6EDA3a84CdCee2040A86225Ba71", // wmetaUSD - Sonic
16+
"0xEd9777944A2Fb32504a410D23f246463B3f40908", // USDC (wmetaUSD) - Sonic
17+
"0x6e8C150224D6e9B646889b96EFF6f7FD742e2C22", // wmetaUSD - Sonic
18+
"0x0aB02DD08c1555d1a20C76a6EA30e3E36f3e06d4", // scUSD (wmetaUSD) - Sonic
19+
"0x75c550776c191A8F6aE22EdC742aD2788723B66E", // wmetaUSD - Sonic
20+
"0xc6ee9A58D5270e53fD1361946899b6D0553142B4", // scUSD (wmetaUSD) - Sonic
21+
"0x501Ee3D6cB84004c7970cA24f3daC07D61A25e4D", // wmetaUSD - Sonic
22+
"0x1A089424F52502139888fa4c0ED2FA088e9E1d51", // USDC (wmetaUSD) - Sonic
23+
"0x1c1791911483E98875D162355feC47f37613f0FB", // wmetaS - Sonic
24+
"0x8c98b43BF61F2B07c4D26f85732217948Fca2a90", // wS (wmetaS) - Sonic
25+
"0xA1627a0E1d0ebcA9326D2219B84Df0c600bed4b1", // USDC - Sonic (Stream-impacted)
26+
"0xb1412442aa998950f2f652667d5Eba35fE66E43f", // scUSD - Sonic (Stream-impacted)
27+
"0x27968d36b937DcB26F33902fA489E5b228b104BE", // dUSD - Sonic (Stream-impacted)
28+
"0x76DF755A9f40463F14d0a2b7Cba3Ccf05404eEdf", // dUSD - Sonic (Stream-impacted)
29+
"0xAF1BDaE843d90c546DE5001f7b107B46e1a26Aa9", // dUSD - Sonic (Stream-impacted)
30+
"0x5954ce6671d97D24B782920ddCdBB4b1E63aB2De", // USDC - Sonic (Stream-impacted)
31+
"0x4935FaDB17df859667Cc4F7bfE6a8cB24f86F8d0", // USDC - Sonic (Stream-impacted)
32+
"0x219656F33c58488D09d518BaDF50AA8CdCAcA2Aa", // ETH - Sonic (Stream-impacted)
33+
].map(entry => entry.toLowerCase()),
34+
ethereum: [
35+
"0x1dE3bA67Da79A81Bc0c3922689c98550e4bd9bc2", // USDC - ethereum (Stream-impacted)
36+
].map(entry => entry.toLowerCase()),
37+
arbitrum: [
38+
"0xACb7432a4BB15402CE2afe0A7C9D5b738604F6F9", // USDC - Arbitrum (Stream-impacted)
39+
"0x2433D6AC11193b4695D9ca73530de93c538aD18a", // USDC - Arbitrum (Stream-impacted)
40+
].map(entry => entry.toLowerCase()),
41+
avax: [
42+
"0x672b77f0538b53Dc117C9dDfEb7377A678d321a6", // USDC - Avalanche (Stream-impacted)
43+
"0xE0fc62e685E2b3183b4B88b1fE674cFEc55a63F7", // USDT - Avalanche (Stream-impacted)
44+
"0x9C4D4800b489d217724155399CD64D07Eae603f3", // AUSD - Avalanche (Stream-impacted)
45+
"0x7437ac81457Fa98fFB2d0C8f9943ecfE4813e2f1", // BTC.b - Avalanche (Stream-impacted)
46+
].map(entry => entry.toLowerCase()),
47+
};
48+
49+
const badDebtVaults = {
50+
sonic: [
51+
"0xcca902f2d3d265151f123d8ce8FdAc38ba9745ed", // USDC - Sonic (Stream-impacted)
52+
"0x2bc6F1406D736Cc09631676c992Abbf2CeD789e7", // USDC - Sonic (Stream-impacted)
53+
"0xF75AE954D30217B4EE70DbFB33f04162aa3Cf260", // USDC - Sonic (Stream-impacted)
54+
"0xb47cB414aaB743C977DfD1FDB758f971907e810e", // USDC - Sonic (Stream-impacted)
55+
"0xF6F87073cF8929C206A77b0694619DC776F89885", // USDC - Sonic (Stream-impacted)
56+
"0x391b3F70E254d582588B27e97E48D1CFcdf0BE7e", // scUSD - Sonic (Stream-impacted)
57+
"0x9A1BF5365edBB99C2c61CA6D9ffAd0B705ACfc6F", // dUSD - Sonic (Stream-impacted)
58+
"0xb6A23cB29e512Df41876B28D7A848BD831f9c5Ba", // scUSD - Sonic (Stream-impacted)
59+
"0xf6bC16B79c469b94Cdd25F3e2334DD4FEE47A581", // USDC - Sonic (Stream-impacted)
60+
"0xCc7bDB3FF050D65918b96e4BDf1060a1aA0bB409", // ETH - Sonic (Stream-impacted)
61+
].map(entry => entry.toLowerCase()),
62+
ethereum: [
63+
"0x8399C8Fc273bD165C346Af74A02e65f10e4FD78F", // USDC - ethereum (Stream-impacted)
64+
].map(entry => entry.toLowerCase()),
65+
arbitrum: [
66+
"0x7C1C43Df1B08A7de4e25E7a8f5867efDCc812B95", // USDC - Arbitrum (Stream-impacted)
67+
"0x2BA39e5388aC6C702Cb29AEA78d52aa66832f1ee", // USDC - Arbitrum (Stream-impacted)
68+
"0xac69CFe6BB269CeBF8ab4764d7E678C3658b99f2", // USDC - Arbitrum (Stream-impacted)
69+
].map(entry => entry.toLowerCase()),
70+
avalanche: [
71+
"0x4dc1ce9b9f9EF00c144BfAD305f16c62293dC0E8", // USDC - Avalanche (Stream-impacted)
72+
"0x1f8E769B5B6010B2C2BBCd68629EA1a0a0Eda7E3", // BTC.b - Avalanche (Stream-impacted)
73+
"0x6c09bfdc1df45D6c4Ff78Dc9F1C13aF29eB335d4", // USDC - Avalanche (Stream-impacted)
74+
"0x3d7B0c3997E48fA3FC96cd057d1fb4E5F891835B", // AUSD - Avalanche (Stream-impacted)
75+
"0x36E2AA296E798Ca6262DC5Fad5F5660e638d5402", // USDC - Avalanche (Stream-impacted)
76+
].map(entry => entry.toLowerCase()),
77+
};
78+
1379
const getAssetAbiV2 = "address:asset";
1480
const getSiloConfigMarketId = "uint256:SILO_ID";
1581
const getAssetBalanceAbi = "function balanceOf(address account) external view returns (uint256)";
@@ -322,7 +388,7 @@ async function getSilosV2(chainApi, deploymentData) {
322388
siloAddressesToSiloConfigAddress[silo1] = siloConfig;
323389

324390
return [silo0, silo1].filter(
325-
(address) => blacklistedSilos.indexOf(address.toLowerCase()) === -1
391+
(address) => ((blacklistedSilos.indexOf(address.toLowerCase()) === -1) && (badDebtSilos[chain]?.indexOf(address.toLowerCase()) === -1))
326392
);
327393
});
328394

@@ -331,13 +397,14 @@ async function getSilosV2(chainApi, deploymentData) {
331397
return { siloAddresses, siloAddressesToSiloConfigAddress };
332398
}
333399

334-
async function getVaultData(api, deploymentData) {
400+
async function getVaultData(api, deploymentData, chain) {
335401

336402
// Handle V2 Vaults
337403
let rawVaultData = {};
338404
let assetDataByVault = {};
339405
let assetsForPriceData = [];
340406
let subgraphVaults;
407+
let filteredSubgraphVaults = [];
341408
if(deploymentData?.SUBGRAPH_URL) {
342409
const vaultQuery = gql`
343410
{
@@ -359,20 +426,20 @@ async function getVaultData(api, deploymentData) {
359426
`;
360427
subgraphVaults = await request(deploymentData?.SUBGRAPH_URL, vaultQuery);
361428

362-
for(let vault of subgraphVaults?.vaults) {
363-
// Only collect data for vaults with a positive supply
364-
if(vault?.totalSupply && new BigNumber(vault.totalSupply).isGreaterThan(0)) {
365-
rawVaultData[vault.id] = {
366-
id: vault.id,
367-
name: vault.name,
368-
totalSupply: vault.totalSupply,
369-
assetRatio: vault.assetRatio,
370-
asset: vault.asset,
371-
performanceFee: vault.performanceFee ? ethers.utils.formatUnits(vault.performanceFee, 16) : 0,
372-
}
373-
if(vault?.asset?.id && assetsForPriceData?.indexOf(vault?.asset?.id) === -1) {
374-
assetsForPriceData.push(vault?.asset?.id);
375-
}
429+
// Only collect data for vaults with a positive supply & which aren't in the badDebtVaults list
430+
filteredSubgraphVaults = subgraphVaults?.vaults.filter((vault) => (vault?.totalSupply && new BigNumber(vault.totalSupply).isGreaterThan(0) && (badDebtVaults[chain]?.indexOf(vault.id.toLowerCase()) === -1)));
431+
432+
for(let vault of filteredSubgraphVaults) {
433+
rawVaultData[vault.id] = {
434+
id: vault.id,
435+
name: vault.name,
436+
totalSupply: vault.totalSupply,
437+
assetRatio: vault.assetRatio,
438+
asset: vault.asset,
439+
performanceFee: vault.performanceFee ? ethers.utils.formatUnits(vault.performanceFee, 16) : 0,
440+
}
441+
if(vault?.asset?.id && assetsForPriceData?.indexOf(vault?.asset?.id) === -1) {
442+
assetsForPriceData.push(vault?.asset?.id);
376443
}
377444
}
378445

@@ -384,8 +451,8 @@ async function getVaultData(api, deploymentData) {
384451
const VAULT_POSITION_BATCH_SIZE = 10;
385452
let vaultBatches = [];
386453
let vaultIdToPositionMetadata = {};
387-
for (let i = 0; i < subgraphVaults?.vaults?.length; i += VAULT_POSITION_BATCH_SIZE) {
388-
const batch = subgraphVaults?.vaults.slice(i, i + VAULT_POSITION_BATCH_SIZE);
454+
for (let i = 0; i < filteredSubgraphVaults?.length; i += VAULT_POSITION_BATCH_SIZE) {
455+
const batch = filteredSubgraphVaults.slice(i, i + VAULT_POSITION_BATCH_SIZE);
389456
vaultBatches.push(batch);
390457
}
391458

@@ -555,7 +622,7 @@ const main = async () => {
555622
}
556623
}
557624

558-
let vaultData = await getVaultData(api, deploymentData);
625+
let vaultData = await getVaultData(api, deploymentData, chain);
559626

560627
for(let [vaultAddress, vaultInfo] of Object.entries(vaultData)) {
561628
let vaultPoolId = `${vaultInfo.vaultId}-${vaultAddress}-${chain}`;

0 commit comments

Comments
 (0)