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