1- const superform_chains = [ "ethereum" , "polygon" , "bsc" , "avax" , "arbitrum" , "optimism" , "base" , "fantom" , "blast" , "linea" ] ;
2- const factory_contract = "0xD85ec15A9F814D6173bF1a89273bFB3964aAdaEC" ;
3- const fantom_factory_contract = "0xbc85043544CC2b3Fd095d54b6431822979BBB62A" ;
1+ const CONFIG = {
2+ ethereum : { } ,
3+ arbitrum : { blacklistedVaults : [
4+ '0xd3a17928245064b6df5095a76e277fe441d538a4' ,
5+ '0xabc07bf91469c5450d6941dd0770e6e6761b90d6' ,
6+ '0x6f28cafe12bd97e474a52bcbfea6f2c18ae0f53d' ,
7+ '0x0ace2dc3995acd739ae5e0599e71a5524b93b886' ,
8+ '0xb9bfbb35c2ed588a42f9fd1120929c607b463192' ,
9+ '0xbc323e3564fb498e55cdc83a3ea6bb1af8402d6b' ,
10+ '0x1fd865a55eaf5333e6374fb3ad66d22e9885d3aa' ,
11+ '0x866eb09d3d1397b8a28cfe5dceeaed9362840385' ,
12+ '0xd63ace62b925361fc588734022718e919a8081ac' ,
13+ '0xa135d7f10545e3a45e24e79ecd4e4c3c78cf56bf'
14+ ] } ,
15+ polygon : { } ,
16+ bsc : { } ,
17+ avax : { } ,
18+ optimism : { } ,
19+ base : { } ,
20+ fantom : { factory : '0xbc85043544CC2b3Fd095d54b6431822979BBB62A' } ,
21+ blast : { } ,
22+ linea : { }
23+ }
24+
25+ const DEFAULT_FACTORY = '0xD85ec15A9F814D6173bF1a89273bFB3964aAdaEC'
426
5- // These vaults have misconfigured implementation affecting TVL
6- const blacklisted_vaults = [ "0xd3a17928245064b6df5095a76e277fe441d538a4" ]
27+ const previewRedeemFromAbi = "function previewRedeemFrom(uint256) external view returns(uint256)"
728
8- async function tvl ( api ) {
9- const forms = await api . fetchList ( { lengthAbi : 'getSuperformCount' , itemAbi : "function superforms(uint256) external view returns(uint256)" , target : api . chainId === 250 ? fantom_factory_contract : factory_contract } )
10- const getSuperformRes = await api . multiCall ( { abi : "function getSuperform(uint256) external view returns(address, uint32, uint64)" , calls : forms , target : api . chainId === 250 ? fantom_factory_contract : factory_contract } )
29+ const tvl = async ( api ) => {
30+ const { factory = DEFAULT_FACTORY , blacklistedVaults = [ ] } = CONFIG [ api . chain ]
31+ const forms = await api . fetchList ( { lengthAbi : 'getSuperformCount' , itemAbi : "function superforms(uint256) external view returns(uint256)" , target : factory } )
32+ const getSuperformRes = await api . multiCall ( { abi : "function getSuperform(uint256) external view returns(address, uint32, uint64)" , calls : forms , target : factory } )
1133 const super4626 = getSuperformRes . map ( v => v [ 0 ] )
1234 const vaults = await api . multiCall ( { abi : 'address:vault' , calls : super4626 } )
1335
14- // Filter out blacklisted vaults
15- const filteredVaults = vaults . filter ( vault => ! blacklisted_vaults . includes ( vault . toLowerCase ( ) ) ) ;
16- const filteredSuper4626 = super4626 . filter ( ( _ , index ) => ! blacklisted_vaults . includes ( vaults [ index ] . toLowerCase ( ) ) ) ;
36+ const pairs = vaults
37+ . map ( ( v , i ) => ( { vault : v , s : super4626 [ i ] } ) )
38+ . filter ( p => p . vault && ! blacklistedVaults . includes ( p . vault . toLowerCase ( ) ) )
39+
40+ if ( pairs . length === 0 ) return ;
41+ const filteredVaults = pairs . map ( p => p . vault ) ;
42+ const filteredSuper4626 = pairs . map ( p => p . s ) ;
1743
1844 const assets = await api . multiCall ( { abi : 'address:asset' , calls : filteredSuper4626 } )
1945 const vBals = await api . multiCall ( { abi : "erc20:balanceOf" , calls : filteredVaults . map ( ( v , i ) => ( { target : v , params : filteredSuper4626 [ i ] } ) ) } )
20- const bals = await api . multiCall ( { abi : "function previewRedeemFrom(uint256) external view returns(uint256)" , calls : filteredSuper4626 . map ( ( v , i ) => ( { target : v , params : vBals [ i ] } ) ) , permitFailure : true } )
46+ const bals = await api . multiCall ( { abi : previewRedeemFromAbi , calls : filteredSuper4626 . map ( ( v , i ) => ( { target : v , params : vBals [ i ] } ) ) , permitFailure : true } )
47+
2148 bals . forEach ( ( bal , i ) => {
22- if ( bal ) api . add ( assets [ i ] , bal )
49+ const asset = assets [ i ]
50+ if ( ! bal || ! asset ) return
51+ api . add ( asset , bal )
2352 } )
2453}
2554
@@ -32,4 +61,4 @@ module.exports = {
3261 ]
3362} ;
3463
35- superform_chains . forEach ( chain => module . exports [ chain ] = { tvl } )
64+ Object . keys ( CONFIG ) . forEach ( chain => module . exports [ chain ] = { tvl } )
0 commit comments