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  }