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 }