diff --git a/CHANGELOG.md b/CHANGELOG.md index 449e04030..58bd34e82 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -99,6 +99,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ * [\#9879](https://github.com/cosmos/cosmos-sdk/pull/9879) Modify ABCI Queries to use `abci.QueryRequest` Height field if it is non-zero, otherwise continue using context height. * [\#9594](https://github.com/cosmos/cosmos-sdk/pull/9594) Remove legacy REST API. Please see the [REST Endpoints Migration guide](https://docs.cosmos.network/master/migrations/rest.html) to migrate to the new REST endpoints. +* [\#9995](https://github.com/cosmos/cosmos-sdk/pull/9995) Increased gas cost for creating proposals. ### CLI Breaking Changes diff --git a/x/gov/abci_test.go b/x/gov/abci_test.go index c1f2b121f..99f6768f8 100644 --- a/x/gov/abci_test.go +++ b/x/gov/abci_test.go @@ -39,8 +39,7 @@ func TestTickExpiredDepositPeriod(t *testing.T) { ) require.NoError(t, err) - wrapCtx := sdk.WrapSDKContext(ctx) - res, err := govMsgSvr.SubmitProposal(wrapCtx, newProposalMsg) + res, err := govMsgSvr.SubmitProposal(sdk.WrapSDKContext(ctx), newProposalMsg) require.NoError(t, err) require.NotNil(t, res) diff --git a/x/gov/keeper/msg_server.go b/x/gov/keeper/msg_server.go index 86e6e9326..898762713 100644 --- a/x/gov/keeper/msg_server.go +++ b/x/gov/keeper/msg_server.go @@ -7,6 +7,7 @@ import ( "github.com/armon/go-metrics" + store "github.com/cosmos/cosmos-sdk/store/types" "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/gov/types" @@ -31,6 +32,17 @@ func (k msgServer) SubmitProposal(goCtx context.Context, msg *types.MsgSubmitPro return nil, err } + bytes, err := proposal.Marshal() + if err != nil { + return nil, err + } + + // ref: https://github.com/cosmos/cosmos-sdk/issues/9683 + ctx.GasMeter().ConsumeGas( + 3*store.KVGasConfig().WriteCostPerByte*uint64(len(bytes)), + "submit proposal", + ) + defer telemetry.IncrCounter(1, types.ModuleName, "proposal") votingStarted, err := k.Keeper.AddDeposit(ctx, proposal.ProposalId, msg.GetProposer(), msg.GetInitialDeposit())