github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/x/capability/genesis.go (about)

     1  package capability
     2  
     3  import (
     4  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
     5  	"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/capability/keeper"
     6  	"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/capability/types"
     7  )
     8  
     9  // InitGenesis initializes the capability module's state from a provided genesis
    10  // state.
    11  func InitGenesis(ctx sdk.Context, k keeper.Keeper, genState types.GenesisState) {
    12  	if err := k.InitializeIndex(ctx, genState.Index); err != nil {
    13  		panic(err)
    14  	}
    15  
    16  	//// set owners for each index and initialize capability
    17  	for _, genOwner := range genState.Owners {
    18  		k.SetOwners(ctx, genOwner.Index, genOwner.IndexOwners)
    19  	}
    20  	k.InitMemStore(ctx)
    21  }
    22  
    23  // ExportGenesis returns the capability module's exported genesis.
    24  func ExportGenesis(ctx sdk.Context, k keeper.Keeper) *types.GenesisState {
    25  	index := k.GetLatestIndex(ctx)
    26  	owners := []types.GenesisOwners{}
    27  
    28  	for i := uint64(1); i < index; i++ {
    29  		capabilityOwners, ok := k.GetOwners(ctx, i)
    30  		if !ok || len(capabilityOwners.Owners) == 0 {
    31  			continue
    32  		}
    33  
    34  		genOwner := types.GenesisOwners{
    35  			Index:       i,
    36  			IndexOwners: capabilityOwners,
    37  		}
    38  		owners = append(owners, genOwner)
    39  	}
    40  
    41  	return &types.GenesisState{
    42  		Index:  index,
    43  		Owners: owners,
    44  	}
    45  }