github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/x/params/proposal_handler.go (about) 1 package params 2 3 import ( 4 "fmt" 5 6 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 7 sdkerrors "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types/errors" 8 govtypes "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/gov/types" 9 ) 10 11 // NewParamChangeProposalHandler creates a new governance Handler for a ParamChangeProposal 12 func NewParamChangeProposalHandler(k Keeper) govtypes.Handler { 13 return func(ctx sdk.Context, content govtypes.Content) error { 14 switch c := content.(type) { 15 case ParameterChangeProposal: 16 return handleParameterChangeProposal(ctx, k, c) 17 18 default: 19 return sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized param proposal content type: %T", c) 20 } 21 } 22 } 23 24 func handleParameterChangeProposal(ctx sdk.Context, k Keeper, p ParameterChangeProposal) error { 25 for _, c := range p.Changes { 26 ss, ok := k.GetSubspace(c.Subspace) 27 if !ok { 28 return sdkerrors.Wrap(ErrUnknownSubspace, c.Subspace) 29 } 30 31 k.Logger(ctx).Info( 32 fmt.Sprintf("attempt to set new parameter value; key: %s, value: %s", c.Key, c.Value), 33 ) 34 35 if err := ss.Update(ctx, []byte(c.Key), []byte(c.Value)); err != nil { 36 return sdkerrors.Wrapf(ErrSettingParameter, "key: %s, value: %s, err: %s", c.Key, c.Value, err.Error()) 37 } 38 } 39 40 return nil 41 }