github.com/KiraCore/sekai@v0.3.43/x/gov/genesis.go (about) 1 package gov 2 3 import ( 4 "bytes" 5 6 appparams "github.com/KiraCore/sekai/app/params" 7 "github.com/KiraCore/sekai/x/gov/keeper" 8 "github.com/KiraCore/sekai/x/gov/types" 9 sdk "github.com/cosmos/cosmos-sdk/types" 10 ) 11 12 func InitGenesis( 13 ctx sdk.Context, 14 k keeper.Keeper, 15 genesisState types.GenesisState, 16 ) error { 17 k.SetNextRoleId(ctx, genesisState.NextRoleId) 18 for _, actor := range genesisState.NetworkActors { 19 k.SaveNetworkActor(ctx, *actor) 20 for _, role := range actor.Roles { 21 k.AssignRoleToActor(ctx, *actor, role) 22 } 23 for _, perm := range actor.Permissions.Whitelist { 24 k.SetWhitelistAddressPermKey(ctx, *actor, types.PermValue(perm)) 25 } 26 // TODO when we add keeper function for managing blacklist mapping, we can just enable this 27 // for _, perm := range actor.Permissions.Blacklist { 28 // k.RemoveWhitelistPermission(ctx, *actor, types.PermValue(perm)) 29 // } 30 } 31 32 for _, role := range genesisState.Roles { 33 k.SetRole(ctx, role) 34 } 35 36 for roleId, perm := range genesisState.RolePermissions { 37 for _, white := range perm.Whitelist { 38 k.WhitelistRolePermission(ctx, roleId, types.PermValue(white)) 39 } 40 // TODO when we add keeper function for managing blacklist mapping, we can just enable this 41 // for _, black := range perm.Blacklist { 42 // err := k.BlacklistRolePermission(ctx, roleId, types.PermValue(black)) 43 // if err != nil { 44 // // TODO: this is fine with current upgrade but from next time, it should panic 45 // fmt.Println("There was an error blacklisting role permission", err) 46 // // panic(err) 47 // } 48 // } 49 } 50 51 k.SetNextProposalID(ctx, genesisState.StartingProposalId) 52 err := k.SetNetworkProperties(ctx, genesisState.NetworkProperties) 53 if err != nil { 54 panic(err) 55 } 56 57 for _, fee := range genesisState.ExecutionFees { 58 k.SetExecutionFee(ctx, fee) 59 } 60 61 k.SavePoorNetworkMessages(ctx, genesisState.PoorNetworkMessages) 62 63 for _, proposal := range genesisState.Proposals { 64 k.SaveProposal(ctx, proposal) 65 } 66 67 for _, vote := range genesisState.Votes { 68 k.SaveVote(ctx, vote) 69 } 70 71 for key, entry := range genesisState.DataRegistry { 72 if entry == nil { 73 continue 74 } 75 k.UpsertDataRegistryEntry(ctx, key, *entry) 76 } 77 78 for _, record := range genesisState.IdentityRecords { 79 k.SetIdentityRecord(ctx, record) 80 } 81 for _, request := range genesisState.IdRecordsVerifyRequests { 82 k.SetIdentityRecordsVerifyRequest(ctx, request) 83 } 84 85 k.SetLastIdentityRecordId(ctx, genesisState.LastIdentityRecordId) 86 k.SetLastIdRecordVerifyRequestId(ctx, genesisState.LastIdRecordVerifyRequestId) 87 88 for typeofProposal, duration := range genesisState.ProposalDurations { 89 err := k.SetProposalDuration(ctx, typeofProposal, duration) 90 if err != nil { 91 return nil 92 } 93 } 94 95 return nil 96 } 97 98 // ExportGenesis writes the current store values 99 // to a genesis file, which can be imported again 100 // with InitGenesis 101 func ExportGenesis(ctx sdk.Context, k keeper.Keeper) (data *types.GenesisState) { 102 rolesIterator := k.IterateRoles(ctx) 103 defer rolesIterator.Close() 104 rolePermissions := make(map[uint64]*types.Permissions) 105 for ; rolesIterator.Valid(); rolesIterator.Next() { 106 role := sdk.BigEndianToUint64(bytes.TrimPrefix(rolesIterator.Key(), keeper.RolePermissionRegistry)) 107 perms := k.GetPermissionsFromIterator(rolesIterator) 108 rolePermissions[role] = &perms 109 } 110 111 networkActorsIterator := k.GetNetworkActorsIterator(ctx) 112 defer networkActorsIterator.Close() 113 networkActors := []*types.NetworkActor{} 114 for ; networkActorsIterator.Valid(); networkActorsIterator.Next() { 115 networkActors = append(networkActors, k.GetNetworkActorFromIterator(networkActorsIterator)) 116 } 117 118 proposals, _ := k.GetProposals(ctx) 119 120 return &types.GenesisState{ 121 DefaultDenom: appparams.DefaultDenom, 122 Bech32Prefix: appparams.AccountAddressPrefix, 123 StartingProposalId: k.GetNextProposalID(ctx), 124 NextRoleId: k.GetNextRoleId(ctx), 125 Roles: k.GetAllRoles(ctx), 126 RolePermissions: rolePermissions, 127 NetworkActors: networkActors, 128 NetworkProperties: k.GetNetworkProperties(ctx), 129 ExecutionFees: k.GetExecutionFees(ctx), 130 PoorNetworkMessages: k.GetPoorNetworkMessages(ctx), 131 Proposals: proposals, 132 Votes: k.GetVotes(ctx), 133 DataRegistry: k.AllDataRegistry(ctx), 134 IdentityRecords: k.GetAllIdentityRecords(ctx), 135 LastIdentityRecordId: k.GetLastIdentityRecordId(ctx), 136 IdRecordsVerifyRequests: k.GetAllIdRecordsVerifyRequests(ctx), 137 LastIdRecordVerifyRequestId: k.GetLastIdRecordVerifyRequestId(ctx), 138 ProposalDurations: k.GetAllProposalDurations(ctx), 139 } 140 }