cosmos-sdk/x/capability/genesis.go
Aditya 4b529a41cf
Capability Fixes (#7918)
* add cap and name checks

* Update x/capability/keeper/keeper.go

* address reviews

* fix missing trim

Co-authored-by: Federico Kunze <31522760+fedekunze@users.noreply.github.com>
2020-11-13 11:13:59 +00:00

46 lines
1.2 KiB
Go

package capability
import (
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/x/capability/keeper"
"github.com/cosmos/cosmos-sdk/x/capability/types"
)
// InitGenesis initializes the capability module's state from a provided genesis
// state.
func InitGenesis(ctx sdk.Context, k keeper.Keeper, genState types.GenesisState) {
if err := k.InitializeIndex(ctx, genState.Index); err != nil {
panic(err)
}
// set owners for each index and initialize capability
for _, genOwner := range genState.Owners {
k.SetOwners(ctx, genOwner.Index, genOwner.IndexOwners)
k.InitializeCapability(ctx, genOwner.Index, genOwner.IndexOwners)
}
}
// ExportGenesis returns the capability module's exported genesis.
func ExportGenesis(ctx sdk.Context, k keeper.Keeper) *types.GenesisState {
index := k.GetLatestIndex(ctx)
owners := []types.GenesisOwners{}
for i := uint64(1); i < index; i++ {
capabilityOwners, ok := k.GetOwners(ctx, i)
if !ok || len(capabilityOwners.Owners) == 0 {
continue
}
genOwner := types.GenesisOwners{
Index: i,
IndexOwners: capabilityOwners,
}
owners = append(owners, genOwner)
}
return &types.GenesisState{
Index: index,
Owners: owners,
}
}