github.com/okex/exchain@v1.8.0/libs/ibc-go/modules/core/base/base.go (about)

     1  package base
     2  
     3  import (
     4  	cosmost "github.com/okex/exchain/libs/cosmos-sdk/store/types"
     5  	"github.com/okex/exchain/libs/cosmos-sdk/types/module"
     6  	"github.com/okex/exchain/libs/cosmos-sdk/types/upgrade"
     7  	"github.com/okex/exchain/libs/cosmos-sdk/x/params"
     8  	"github.com/okex/exchain/libs/tendermint/types"
     9  )
    10  
    11  var (
    12  	_      upgrade.UpgradeModule = (*BaseIBCUpgradeModule)(nil)
    13  	ibcMap                       = map[string]struct{}{
    14  		"ibc":            struct{}{},
    15  		"mem_capability": struct{}{},
    16  		"capability":     struct{}{},
    17  		"transfer":       struct{}{},
    18  		"erc20":          struct{}{},
    19  	}
    20  
    21  	defaultIBCVersionFilter cosmost.VersionFilter = func(h int64) func(cb func(name string, version int64)) {
    22  		if h < 0 {
    23  			return func(cb func(name string, version int64)) {}
    24  		}
    25  
    26  		return func(cb func(name string, version int64)) {
    27  			for name, _ := range ibcMap {
    28  				hh := types.GetVenus1Height()
    29  				cb(name, hh)
    30  			}
    31  		}
    32  	}
    33  )
    34  
    35  type BaseIBCUpgradeModule struct {
    36  	appModule module.AppModuleBasic
    37  	Inited    bool
    38  }
    39  
    40  func NewBaseIBCUpgradeModule(appModule module.AppModuleBasic) *BaseIBCUpgradeModule {
    41  	return &BaseIBCUpgradeModule{appModule: appModule}
    42  }
    43  
    44  func (b *BaseIBCUpgradeModule) ModuleName() string {
    45  	return b.appModule.Name()
    46  }
    47  
    48  func (b *BaseIBCUpgradeModule) RegisterTask() upgrade.HeightTask {
    49  	panic("override")
    50  }
    51  
    52  func (b *BaseIBCUpgradeModule) UpgradeHeight() int64 {
    53  	return types.GetVenus1Height()
    54  }
    55  
    56  func (b *BaseIBCUpgradeModule) CommitFilter() *cosmost.StoreFilter {
    57  	var filter cosmost.StoreFilter
    58  	filter = func(module string, h int64, s cosmost.CommitKVStore) bool {
    59  		_, exist := ibcMap[module]
    60  		if !exist {
    61  			return false
    62  		}
    63  
    64  		if b.UpgradeHeight() == 0 {
    65  			return true
    66  		}
    67  		// ==veneus1
    68  		if h == types.GetVenus1Height() {
    69  			if s != nil {
    70  				s.SetUpgradeVersion(h)
    71  			}
    72  			return false
    73  		}
    74  
    75  		// ibc modules
    76  		if types.HigherThanVenus1(h) {
    77  			return false
    78  		}
    79  
    80  		// < veneus1
    81  		return true
    82  	}
    83  	return &filter
    84  }
    85  
    86  func (b *BaseIBCUpgradeModule) PruneFilter() *cosmost.StoreFilter {
    87  	var filter cosmost.StoreFilter
    88  	filter = func(module string, h int64, s cosmost.CommitKVStore) bool {
    89  		_, exist := ibcMap[module]
    90  		if !exist {
    91  			return false
    92  		}
    93  
    94  		if b.UpgradeHeight() == 0 {
    95  			return true
    96  		}
    97  		// ibc modulee && >=veneus1
    98  		if types.HigherThanVenus1(h) {
    99  			return false
   100  		}
   101  
   102  		// < veneus1
   103  		return true
   104  	}
   105  	return &filter
   106  }
   107  
   108  func (b *BaseIBCUpgradeModule) VersionFilter() *cosmost.VersionFilter {
   109  	return &defaultIBCVersionFilter
   110  }
   111  
   112  func (b *BaseIBCUpgradeModule) RegisterParam() params.ParamSet {
   113  	return nil
   114  }
   115  
   116  func (b *BaseIBCUpgradeModule) Seal() {
   117  	b.Inited = true
   118  }
   119  func (b *BaseIBCUpgradeModule) Sealed() bool {
   120  	return b.Inited
   121  }