github.com/Finschia/finschia-sdk@v0.48.1/x/distribution/keeper/proposal_handler.go (about) 1 package keeper 2 3 import ( 4 sdk "github.com/Finschia/finschia-sdk/types" 5 sdkerrors "github.com/Finschia/finschia-sdk/types/errors" 6 "github.com/Finschia/finschia-sdk/x/distribution/types" 7 ) 8 9 // HandleCommunityPoolSpendProposal is a handler for executing a passed community spend proposal 10 func HandleCommunityPoolSpendProposal(ctx sdk.Context, k Keeper, p *types.CommunityPoolSpendProposal) error { 11 if k.blockedAddrs[p.Recipient] { 12 return sdkerrors.Wrapf(sdkerrors.ErrUnauthorized, "%s is not allowed to receive external funds", p.Recipient) 13 } 14 15 recipient, err := sdk.AccAddressFromBech32(p.Recipient) 16 if err != nil { 17 return err 18 } 19 20 if err := k.DistributeFromFeePool(ctx, p.Amount, recipient); err != nil { 21 return err 22 } 23 24 logger := k.Logger(ctx) 25 logger.Info("transferred from the community pool to recipient", "amount", p.Amount.String(), "recipient", p.Recipient) 26 27 return nil 28 }