github.com/Finschia/finschia-sdk@v0.49.1/x/fswap/types/genesis.go (about)

     1  package types
     2  
     3  import (
     4  	sdk "github.com/Finschia/finschia-sdk/types"
     5  	authtypes "github.com/Finschia/finschia-sdk/x/auth/types"
     6  	"github.com/Finschia/finschia-sdk/x/foundation"
     7  	govtypes "github.com/Finschia/finschia-sdk/x/gov/types"
     8  )
     9  
    10  // DefaultGenesis returns the default Capability genesis state
    11  func DefaultGenesis() *GenesisState {
    12  	return &GenesisState{
    13  		Swaps:     []Swap{},
    14  		SwapStats: SwapStats{},
    15  		Swappeds:  []Swapped{},
    16  	}
    17  }
    18  
    19  func DefaultAuthority() sdk.AccAddress {
    20  	return authtypes.NewModuleAddress(foundation.ModuleName)
    21  }
    22  
    23  func AuthorityCandidates() []sdk.AccAddress {
    24  	return []sdk.AccAddress{
    25  		authtypes.NewModuleAddress(govtypes.ModuleName),
    26  		authtypes.NewModuleAddress(foundation.ModuleName),
    27  	}
    28  }
    29  
    30  // Validate performs basic genesis state validation returning an error upon any failure.
    31  func (gs *GenesisState) Validate() error {
    32  	if err := gs.SwapStats.ValidateBasic(); err != nil {
    33  		return err
    34  	}
    35  
    36  	if len(gs.GetSwaps()) != len(gs.GetSwappeds()) {
    37  		return ErrInvalidState.Wrap("number of swaps does not match number of Swappeds")
    38  	}
    39  
    40  	if len(gs.GetSwaps()) != int(gs.GetSwapStats().SwapCount) {
    41  		return ErrInvalidState.Wrap("number of swaps does not match swap count in SwapStats")
    42  	}
    43  
    44  	swappeds := gs.GetSwappeds()
    45  	for i, swap := range gs.GetSwaps() {
    46  		swapped := swappeds[i]
    47  		if err := swap.ValidateBasic(); err != nil {
    48  			return err
    49  		}
    50  		if err := swapped.ValidateBasic(); err != nil {
    51  			return err
    52  		}
    53  		if swap.FromDenom != swapped.FromCoinAmount.Denom {
    54  			return ErrInvalidState.Wrap("FromCoin in swap and swapped do not correspond")
    55  		}
    56  		if swap.ToDenom != swapped.ToCoinAmount.Denom {
    57  			return ErrInvalidState.Wrap("ToCoin in swap and swapped do not correspond")
    58  		}
    59  		if swap.AmountCapForToDenom.LT(swapped.ToCoinAmount.Amount) {
    60  			return ErrInvalidState.Wrap("AmountCapForToDenom cannot be exceeded")
    61  		}
    62  	}
    63  	return nil
    64  }