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 }