Set the CDP Block Interval to 100 during v0.26.x upgrade (#1865)

* set CDP block interval to 100 to only run interest synchronization
for risky cdps every 100 blocks instead of every block

* refactor and use constant for setting to improve clarity; update
block interval to 50 instead of 100.  This will decrease risk by
running around every 6 minutes instead of 12 mintues for current
mainnet block times.
This commit is contained in:
Nick DeLuca 2024-03-29 11:05:26 -07:00 committed by GitHub
parent 8f93ca2048
commit c9d900be2c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 34 additions and 1 deletions

View File

@ -27,6 +27,8 @@ import (
const ( const (
UpgradeName_Mainnet = "v0.26.0" UpgradeName_Mainnet = "v0.26.0"
UpgradeName_Testnet = "v0.26.0-alpha.0" UpgradeName_Testnet = "v0.26.0-alpha.0"
CDPLiquidationBlockInterval = int64(50)
) )
// RegisterUpgradeHandlers registers the upgrade handlers for the app. // RegisterUpgradeHandlers registers the upgrade handlers for the app.
@ -123,6 +125,16 @@ func upgradeHandler(
// dedicated x/consensus module. // dedicated x/consensus module.
baseapp.MigrateParams(ctx, baseAppLegacySS, &app.consensusParamsKeeper) baseapp.MigrateParams(ctx, baseAppLegacySS, &app.consensusParamsKeeper)
return app.mm.RunMigrations(ctx, app.configurator, fromVM) // run migrations for all modules and return new consensus version map
versionMap, err := app.mm.RunMigrations(ctx, app.configurator, fromVM)
// Set risky CDP's to sync interest and liquidate every 100 blocks instead
// of every block. This significantly improves performance as this cdp
// process is a signification porition of time spent during block execution.
cdpParams := app.cdpKeeper.GetParams(ctx)
cdpParams.LiquidationBlockInterval = CDPLiquidationBlockInterval
app.cdpKeeper.SetParams(ctx, cdpParams)
return versionMap, err
} }
} }

View File

@ -8,6 +8,7 @@ import (
sdk "github.com/cosmos/cosmos-sdk/types" sdk "github.com/cosmos/cosmos-sdk/types"
consensustypes "github.com/cosmos/cosmos-sdk/x/consensus/types" consensustypes "github.com/cosmos/cosmos-sdk/x/consensus/types"
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1"
cdptypes "github.com/kava-labs/kava/x/cdp/types"
) )
func (suite *IntegrationTestSuite) TestUpgradeParams_SDK() { func (suite *IntegrationTestSuite) TestUpgradeParams_SDK() {
@ -98,6 +99,26 @@ func (suite *IntegrationTestSuite) TestUpgradeParams_Consensus() {
suite.Require().Equal(expectedParams, *paramsAfter.Params, "x/consensus params after upgrade should be as expected") suite.Require().Equal(expectedParams, *paramsAfter.Params, "x/consensus params after upgrade should be as expected")
} }
func (suite *IntegrationTestSuite) TestUpgradeParams_CDP_Interval() {
suite.SkipIfUpgradeDisabled()
beforeUpgradeCtx := suite.Kava.Grpc.CtxAtHeight(suite.UpgradeHeight - 1)
afterUpgradeCtx := suite.Kava.Grpc.CtxAtHeight(suite.UpgradeHeight)
grpcClient := suite.Kava.Grpc
paramsBefore, err := grpcClient.Query.Cdp.Params(beforeUpgradeCtx, &cdptypes.QueryParamsRequest{})
suite.Require().NoError(err)
paramsAfter, err := grpcClient.Query.Cdp.Params(afterUpgradeCtx, &cdptypes.QueryParamsRequest{})
suite.Require().NoError(err)
expectedParams := paramsBefore.Params
expectedParams.LiquidationBlockInterval = int64(50)
suite.Require().Equal(expectedParams, paramsAfter.Params,
"expected cdp parameters to equal previous parameters with a liquidation block interval of 100")
}
func mustParseDuration(s string) *time.Duration { func mustParseDuration(s string) *time.Duration {
d, err := time.ParseDuration(s) d, err := time.ParseDuration(s)
if err != nil { if err != nil {