feat(community): disable x/distribution community tax in disable inflation upgrade (#1752)

* Disable distribution community tax in disable inflation upgrade

* Add changelog entry
This commit is contained in:
drklee3 2023-10-23 12:15:44 -07:00 committed by GitHub
parent 8186367c8b
commit 1d36429fe3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 36 additions and 5 deletions

View File

@ -38,7 +38,7 @@ Ref: https://keepachangelog.com/en/1.0.0/
### Features ### Features
- (metrics) [#1668] Adds non-state breaking x/metrics module for custom telemetry. - (metrics) [#1668] Adds non-state breaking x/metrics module for custom telemetry
- (metrics) [#1669] Add performance timing metrics to all Begin/EndBlockers - (metrics) [#1669] Add performance timing metrics to all Begin/EndBlockers
- (community) [#1704] Add module params - (community) [#1704] Add module params
- (community) [#1706] Add disable inflation upgrade - (community) [#1706] Add disable inflation upgrade
@ -52,8 +52,9 @@ Ref: https://keepachangelog.com/en/1.0.0/
- (community) [#1704] Add param to control when inflation will be disabled - (community) [#1704] Add param to control when inflation will be disabled
- (community) [#1707] Default staking rewards per second set to `744191` - (community) [#1707] Default staking rewards per second set to `744191`
- (community) [#1706] Add disable inflation upgrade to begin blocker that updates x/mint and x/kavadist params. - (community) [#1706] Add disable inflation upgrade to begin blocker that updates x/mint and x/kavadist params
- (community) [#1729] Consolidate community funds from `x/distribution` and `x/kavadist` to `x/community` - (community) [#1729] Consolidate community funds from `x/distribution` and `x/kavadist` to `x/community`
- (community) [#1752] Set `x/distribution` CommunityTax to zero on inflation disable upgrade
## [v0.24.0] ## [v0.24.0]
@ -294,10 +295,12 @@ the [changelog](https://github.com/cosmos/cosmos-sdk/blob/v0.38.4/CHANGELOG.md).
- [#257](https://github.com/Kava-Labs/kava/pulls/257) Include scripts to run - [#257](https://github.com/Kava-Labs/kava/pulls/257) Include scripts to run
large-scale simulations remotely using aws-batch large-scale simulations remotely using aws-batch
[#1752]: https://github.com/Kava-Labs/kava/pull/1752
[#1729]: https://github.com/Kava-Labs/kava/pull/1729 [#1729]: https://github.com/Kava-Labs/kava/pull/1729
[#1745]: https://github.com/Kava-Labs/kava/pull/1745 [#1745]: https://github.com/Kava-Labs/kava/pull/1745
[#1707]: https://github.com/Kava-Labs/kava/pull/1707 [#1707]: https://github.com/Kava-Labs/kava/pull/1707
[#1706]: https://github.com/Kava-Labs/kava/pull/1706 [#1706]: https://github.com/Kava-Labs/kava/pull/1706
[#1704]: https://github.com/Kava-Labs/kava/pull/1704
[#1668]: https://github.com/Kava-Labs/kava/pull/1668 [#1668]: https://github.com/Kava-Labs/kava/pull/1668
[#1669]: https://github.com/Kava-Labs/kava/pull/1669 [#1669]: https://github.com/Kava-Labs/kava/pull/1669
[#1655]: https://github.com/Kava-Labs/kava/pull/1655 [#1655]: https://github.com/Kava-Labs/kava/pull/1655

View File

@ -19,8 +19,14 @@ func (k Keeper) CheckAndDisableMintAndKavaDistInflation(ctx sdk.Context) {
return return
} }
logger := k.Logger(ctx)
logger.Info("disable inflation upgrade started")
// run disable inflation logic // run disable inflation logic
k.disableInflation(ctx) k.disableInflation(ctx)
k.disableCommunityTax(ctx)
logger.Info("disable inflation upgrade finished successfully!")
ctx.EventManager().EmitEvent( ctx.EventManager().EmitEvent(
sdk.NewEvent( sdk.NewEvent(
@ -43,7 +49,6 @@ func (k Keeper) CheckAndDisableMintAndKavaDistInflation(ctx sdk.Context) {
// affecting rewards. In addition, inflation periods in kavadist should be removed. // affecting rewards. In addition, inflation periods in kavadist should be removed.
func (k Keeper) disableInflation(ctx sdk.Context) { func (k Keeper) disableInflation(ctx sdk.Context) {
logger := k.Logger(ctx) logger := k.Logger(ctx)
logger.Info("disable inflation upgrade started")
// set x/min inflation to 0 // set x/min inflation to 0
mintParams := k.mintKeeper.GetParams(ctx) mintParams := k.mintKeeper.GetParams(ctx)
@ -57,6 +62,14 @@ func (k Keeper) disableInflation(ctx sdk.Context) {
kavadistParams.Active = false kavadistParams.Active = false
k.kavadistKeeper.SetParams(ctx, kavadistParams) k.kavadistKeeper.SetParams(ctx, kavadistParams)
logger.Info("x/kavadist inflation disabled") logger.Info("x/kavadist inflation disabled")
}
logger.Info("disable inflation upgrade finished successfully!")
// disableCommunityTax sets x/distribution Params.CommunityTax to 0
func (k Keeper) disableCommunityTax(ctx sdk.Context) {
logger := k.Logger(ctx)
distrParams := k.distrKeeper.GetParams(ctx)
distrParams.CommunityTax = sdk.ZeroDec()
k.distrKeeper.SetParams(ctx, distrParams)
logger.Info("x/distribution community tax set to 0")
} }

View File

@ -4,6 +4,7 @@ import (
"time" "time"
sdk "github.com/cosmos/cosmos-sdk/types" sdk "github.com/cosmos/cosmos-sdk/types"
distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types"
minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" minttypes "github.com/cosmos/cosmos-sdk/x/mint/types"
"github.com/stretchr/testify/suite" "github.com/stretchr/testify/suite"
tmproto "github.com/tendermint/tendermint/proto/tendermint/types" tmproto "github.com/tendermint/tendermint/proto/tendermint/types"
@ -29,6 +30,7 @@ type disableInflationTestSuite struct {
genesisMintState *minttypes.GenesisState genesisMintState *minttypes.GenesisState
genesisKavadistState *kavadisttypes.GenesisState genesisKavadistState *kavadisttypes.GenesisState
genesisDistrState *distrtypes.GenesisState
testFunc testFunc testFunc testFunc
} }
@ -57,10 +59,15 @@ func (suite *disableInflationTestSuite) SetupTest() {
kavadistGen.Params.Active = true kavadistGen.Params.Active = true
suite.genesisKavadistState = kavadistGen suite.genesisKavadistState = kavadistGen
distrGen := distrtypes.DefaultGenesisState()
distrGen.Params.CommunityTax = sdk.MustNewDecFromStr("0.949500000000000000")
suite.genesisDistrState = distrGen
appCodec := tApp.AppCodec() appCodec := tApp.AppCodec()
suite.App.InitializeFromGenesisStates( suite.App.InitializeFromGenesisStates(
app.GenesisState{minttypes.ModuleName: appCodec.MustMarshalJSON(mintGen)}, app.GenesisState{minttypes.ModuleName: appCodec.MustMarshalJSON(mintGen)},
app.GenesisState{kavadisttypes.ModuleName: appCodec.MustMarshalJSON(kavadistGen)}, app.GenesisState{kavadisttypes.ModuleName: appCodec.MustMarshalJSON(kavadistGen)},
app.GenesisState{distrtypes.ModuleName: appCodec.MustMarshalJSON(distrGen)},
) )
} }
@ -70,10 +77,12 @@ func (suite *disableInflationTestSuite) TestDisableInflation() {
suite.Require().True(found) suite.Require().True(found)
mintParams := suite.App.GetMintKeeper().GetParams(suite.Ctx) mintParams := suite.App.GetMintKeeper().GetParams(suite.Ctx)
kavadistParams := suite.App.GetKavadistKeeper().GetParams(suite.Ctx) kavadistParams := suite.App.GetKavadistKeeper().GetParams(suite.Ctx)
distrParams := suite.App.GetDistrKeeper().GetParams(suite.Ctx)
disableTimeMsg := "expected inflation disable time to match" disableTimeMsg := "expected inflation disable time to match"
expectedMintState := suite.genesisMintState expectedMintState := suite.genesisMintState
expectedKavadistState := suite.genesisKavadistState expectedKavadistState := suite.genesisKavadistState
expectedDistrState := suite.genesisDistrState
expectedStakingRewards := originalStakingRewards expectedStakingRewards := originalStakingRewards
msgSuffix := "before upgrade" msgSuffix := "before upgrade"
@ -92,6 +101,9 @@ func (suite *disableInflationTestSuite) TestDisableInflation() {
expectedMintState.Params.InflationMax = sdk.ZeroDec() expectedMintState.Params.InflationMax = sdk.ZeroDec()
expectedKavadistState.Params.Active = false expectedKavadistState.Params.Active = false
expectedDistrState.Params.CommunityTax = sdk.ZeroDec()
msgSuffix = "after upgrade" msgSuffix = "after upgrade"
suite.Require().NoError(app.EventsContains(suite.Ctx.EventManager().Events(), sdk.NewEvent(types.EventTypeInflationStop))) suite.Require().NoError(app.EventsContains(suite.Ctx.EventManager().Events(), sdk.NewEvent(types.EventTypeInflationStop)))
@ -100,6 +112,7 @@ func (suite *disableInflationTestSuite) TestDisableInflation() {
suite.Require().Equal(expectedMintState.Params.InflationMin, mintParams.InflationMin, msg+": expected mint inflation min to match state "+msgSuffix) suite.Require().Equal(expectedMintState.Params.InflationMin, mintParams.InflationMin, msg+": expected mint inflation min to match state "+msgSuffix)
suite.Require().Equal(expectedMintState.Params.InflationMax, mintParams.InflationMax, msg+": expected mint inflation max to match state "+msgSuffix) suite.Require().Equal(expectedMintState.Params.InflationMax, mintParams.InflationMax, msg+": expected mint inflation max to match state "+msgSuffix)
suite.Require().Equal(expectedKavadistState.Params.Active, kavadistParams.Active, msg+":expected kavadist active flag match state "+msgSuffix) suite.Require().Equal(expectedKavadistState.Params.Active, kavadistParams.Active, msg+":expected kavadist active flag match state "+msgSuffix)
suite.Require().Equal(expectedDistrState.Params.CommunityTax, distrParams.CommunityTax, msg+":expected x/distribution community tax to match state "+msgSuffix)
suite.Require().Equal(expectedDisableTime, params.UpgradeTimeDisableInflation, msg+": "+disableTimeMsg) suite.Require().Equal(expectedDisableTime, params.UpgradeTimeDisableInflation, msg+": "+disableTimeMsg)
// we always check staking rewards per second matches the passed in expectation // we always check staking rewards per second matches the passed in expectation

View File

@ -43,6 +43,8 @@ type DistributionKeeper interface {
GetFeePoolCommunityCoins(ctx sdk.Context) sdk.DecCoins GetFeePoolCommunityCoins(ctx sdk.Context) sdk.DecCoins
GetFeePool(ctx sdk.Context) distrtypes.FeePool GetFeePool(ctx sdk.Context) distrtypes.FeePool
SetFeePool(ctx sdk.Context, feePool distrtypes.FeePool) SetFeePool(ctx sdk.Context, feePool distrtypes.FeePool)
GetParams(ctx sdk.Context) distrtypes.Params
SetParams(ctx sdk.Context, params distrtypes.Params)
} }
type MintKeeper interface { type MintKeeper interface {