@@ -14,8 +14,8 @@ import (
1414 dcv2 "github.com/Gearbox-protocol/sdk-go/artifacts/dataCompressor/dataCompressorv2"
1515 "github.com/Gearbox-protocol/sdk-go/artifacts/dataCompressor/mainnet"
1616 dcv3 "github.com/Gearbox-protocol/sdk-go/artifacts/dataCompressorv3"
17- "github.com/Gearbox-protocol/sdk-go/artifacts/marketCompressor"
1817 "github.com/Gearbox-protocol/sdk-go/artifacts/multicall"
18+ "github.com/Gearbox-protocol/sdk-go/artifacts/poolCompressor"
1919 "github.com/Gearbox-protocol/sdk-go/core"
2020 "github.com/Gearbox-protocol/sdk-go/log"
2121 "github.com/Gearbox-protocol/sdk-go/pkg/dc"
@@ -158,19 +158,19 @@ func (dcw *DataCompressorWrapper) addDataCompressorv300(version core.VersionType
158158}
159159
160160func (dcw * DataCompressorWrapper ) AddCompressorType (addr common.Address , cType CompressorType , discoveredAt int64 ) {
161- if ! utils .Contains ([]CompressorType {MARKET_COMPRESSOR , CREDIT_ACCOUNT_COMPRESSOR }, cType ) {
161+ if ! utils .Contains ([]CompressorType {MARKET_COMPRESSOR , CREDIT_ACCOUNT_COMPRESSOR , POOL_COMPRESSOR }, cType ) {
162162 log .Fatal ("ctype is wrong, " , cType )
163163 }
164164 if len (dcw .compressorByBlock [cType ]) > 0 {
165165 last := dcw .compressorByBlock [cType ][len (dcw .compressorByBlock [cType ])- 1 ]
166166 if last .block > discoveredAt {
167167 log .Fatalf ("last %s has blocknum more than (%s) and new addr is %s" , last , discoveredAt , addr )
168168 }
169- dcw .compressorByBlock [cType ] = append (dcw .compressorByBlock [cType ], addressAndBlock {
170- address : addr ,
171- block : discoveredAt ,
172- })
173169 }
170+ dcw .compressorByBlock [cType ] = append (dcw .compressorByBlock [cType ], addressAndBlock {
171+ address : addr ,
172+ block : discoveredAt ,
173+ })
174174}
175175
176176func (dcw * DataCompressorWrapper ) LoadMultipleDC (multiDCs interface {}) {
@@ -212,8 +212,8 @@ func (dcw *DataCompressorWrapper) LoadMultipleDC(multiDCs interface{}) {
212212type CompressorType string
213213
214214const (
215- MARKET_COMPRESSOR CompressorType = "MARKET"
216- // CM_COMPRESSOR CompressorType = "CM "
215+ MARKET_COMPRESSOR CompressorType = "MARKET"
216+ POOL_COMPRESSOR CompressorType = "POOL "
217217 CREDIT_ACCOUNT_COMPRESSOR CompressorType = "ACCOUNT"
218218)
219219
@@ -399,15 +399,17 @@ func (dcw *DataCompressorWrapper) GetCreditManagerData(version core.VersionType,
399399 if err != nil {
400400 return dc.CMCallData {}, err
401401 }
402- type debts struct {
402+ debt := struct {
403403 MinDebt * big.Int
404404 MaxDebt * big.Int
405- }
406- cmData := * abi .ConvertType (out [0 ], new (debts )).(* debts )
405+ }{}
406+ debt .MinDebt = * abi .ConvertType (out [0 ], new (* big.Int )).(* * big.Int )
407+ debt .MaxDebt = * abi .ConvertType (out [1 ], new (* big.Int )).(* * big.Int )
408+ // cmData := *abi.ConvertType(out[0], new(debts)).(*debts)
407409 return dc.CMCallData {
408410 Addr : _creditManager ,
409- MinDebt : (* core .BigInt )(cmData .MinDebt ),
410- MaxDebt : (* core .BigInt )(cmData .MaxDebt ),
411+ MinDebt : (* core .BigInt )(debt .MinDebt ),
412+ MaxDebt : (* core .BigInt )(debt .MaxDebt ),
411413 }, nil
412414 case DCV3 :
413415 out , err := core .GetAbi ("DataCompressorv3" ).Unpack ("getCreditManagerData" , bytes )
@@ -446,61 +448,85 @@ type PoolZapperInfo struct {
446448}
447449
448450// zapper info from v300 onwards
449- func (dcw * DataCompressorWrapper ) GetZapperInfo (blockNum int64 , poolAddr ... common.Address ) (ans []PoolZapperInfo , found bool ) {
450- key , compressor := dcw .GetKeyAndAddress (core .NewVersion (300 ), blockNum , MARKET_COMPRESSOR )
451+ func (dcw * DataCompressorWrapper ) getZapperInfov3 (blockNum int64 , poolAddrs ... common.Address ) ([]PoolZapperInfo , error ) {
452+ compressor , found := dcw .GetLatestv3DC ()
453+ if ! found {
454+ return nil , nil
455+ }
451456 opts := & bind.CallOpts {BlockNumber : big .NewInt (blockNum )}
452- switch key {
453- case DCV310 :
454- marketConfigs := GetMarketConfigurators ()
455- con , err := marketCompressor .NewMarketCompressor (compressor , dcw .client )
456- log .CheckFatal (err )
457- markets , err := con .GetMarkets (opts , marketCompressor.MarketFilter {Pools : poolAddr })
458- for _ , market := range markets {
459- if ! utils .Contains (marketConfigs , market .Configurator ) {
460- continue
461- }
462- obj := & PoolZapperInfo {
463- Addr : market .Pool .BaseParams .Addr ,
464- Underlying : market .Pool .Underlying ,
465- DieselToken : market .Pool .BaseParams .Addr ,
466- }
467- for _ , zapper := range market .Zappers {
468- obj .Zappers = append (obj .Zappers , dcv3.ZapperInfo {
469- Zapper : zapper .BaseParams .Addr ,
470- TokenIn : zapper .TokenIn .Addr ,
471- TokenOut : zapper .TokenOut .Addr ,
472- })
457+ con , err := dcv3 .NewDataCompressorv3 (compressor , dcw .client )
458+ log .CheckFatal (err )
459+ poolList := []dcv3.PoolData {}
460+ zapperInfo := []PoolZapperInfo {}
461+ if len (poolAddrs ) != 0 {
462+ for _ , addr := range poolAddrs {
463+ data , err := con .GetPoolData (opts , addr )
464+ if err != nil {
465+ return nil , fmt .Errorf ("pool ZapperInfo not found in dc %d: %v" , blockNum , poolAddrs )
473466 }
474- ans = append (ans , * obj )
467+ poolList = append (poolList , data )
475468 }
476- return ans , true
477- case DCV3 :
478- con , err := dcv3 . NewDataCompressorv3 ( compressor , dcw . client )
469+ } else {
470+ var err error
471+ poolList , err = con . GetPoolsV3List ( nil )
479472 log .CheckFatal (err )
480- poolList := []dcv3.PoolData {}
481- if len (poolAddr ) != 0 {
482- for _ , addr := range poolAddr {
483- data , err := con .GetPoolData (opts , addr )
484- log .CheckFatal (err )
485- poolList = append (poolList , data )
486- }
487- } else {
488- var err error
489- poolList , err = con .GetPoolsV3List (nil )
490- log .CheckFatal (err )
473+ }
474+ for _ , pool := range poolList {
475+ obj := & PoolZapperInfo {
476+ Addr : pool .Addr ,
477+ Underlying : pool .Underlying ,
478+ DieselToken : pool .DieselToken ,
479+ Zappers : pool .Zappers ,
491480 }
492- for _ , pool := range poolList {
493- obj := & PoolZapperInfo {
494- Addr : pool .Addr ,
495- Underlying : pool .Underlying ,
496- DieselToken : pool .DieselToken ,
497- Zappers : pool .Zappers ,
498- }
499- ans = append (ans , * obj )
481+ zapperInfo = append (zapperInfo , * obj )
482+ }
483+ return zapperInfo , nil
484+ }
485+
486+ func (dcw * DataCompressorWrapper ) GetZapperInfo (blockNum int64 , poolAddrs ... common.Address ) (ans []PoolZapperInfo ) {
487+ key , _ := dcw .GetKeyAndAddress (core .NewVersion (300 ), blockNum , MARKET_COMPRESSOR )
488+ switch key {
489+ case DCV310 :
490+ data , err := dcw .getZapperInfov3 (blockNum , poolAddrs ... )
491+ if err != nil {
492+ log .Warn (err )
500493 }
494+ return data
495+ // marketConfigs := GetMarketConfigurators()
496+ // con, err := marketCompressor.NewMarketCompressor(compressor, dcw.client)
497+ // log.CheckFatal(err)
498+ // poolAddrs = []common.Address{}
499+ // markets, err := con.GetMarkets(opts, marketCompressor.MarketFilter{Pools: poolAddrs})
500+ // log.CheckFatal(err)
501+ // for _, market := range markets {
502+ // log.Info(market.Configurator, market.Pool.BaseParams.Addr)
503+ // if !utils.Contains(marketConfigs, market.Configurator) {
504+ // continue
505+ // }
506+ // obj := &PoolZapperInfo{
507+ // Addr: market.Pool.BaseParams.Addr,
508+ // Underlying: market.Pool.Underlying,
509+ // DieselToken: market.Pool.BaseParams.Addr,
510+ // }
511+ // for _, zapper := range market.Zappers {
512+ // obj.Zappers = append(obj.Zappers, dcv3.ZapperInfo{
513+ // Zapper: zapper.BaseParams.Addr,
514+ // TokenIn: zapper.TokenIn.Addr,
515+ // TokenOut: zapper.TokenOut.Addr,
516+ // })
517+ // }
518+ // ans = append(ans, *obj)
519+ // }
520+ // log.Infof("%s: zapper info, v310: %d pooladdr:%v", log.DetectFuncAtStackN(2), len(data), poolAddrs)
521+ // return ans
522+ case DCV3 :
523+ data , notv3 := dcw .getZapperInfov3 (blockNum , poolAddrs ... )
524+ log .CheckFatal (notv3 )
525+ log .Infof ("%s: zapper info, v3:%d pooladdr:%v" , log .DetectFuncAtStackN (2 ), len (data ), poolAddrs )
526+ return data
501527 default :
502528 // log.Fatal("No data compressor found for zapper info")
503- return nil , false
529+ return nil
504530 }
505531}
506532
@@ -510,12 +536,12 @@ func (dcw *DataCompressorWrapper) GetPoolData(version core.VersionType, blockNum
510536 resultFn func ([]byte ) (dc.PoolCallData , error ),
511537 errReturn error ) {
512538 //
513- key , dcAddr := dcw .GetKeyAndAddress (version , blockNum , MARKET_COMPRESSOR )
539+ key , dcAddr := dcw .GetKeyAndAddress (version , blockNum , POOL_COMPRESSOR )
514540 switch key {
515541 case NODC :
516542 errReturn = NO_DC_FOUND_ERR
517543 case DCV310 :
518- data , err := core .GetAbi ("MarketCompressor " ).Pack ("getMarketData0 " , _pool )
544+ data , err := core .GetAbi ("PoolCompressor " ).Pack ("getPoolState " , _pool )
519545 call , errReturn = multicall.Multicall2Call {
520546 Target : dcAddr ,
521547 CallData : data ,
@@ -553,12 +579,12 @@ func (dcw *DataCompressorWrapper) GetPoolData(version core.VersionType, blockNum
553579 case NODC :
554580 log .Fatal ("No data compressor found for pool data" )
555581 case DCV310 :
556- out , err := core .GetAbi ("MarketCompressor " ).Unpack ("getMarketData0 " , bytes )
582+ out , err := core .GetAbi ("PoolCompressor " ).Unpack ("getPoolState " , bytes )
557583 if err != nil {
558584 return dc.PoolCallData {}, err
559585 }
560- poolData := * abi .ConvertType (out [0 ], new (marketCompressor. MarketData )).(* marketCompressor. MarketData )
561- return dc .GetPoolDataFromDCCall (poolData . Pool )
586+ poolData := * abi .ConvertType (out [0 ], new (poolCompressor. PoolState )).(* poolCompressor. PoolState )
587+ return dc .GetPoolDataFromDCCall (poolData )
562588 case DCV3 :
563589 out , err := core .GetAbi ("DataCompressorv3" ).Unpack ("getPoolData" , bytes )
564590 if err != nil {
0 commit comments