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  }