github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/ammswap/genesis.go (about) 1 package ammswap 2 3 import ( 4 "fmt" 5 6 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 7 "github.com/fibonacci-chain/fbc/x/ammswap/types" 8 tokentypes "github.com/fibonacci-chain/fbc/x/token/types" 9 ) 10 11 // GenesisState stores genesis data, all slashing state that must be provided at genesis 12 type GenesisState struct { 13 Params Params `json:"params"` 14 SwapTokenPairRecords []SwapTokenPair `json:"swap_token_pair_records"` 15 } 16 17 // nolint 18 func NewGenesisState(swapTokenPairRecords []SwapTokenPair) GenesisState { 19 return GenesisState{SwapTokenPairRecords: nil} 20 } 21 22 // ValidateGenesis validates the format of the specified genesisState 23 func ValidateGenesis(data GenesisState) error { 24 for _, record := range data.SwapTokenPairRecords { 25 if !record.QuotePooledCoin.IsValid() { 26 return fmt.Errorf("invalid SwapTokenPairRecord: QuotePooledCoin: %s", record.QuotePooledCoin.String()) 27 } 28 if !record.BasePooledCoin.IsValid() { 29 return fmt.Errorf("invalid SwapTokenPairRecord: BasePooledCoin: %s", record.BasePooledCoin) 30 } 31 if !tokentypes.NotAllowedOriginSymbol(record.PoolTokenName) { 32 return fmt.Errorf("invalid SwapTokenPairRecord: PoolToken: %s. Error: invalid PoolToken", record.PoolTokenName) 33 } 34 } 35 return nil 36 } 37 38 // nolint 39 func DefaultGenesisState() GenesisState { 40 return GenesisState{ 41 Params: types.DefaultParams(), 42 SwapTokenPairRecords: nil, 43 } 44 } 45 46 // InitGenesis init genesis data to keeper 47 func InitGenesis(ctx sdk.Context, keeper Keeper, data GenesisState) { 48 keeper.SetParams(ctx, data.Params) 49 for _, record := range data.SwapTokenPairRecords { 50 keeper.SetSwapTokenPair(ctx, record.TokenPairName(), record) 51 } 52 } 53 54 // ExportGenesis exports genesis from keeper 55 func ExportGenesis(ctx sdk.Context, k Keeper) GenesisState { 56 var records []SwapTokenPair 57 iterator := k.GetSwapTokenPairsIterator(ctx) 58 for ; iterator.Valid(); iterator.Next() { 59 tokenPair := SwapTokenPair{} 60 types.ModuleCdc.MustUnmarshalBinaryLengthPrefixed(iterator.Value(), &tokenPair) 61 records = append(records, tokenPair) 62 63 } 64 params := k.GetParams(ctx) 65 return GenesisState{SwapTokenPairRecords: records, Params: params} 66 }