github.com/okex/exchain@v1.8.0/libs/ibc-go/modules/apps/common/upgrade.go (about) 1 package common 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/ibc-go/modules/core/base" 8 tmtypes "github.com/okex/exchain/libs/tendermint/types" 9 ) 10 11 var ( 12 _ upgrade.UpgradeModule = (*Veneus3BaseUpgradeModule)(nil) 13 14 ibcV4Map = map[string]struct{}{ 15 "feeibc": {}, 16 "interchainaccounts": {}, 17 "icacontroller": {}, 18 "icahost": {}, 19 "icamauth": {}, 20 } 21 22 defaultIBCVersionFilter cosmost.VersionFilter = func(h int64) func(callback cosmost.VersionCallback) { 23 if h < 0 { 24 return func(callback cosmost.VersionCallback) {} 25 } 26 return func(callback cosmost.VersionCallback) { 27 for name, _ := range ibcV4Map { 28 hh := tmtypes.GetVenus4Height() 29 callback(name, hh) 30 } 31 } 32 } 33 ) 34 35 type Veneus3BaseUpgradeModule struct { 36 *base.BaseIBCUpgradeModule 37 } 38 39 func NewVeneus3BaseUpgradeModule(m module.AppModuleBasic) *Veneus3BaseUpgradeModule { 40 ret := &Veneus3BaseUpgradeModule{} 41 ret.BaseIBCUpgradeModule = base.NewBaseIBCUpgradeModule(m) 42 43 return ret 44 } 45 46 func (v *Veneus3BaseUpgradeModule) CommitFilter() *cosmost.StoreFilter { 47 var filter cosmost.StoreFilter 48 filter = func(module string, h int64, s cosmost.CommitKVStore) bool { 49 _, exist := ibcV4Map[module] 50 if !exist { 51 return false 52 } 53 54 if v.UpgradeHeight() == 0 { 55 return true 56 } 57 58 // ==veneus1 59 if h == tmtypes.GetVenus4Height() { 60 if s != nil { 61 s.SetUpgradeVersion(h) 62 } 63 return false 64 } 65 66 // ibc modules 67 if tmtypes.HigherThanVenus4(h) { 68 return false 69 } 70 71 // < veneus1 72 return true 73 } 74 return &filter 75 } 76 77 func (v *Veneus3BaseUpgradeModule) PruneFilter() *cosmost.StoreFilter { 78 var filter cosmost.StoreFilter 79 filter = func(module string, h int64, s cosmost.CommitKVStore) bool { 80 _, exist := ibcV4Map[module] 81 if !exist { 82 return false 83 } 84 85 if v.UpgradeHeight() == 0 { 86 return true 87 } 88 89 // ibc modulee && >=veneus1 90 if tmtypes.HigherThanVenus4(h) { 91 return false 92 } 93 94 // < veneus1 95 return true 96 } 97 return &filter 98 } 99 100 func (v *Veneus3BaseUpgradeModule) VersionFilter() *cosmost.VersionFilter { 101 return &defaultIBCVersionFilter 102 } 103 104 func (v *Veneus3BaseUpgradeModule) UpgradeHeight() int64 { 105 return tmtypes.GetVenus4Height() 106 }