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  }