github.com/KiraCore/sekai@v0.3.43/x/layer2/proposal_handler.go (about) 1 package layer2 2 3 import ( 4 kiratypes "github.com/KiraCore/sekai/types" 5 govtypes "github.com/KiraCore/sekai/x/gov/types" 6 "github.com/KiraCore/sekai/x/layer2/keeper" 7 "github.com/KiraCore/sekai/x/layer2/types" 8 sdk "github.com/cosmos/cosmos-sdk/types" 9 ) 10 11 type ApplyJoinDappProposalHandler struct { 12 keeper keeper.Keeper 13 } 14 15 func NewApplyJoinDappProposalHandler(keeper keeper.Keeper) *ApplyJoinDappProposalHandler { 16 return &ApplyJoinDappProposalHandler{ 17 keeper: keeper, 18 } 19 } 20 21 func (a ApplyJoinDappProposalHandler) ProposalType() string { 22 return kiratypes.ProposalTypeJoinDapp 23 } 24 25 func (a ApplyJoinDappProposalHandler) IsAllowedAddress(ctx sdk.Context, addr sdk.AccAddress, proposal govtypes.Content) bool { 26 p := proposal.(*types.ProposalJoinDapp) 27 28 dapp := a.keeper.GetDapp(ctx, p.DappName) 29 if dapp.Name == "" { 30 return false 31 } 32 33 return a.keeper.IsAllowedAddress(ctx, addr, dapp.Controllers) 34 } 35 36 func (a ApplyJoinDappProposalHandler) AllowedAddresses(ctx sdk.Context, proposal govtypes.Content) []string { 37 p := proposal.(*types.ProposalJoinDapp) 38 39 dapp := a.keeper.GetDapp(ctx, p.DappName) 40 if dapp.Name == "" { 41 return []string{} 42 } 43 return a.keeper.AllowedAddresses(ctx, dapp.Controllers) 44 } 45 46 func (a ApplyJoinDappProposalHandler) Quorum(ctx sdk.Context, proposal govtypes.Content) uint64 { 47 p := proposal.(*types.ProposalJoinDapp) 48 49 dapp := a.keeper.GetDapp(ctx, p.DappName) 50 if dapp.Name == "" { 51 return 0 52 } 53 54 return dapp.VoteQuorum 55 } 56 57 func (a ApplyJoinDappProposalHandler) VotePeriod(ctx sdk.Context, proposal govtypes.Content) uint64 { 58 p := proposal.(*types.ProposalJoinDapp) 59 60 dapp := a.keeper.GetDapp(ctx, p.DappName) 61 if dapp.Name == "" { 62 return 0 63 } 64 65 return dapp.VotePeriod 66 } 67 68 func (a ApplyJoinDappProposalHandler) VoteEnactment(ctx sdk.Context, proposal govtypes.Content) uint64 { 69 p := proposal.(*types.ProposalJoinDapp) 70 71 dapp := a.keeper.GetDapp(ctx, p.DappName) 72 if dapp.Name == "" { 73 return 0 74 } 75 76 return dapp.VoteEnactment 77 } 78 79 func (a ApplyJoinDappProposalHandler) Apply(ctx sdk.Context, proposalID uint64, proposal govtypes.Content, slash sdk.Dec) error { 80 p := proposal.(*types.ProposalJoinDapp) 81 82 return a.keeper.ExecuteJoinDappProposal(ctx, p) 83 } 84 85 type ApplyUpsertDappProposalHandler struct { 86 keeper keeper.Keeper 87 } 88 89 func NewApplyUpsertDappProposalHandler(keeper keeper.Keeper) *ApplyUpsertDappProposalHandler { 90 return &ApplyUpsertDappProposalHandler{ 91 keeper: keeper, 92 } 93 } 94 95 func (a ApplyUpsertDappProposalHandler) ProposalType() string { 96 return kiratypes.ProposalTypeUpsertDapp 97 } 98 99 func (a ApplyUpsertDappProposalHandler) IsAllowedAddress(ctx sdk.Context, addr sdk.AccAddress, proposal govtypes.Content) bool { 100 p := proposal.(*types.ProposalUpsertDapp) 101 102 dapp := a.keeper.GetDapp(ctx, p.Dapp.Name) 103 if dapp.Name == "" { 104 return false 105 } 106 107 return a.keeper.IsAllowedAddress(ctx, addr, dapp.Controllers) 108 } 109 110 func (a ApplyUpsertDappProposalHandler) AllowedAddresses(ctx sdk.Context, proposal govtypes.Content) []string { 111 p := proposal.(*types.ProposalUpsertDapp) 112 113 dapp := a.keeper.GetDapp(ctx, p.Dapp.Name) 114 if dapp.Name == "" { 115 return []string{} 116 } 117 118 return a.keeper.AllowedAddresses(ctx, dapp.Controllers) 119 } 120 121 func (a ApplyUpsertDappProposalHandler) Quorum(ctx sdk.Context, proposal govtypes.Content) uint64 { 122 p := proposal.(*types.ProposalUpsertDapp) 123 124 dapp := a.keeper.GetDapp(ctx, p.Dapp.Name) 125 if dapp.Name == "" { 126 return 0 127 } 128 129 return dapp.VoteQuorum 130 } 131 132 func (a ApplyUpsertDappProposalHandler) VotePeriod(ctx sdk.Context, proposal govtypes.Content) uint64 { 133 p := proposal.(*types.ProposalUpsertDapp) 134 135 dapp := a.keeper.GetDapp(ctx, p.Dapp.Name) 136 if dapp.Name == "" { 137 return 0 138 } 139 140 return dapp.VotePeriod 141 } 142 143 func (a ApplyUpsertDappProposalHandler) VoteEnactment(ctx sdk.Context, proposal govtypes.Content) uint64 { 144 p := proposal.(*types.ProposalUpsertDapp) 145 146 dapp := a.keeper.GetDapp(ctx, p.Dapp.Name) 147 if dapp.Name == "" { 148 return 0 149 } 150 151 return dapp.VoteEnactment 152 } 153 154 func (a ApplyUpsertDappProposalHandler) Apply(ctx sdk.Context, proposalID uint64, proposal govtypes.Content, slash sdk.Dec) error { 155 p := proposal.(*types.ProposalUpsertDapp) 156 157 dapp := a.keeper.GetDapp(ctx, p.Dapp.Name) 158 if dapp.Name == "" { 159 return types.ErrDappDoesNotExist 160 } 161 162 dapp.Name = p.Dapp.Name 163 dapp.Denom = p.Dapp.Denom 164 dapp.Description = p.Dapp.Description 165 dapp.Website = p.Dapp.Website 166 dapp.Logo = p.Dapp.Logo 167 dapp.Social = p.Dapp.Social 168 dapp.Docs = p.Dapp.Docs 169 dapp.Controllers = p.Dapp.Controllers 170 dapp.Bin = p.Dapp.Bin 171 dapp.Pool = p.Dapp.Pool 172 dapp.Issurance = p.Dapp.Issurance 173 dapp.UpdateTimeMax = p.Dapp.UpdateTimeMax 174 dapp.ExecutorsMin = p.Dapp.ExecutorsMin 175 dapp.ExecutorsMax = p.Dapp.ExecutorsMax 176 dapp.VerifiersMin = p.Dapp.VerifiersMin 177 dapp.TotalBond = p.Dapp.TotalBond 178 dapp.CreationTime = p.Dapp.CreationTime 179 dapp.Status = p.Dapp.Status 180 dapp.VoteQuorum = p.Dapp.VoteQuorum 181 dapp.VotePeriod = p.Dapp.VotePeriod 182 dapp.VoteEnactment = p.Dapp.VoteEnactment 183 184 a.keeper.SetDapp(ctx, p.Dapp) 185 return nil 186 }