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  }