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  }