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 }