github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/erc20/genesis.go (about) 1 package erc20 2 3 import ( 4 "fmt" 5 6 "github.com/ethereum/go-ethereum/common" 7 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 8 abci "github.com/fibonacci-chain/fbc/libs/tendermint/abci/types" 9 "github.com/fibonacci-chain/fbc/x/erc20/types" 10 ) 11 12 // InitGenesis initializes genesis state based on exported genesis 13 func InitGenesis(ctx sdk.Context, k Keeper, data GenesisState) []abci.ValidatorUpdate { 14 k.SetParams(ctx, data.Params) 15 16 for _, m := range data.TokenMappings { 17 if !types.IsValidIBCDenom(m.Denom) { 18 panic(fmt.Sprintf("Invalid denom to map to contract: %s", m.Denom)) 19 } 20 if !common.IsHexAddress(m.Contract) { 21 panic(fmt.Sprintf("Invalid contract address: %s", m.Contract)) 22 } 23 if err := k.SetContractForDenom(ctx, m.Denom, common.HexToAddress(m.Contract)); err != nil { 24 panic(err) 25 } 26 } 27 28 k.InitInternalTemplateContract(ctx) 29 30 return []abci.ValidatorUpdate{} 31 } 32 33 // ExportGenesis exports genesis state of the erc20 module 34 func ExportGenesis(ctx sdk.Context, k Keeper) GenesisState { 35 return GenesisState{ 36 Params: k.GetParams(ctx), 37 TokenMappings: k.GetContracts(ctx), 38 } 39 }