feat(x/protocolpool): Stream funds from community pool (#18103)
This commit is contained in:
@@ -22,6 +22,44 @@ func NewMsgServerImpl(keeper Keeper) types.MsgServer {
|
||||
return &MsgServer{Keeper: keeper}
|
||||
}
|
||||
|
||||
func (k MsgServer) ClaimBudget(ctx context.Context, msg *types.MsgClaimBudget) (*types.MsgClaimBudgetResponse, error) {
|
||||
recipient, err := k.Keeper.authKeeper.AddressCodec().StringToBytes(msg.RecipientAddress)
|
||||
if err != nil {
|
||||
return nil, sdkerrors.ErrInvalidAddress.Wrapf("invalid recipient address: %s", err)
|
||||
}
|
||||
|
||||
amount, err := k.claimFunds(ctx, recipient)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &types.MsgClaimBudgetResponse{Amount: amount}, nil
|
||||
}
|
||||
|
||||
func (k MsgServer) SubmitBudgetProposal(ctx context.Context, msg *types.MsgSubmitBudgetProposal) (*types.MsgSubmitBudgetProposalResponse, error) {
|
||||
if err := k.validateAuthority(msg.GetAuthority()); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
recipient, err := k.Keeper.authKeeper.AddressCodec().StringToBytes(msg.RecipientAddress)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
budgetProposal, err := k.validateAndUpdateBudgetProposal(ctx, *msg)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// set budget proposal in state
|
||||
// Note: If two budgets to the same address are created, the budget would be updated with the new budget.
|
||||
err = k.BudgetProposal.Set(ctx, recipient, *budgetProposal)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &types.MsgSubmitBudgetProposalResponse{}, nil
|
||||
}
|
||||
|
||||
func (k MsgServer) FundCommunityPool(ctx context.Context, msg *types.MsgFundCommunityPool) (*types.MsgFundCommunityPoolResponse, error) {
|
||||
depositor, err := k.authKeeper.AddressCodec().StringToBytes(msg.Depositor)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user