github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/staking/handler_distr_proposal.go (about)

     1  package staking
     2  
     3  import (
     4  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
     5  	"github.com/fibonacci-chain/fbc/x/staking/keeper"
     6  	"github.com/fibonacci-chain/fbc/x/staking/types"
     7  )
     8  
     9  func handleMsgEditValidatorCommissionRate(ctx sdk.Context, msg types.MsgEditValidatorCommissionRate, k keeper.Keeper) (*sdk.Result, error) {
    10  	// validator must already be registered
    11  	validator, found := k.GetValidator(ctx, msg.ValidatorAddress)
    12  	if !found {
    13  		return nil, ErrNoValidatorFound(msg.ValidatorAddress.String())
    14  	}
    15  
    16  	commission, err := k.UpdateValidatorCommission(ctx, validator, msg.CommissionRate)
    17  	if err != nil {
    18  		return nil, err
    19  	}
    20  
    21  	// call the before-modification hook since we're about to update the commission
    22  	k.BeforeValidatorModified(ctx, msg.ValidatorAddress)
    23  
    24  	validator.Commission = commission
    25  
    26  	k.SetValidator(ctx, validator)
    27  
    28  	ctx.EventManager().EmitEvents(sdk.Events{
    29  		sdk.NewEvent(types.EventTypeEditValidatorCommissionRate,
    30  			sdk.NewAttribute(types.AttributeKeyCommissionRate, msg.CommissionRate.String()),
    31  		),
    32  		sdk.NewEvent(sdk.EventTypeMessage,
    33  			sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory),
    34  			sdk.NewAttribute(sdk.AttributeKeySender, msg.ValidatorAddress.String()),
    35  		),
    36  	})
    37  
    38  	return &sdk.Result{Events: ctx.EventManager().Events()}, nil
    39  }