mirror of
https://github.com/0glabs/0g-chain.git
synced 2024-12-24 15:25:18 +00:00
Add surplus and debt auction lot params (#531)
* wip: add lot size param for surplus and debt auctions * update tests with new params * update spec * address review comments
This commit is contained in:
parent
2ea06e4c80
commit
5336ccc0c0
@ -103,6 +103,7 @@ var (
|
||||
ErrLoadingAugmentedCDP = types.ErrLoadingAugmentedCDP
|
||||
ErrInvalidDebtRequest = types.ErrInvalidDebtRequest
|
||||
ErrDenomPrefixNotFound = types.ErrDenomPrefixNotFound
|
||||
ErrPricefeedDown = types.ErrPricefeedDown
|
||||
CdpIDKeyPrefix = types.CdpIDKeyPrefix
|
||||
CdpKeyPrefix = types.CdpKeyPrefix
|
||||
CollateralRatioIndexPrefix = types.CollateralRatioIndexPrefix
|
||||
@ -112,13 +113,16 @@ var (
|
||||
DepositKeyPrefix = types.DepositKeyPrefix
|
||||
PrincipalKeyPrefix = types.PrincipalKeyPrefix
|
||||
PreviousDistributionTimeKey = types.PreviousDistributionTimeKey
|
||||
PricefeedStatusKeyPrefix = types.PricefeedStatusKeyPrefix
|
||||
KeyGlobalDebtLimit = types.KeyGlobalDebtLimit
|
||||
KeyCollateralParams = types.KeyCollateralParams
|
||||
KeyDebtParam = types.KeyDebtParam
|
||||
KeyDistributionFrequency = types.KeyDistributionFrequency
|
||||
KeyCircuitBreaker = types.KeyCircuitBreaker
|
||||
KeyDebtThreshold = types.KeyDebtThreshold
|
||||
KeyDebtLot = types.KeyDebtLot
|
||||
KeySurplusThreshold = types.KeySurplusThreshold
|
||||
KeySurplusLot = types.KeySurplusLot
|
||||
DefaultGlobalDebt = types.DefaultGlobalDebt
|
||||
DefaultCircuitBreaker = types.DefaultCircuitBreaker
|
||||
DefaultCollateralParams = types.DefaultCollateralParams
|
||||
@ -129,6 +133,8 @@ var (
|
||||
DefaultStableDenom = types.DefaultStableDenom
|
||||
DefaultSurplusThreshold = types.DefaultSurplusThreshold
|
||||
DefaultDebtThreshold = types.DefaultDebtThreshold
|
||||
DefaultSurplusLot = types.DefaultSurplusLot
|
||||
DefaultDebtLot = types.DefaultDebtLot
|
||||
DefaultPreviousDistributionTime = types.DefaultPreviousDistributionTime
|
||||
DefaultSavingsDistributionFrequency = types.DefaultSavingsDistributionFrequency
|
||||
MaxSortableDec = types.MaxSortableDec
|
||||
|
@ -42,7 +42,9 @@ func NewCDPGenState(asset string, liquidationRatio sdk.Dec) app.GenesisState {
|
||||
Params: cdp.Params{
|
||||
GlobalDebtLimit: sdk.NewInt64Coin("usdx", 1000000000000),
|
||||
SurplusAuctionThreshold: cdp.DefaultSurplusThreshold,
|
||||
SurplusAuctionLot: cdp.DefaultSurplusLot,
|
||||
DebtAuctionThreshold: cdp.DefaultDebtThreshold,
|
||||
DebtAuctionLot: cdp.DefaultDebtLot,
|
||||
SavingsDistributionFrequency: cdp.DefaultSavingsDistributionFrequency,
|
||||
CollateralParams: cdp.CollateralParams{
|
||||
{
|
||||
@ -105,7 +107,9 @@ func NewCDPGenStateMulti() app.GenesisState {
|
||||
Params: cdp.Params{
|
||||
GlobalDebtLimit: sdk.NewInt64Coin("usdx", 1000000000000),
|
||||
SurplusAuctionThreshold: cdp.DefaultSurplusThreshold,
|
||||
SurplusAuctionLot: cdp.DefaultSurplusLot,
|
||||
DebtAuctionThreshold: cdp.DefaultDebtThreshold,
|
||||
DebtAuctionLot: cdp.DefaultDebtLot,
|
||||
SavingsDistributionFrequency: cdp.DefaultSavingsDistributionFrequency,
|
||||
CollateralParams: cdp.CollateralParams{
|
||||
{
|
||||
|
@ -109,7 +109,10 @@ func (k Keeper) RunSurplusAndDebtAuctions(ctx sdk.Context) error {
|
||||
remainingDebt := k.GetTotalDebt(ctx, types.LiquidatorMacc)
|
||||
params := k.GetParams(ctx)
|
||||
if remainingDebt.GTE(params.DebtAuctionThreshold) {
|
||||
_, err := k.auctionKeeper.StartDebtAuction(ctx, types.LiquidatorMacc, sdk.NewCoin("usdx", remainingDebt), sdk.NewCoin(k.GetGovDenom(ctx), remainingDebt.Mul(sdk.NewInt(dump))), sdk.NewCoin(k.GetDebtDenom(ctx), remainingDebt))
|
||||
debtLot := sdk.NewCoin(k.GetDebtDenom(ctx), params.DebtAuctionLot)
|
||||
bidCoin := sdk.NewCoin(params.DebtParam.Denom, debtLot.Amount)
|
||||
_, err := k.auctionKeeper.StartDebtAuction(
|
||||
ctx, types.LiquidatorMacc, bidCoin, sdk.NewCoin(k.GetGovDenom(ctx), debtLot.Amount.Mul(sdk.NewInt(dump))), debtLot)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@ -119,7 +122,7 @@ func (k Keeper) RunSurplusAndDebtAuctions(ctx sdk.Context) error {
|
||||
if !surplus.GTE(params.SurplusAuctionThreshold) {
|
||||
return nil
|
||||
}
|
||||
surplusLot := sdk.NewCoin(params.DebtParam.Denom, surplus)
|
||||
surplusLot := sdk.NewCoin(params.DebtParam.Denom, sdk.MinInt(params.SurplusAuctionLot, surplus))
|
||||
_, err := k.auctionKeeper.StartSurplusAuction(ctx, types.LiquidatorMacc, surplusLot, k.GetGovDenom(ctx))
|
||||
return err
|
||||
}
|
||||
|
@ -53,24 +53,28 @@ func (suite *AuctionTestSuite) TestNetDebtSurplus() {
|
||||
|
||||
func (suite *AuctionTestSuite) TestSurplusAuction() {
|
||||
sk := suite.app.GetSupplyKeeper()
|
||||
err := sk.MintCoins(suite.ctx, types.LiquidatorMacc, cs(c("usdx", 10000000000)))
|
||||
err := sk.MintCoins(suite.ctx, types.LiquidatorMacc, cs(c("usdx", 600000000000)))
|
||||
suite.NoError(err)
|
||||
err = sk.MintCoins(suite.ctx, types.LiquidatorMacc, cs(c("debt", 1000000000)))
|
||||
err = sk.MintCoins(suite.ctx, types.LiquidatorMacc, cs(c("debt", 100000000000)))
|
||||
suite.NoError(err)
|
||||
suite.keeper.RunSurplusAndDebtAuctions(suite.ctx)
|
||||
acc := sk.GetModuleAccount(suite.ctx, auction.ModuleName)
|
||||
suite.Equal(cs(c("usdx", 9000000000)), acc.GetCoins())
|
||||
suite.Equal(cs(c("usdx", 10000000000)), acc.GetCoins())
|
||||
acc = sk.GetModuleAccount(suite.ctx, types.LiquidatorMacc)
|
||||
suite.Equal(cs(c("usdx", 490000000000)), acc.GetCoins())
|
||||
}
|
||||
|
||||
func (suite *AuctionTestSuite) TestDebtAuction() {
|
||||
sk := suite.app.GetSupplyKeeper()
|
||||
err := sk.MintCoins(suite.ctx, types.LiquidatorMacc, cs(c("usdx", 1000000000)))
|
||||
err := sk.MintCoins(suite.ctx, types.LiquidatorMacc, cs(c("usdx", 100000000000)))
|
||||
suite.NoError(err)
|
||||
err = sk.MintCoins(suite.ctx, types.LiquidatorMacc, cs(c("debt", 10000000000)))
|
||||
err = sk.MintCoins(suite.ctx, types.LiquidatorMacc, cs(c("debt", 200000000000)))
|
||||
suite.NoError(err)
|
||||
suite.keeper.RunSurplusAndDebtAuctions(suite.ctx)
|
||||
acc := sk.GetModuleAccount(suite.ctx, auction.ModuleName)
|
||||
suite.Equal(cs(c("debt", 9000000000)), acc.GetCoins())
|
||||
suite.Equal(cs(c("debt", 10000000000)), acc.GetCoins())
|
||||
acc = sk.GetModuleAccount(suite.ctx, types.LiquidatorMacc)
|
||||
suite.Equal(cs(c("debt", 90000000000)), acc.GetCoins())
|
||||
}
|
||||
|
||||
func TestAuctionTestSuite(t *testing.T) {
|
||||
|
@ -42,7 +42,9 @@ func NewCDPGenState(asset string, liquidationRatio sdk.Dec) app.GenesisState {
|
||||
Params: cdp.Params{
|
||||
GlobalDebtLimit: sdk.NewInt64Coin("usdx", 1000000000000),
|
||||
SurplusAuctionThreshold: cdp.DefaultSurplusThreshold,
|
||||
SurplusAuctionLot: cdp.DefaultSurplusLot,
|
||||
DebtAuctionThreshold: cdp.DefaultDebtThreshold,
|
||||
DebtAuctionLot: cdp.DefaultDebtLot,
|
||||
SavingsDistributionFrequency: cdp.DefaultSavingsDistributionFrequency,
|
||||
CollateralParams: cdp.CollateralParams{
|
||||
{
|
||||
@ -105,7 +107,9 @@ func NewCDPGenStateMulti() app.GenesisState {
|
||||
Params: cdp.Params{
|
||||
GlobalDebtLimit: sdk.NewInt64Coin("usdx", 1000000000000),
|
||||
SurplusAuctionThreshold: cdp.DefaultSurplusThreshold,
|
||||
SurplusAuctionLot: cdp.DefaultSurplusLot,
|
||||
DebtAuctionThreshold: cdp.DefaultDebtThreshold,
|
||||
DebtAuctionLot: cdp.DefaultDebtLot,
|
||||
SavingsDistributionFrequency: cdp.DefaultSavingsDistributionFrequency,
|
||||
CollateralParams: cdp.CollateralParams{
|
||||
{
|
||||
@ -155,7 +159,9 @@ func NewCDPGenStateHighDebtLimit() app.GenesisState {
|
||||
Params: cdp.Params{
|
||||
GlobalDebtLimit: sdk.NewInt64Coin("usdx", 100000000000000),
|
||||
SurplusAuctionThreshold: cdp.DefaultSurplusThreshold,
|
||||
SurplusAuctionLot: cdp.DefaultSurplusLot,
|
||||
DebtAuctionThreshold: cdp.DefaultDebtThreshold,
|
||||
DebtAuctionLot: cdp.DefaultDebtLot,
|
||||
SavingsDistributionFrequency: cdp.DefaultSavingsDistributionFrequency,
|
||||
CollateralParams: cdp.CollateralParams{
|
||||
{
|
||||
|
@ -72,6 +72,8 @@ func randomCdpGenState(selection int) types.GenesisState {
|
||||
Params: types.Params{
|
||||
GlobalDebtLimit: sdk.NewInt64Coin("usdx", 100000000000000),
|
||||
SurplusAuctionThreshold: types.DefaultSurplusThreshold,
|
||||
SurplusAuctionLot: types.DefaultSurplusLot,
|
||||
DebtAuctionLot: types.DefaultDebtLot,
|
||||
DebtAuctionThreshold: types.DefaultDebtThreshold,
|
||||
SavingsDistributionFrequency: types.DefaultSavingsDistributionFrequency,
|
||||
CollateralParams: types.CollateralParams{
|
||||
@ -132,6 +134,8 @@ func randomCdpGenState(selection int) types.GenesisState {
|
||||
GlobalDebtLimit: sdk.NewInt64Coin("usdx", 100000000000000),
|
||||
SurplusAuctionThreshold: types.DefaultSurplusThreshold,
|
||||
DebtAuctionThreshold: types.DefaultDebtThreshold,
|
||||
SurplusAuctionLot: types.DefaultSurplusLot,
|
||||
DebtAuctionLot: types.DefaultDebtLot,
|
||||
SavingsDistributionFrequency: types.DefaultSavingsDistributionFrequency,
|
||||
CollateralParams: types.CollateralParams{
|
||||
{
|
||||
|
@ -8,7 +8,11 @@ The cdp module contains the following parameters:
|
||||
| DebtParams | DebtParam | {see below} | array of params for each enabled pegged asset |
|
||||
| GlobalDebtLimit | coin | {"denom":"usdx","amount":"1000"} | maximum pegged assets that can be minted across the whole system |
|
||||
| SavingsDistributionFrequency | string (int) | "84600" | number of seconds between distribution of the savings rate |
|
||||
| CircuitBreaker | bool | false | flag to disable user interactions with the system |
|
||||
| GlobalDebtLimit | coin | {"denom":"usdx","amount":"1000"} | maximum pegged assets that can be minted across the whole system |
|
||||
| DebtAuctionThreshold | string (int) | "100000000000" | amount of system debt before a debt auction is triggered |
|
||||
| SurplusAuctionThreshold | string (int) | "100000000000" | amount of system surplus before a surplus auction is triggered |
|
||||
| DebtAuctionLot | string (int) | "10000000000" | amount of debt that each debt auction will attempt to recoup |
|
||||
| SurplusAuctionLot | string (int) | "10000000000" | amount of surplus that will be sold at each surplus auction |
|
||||
|
||||
Each CollateralParam has the following parameters:
|
||||
|
||||
|
@ -20,7 +20,9 @@ var (
|
||||
KeyDistributionFrequency = []byte("DistributionFrequency")
|
||||
KeyCircuitBreaker = []byte("CircuitBreaker")
|
||||
KeyDebtThreshold = []byte("DebtThreshold")
|
||||
KeyDebtLot = []byte("DebtLot")
|
||||
KeySurplusThreshold = []byte("SurplusThreshold")
|
||||
KeySurplusLot = []byte("SurplusLot")
|
||||
DefaultGlobalDebt = sdk.NewCoin(DefaultStableDenom, sdk.ZeroInt())
|
||||
DefaultCircuitBreaker = false
|
||||
DefaultCollateralParams = CollateralParams{}
|
||||
@ -35,8 +37,10 @@ var (
|
||||
DefaultDebtDenom = "debt"
|
||||
DefaultGovDenom = "ukava"
|
||||
DefaultStableDenom = "usdx"
|
||||
DefaultSurplusThreshold = sdk.NewInt(1000000000)
|
||||
DefaultDebtThreshold = sdk.NewInt(1000000000)
|
||||
DefaultSurplusThreshold = sdk.NewInt(500000000000)
|
||||
DefaultDebtThreshold = sdk.NewInt(100000000000)
|
||||
DefaultSurplusLot = sdk.NewInt(10000000000)
|
||||
DefaultDebtLot = sdk.NewInt(10000000000)
|
||||
DefaultPreviousDistributionTime = tmtime.Canonical(time.Unix(0, 0))
|
||||
DefaultSavingsDistributionFrequency = time.Hour * 12
|
||||
minCollateralPrefix = 0
|
||||
@ -50,7 +54,9 @@ type Params struct {
|
||||
DebtParam DebtParam `json:"debt_param" yaml:"debt_param"`
|
||||
GlobalDebtLimit sdk.Coin `json:"global_debt_limit" yaml:"global_debt_limit"`
|
||||
SurplusAuctionThreshold sdk.Int `json:"surplus_auction_threshold" yaml:"surplus_auction_threshold"`
|
||||
SurplusAuctionLot sdk.Int `json:"surplus_auction_lot" yaml:"surplus_auction_lot"`
|
||||
DebtAuctionThreshold sdk.Int `json:"debt_auction_threshold" yaml:"debt_auction_threshold"`
|
||||
DebtAuctionLot sdk.Int `json:"debt_auction_lot" yaml:"debt_auction_lot"`
|
||||
SavingsDistributionFrequency time.Duration `json:"savings_distribution_frequency" yaml:"savings_distribution_frequency"`
|
||||
CircuitBreaker bool `json:"circuit_breaker" yaml:"circuit_breaker"`
|
||||
}
|
||||
@ -62,21 +68,29 @@ func (p Params) String() string {
|
||||
Collateral Params: %s
|
||||
Debt Params: %s
|
||||
Surplus Auction Threshold: %s
|
||||
Surplus Auction Lot: %s
|
||||
Debt Auction Threshold: %s
|
||||
Debt Auction Lot: %s
|
||||
Savings Distribution Frequency: %s
|
||||
Circuit Breaker: %t`,
|
||||
p.GlobalDebtLimit, p.CollateralParams, p.DebtParam, p.SurplusAuctionThreshold, p.DebtAuctionThreshold, p.SavingsDistributionFrequency, p.CircuitBreaker,
|
||||
p.GlobalDebtLimit, p.CollateralParams, p.DebtParam, p.SurplusAuctionThreshold, p.SurplusAuctionLot,
|
||||
p.DebtAuctionThreshold, p.DebtAuctionLot, p.SavingsDistributionFrequency, p.CircuitBreaker,
|
||||
)
|
||||
}
|
||||
|
||||
// NewParams returns a new params object
|
||||
func NewParams(debtLimit sdk.Coin, collateralParams CollateralParams, debtParam DebtParam, surplusThreshold sdk.Int, debtThreshold sdk.Int, distributionFreq time.Duration, breaker bool) Params {
|
||||
func NewParams(
|
||||
debtLimit sdk.Coin, collateralParams CollateralParams, debtParam DebtParam, surplusThreshold,
|
||||
surplusLot, debtThreshold, debtLot sdk.Int, distributionFreq time.Duration, breaker bool,
|
||||
) Params {
|
||||
return Params{
|
||||
GlobalDebtLimit: debtLimit,
|
||||
CollateralParams: collateralParams,
|
||||
DebtParam: debtParam,
|
||||
DebtAuctionThreshold: debtThreshold,
|
||||
SurplusAuctionThreshold: surplusThreshold,
|
||||
SurplusAuctionLot: surplusLot,
|
||||
DebtAuctionThreshold: debtThreshold,
|
||||
DebtAuctionLot: debtLot,
|
||||
SavingsDistributionFrequency: distributionFreq,
|
||||
CircuitBreaker: breaker,
|
||||
}
|
||||
@ -84,7 +98,11 @@ func NewParams(debtLimit sdk.Coin, collateralParams CollateralParams, debtParam
|
||||
|
||||
// DefaultParams returns default params for cdp module
|
||||
func DefaultParams() Params {
|
||||
return NewParams(DefaultGlobalDebt, DefaultCollateralParams, DefaultDebtParam, DefaultSurplusThreshold, DefaultDebtThreshold, DefaultSavingsDistributionFrequency, DefaultCircuitBreaker)
|
||||
return NewParams(
|
||||
DefaultGlobalDebt, DefaultCollateralParams, DefaultDebtParam, DefaultSurplusThreshold,
|
||||
DefaultSurplusLot, DefaultDebtThreshold, DefaultDebtLot, DefaultSavingsDistributionFrequency,
|
||||
DefaultCircuitBreaker,
|
||||
)
|
||||
}
|
||||
|
||||
// CollateralParam governance parameters for each collateral type within the cdp module
|
||||
@ -175,7 +193,9 @@ func (p *Params) ParamSetPairs() params.ParamSetPairs {
|
||||
params.NewParamSetPair(KeyDebtParam, &p.DebtParam, validateDebtParam),
|
||||
params.NewParamSetPair(KeyCircuitBreaker, &p.CircuitBreaker, validateCircuitBreakerParam),
|
||||
params.NewParamSetPair(KeySurplusThreshold, &p.SurplusAuctionThreshold, validateSurplusAuctionThresholdParam),
|
||||
params.NewParamSetPair(KeySurplusLot, &p.SurplusAuctionLot, validateSurplusAuctionLotParam),
|
||||
params.NewParamSetPair(KeyDebtThreshold, &p.DebtAuctionThreshold, validateDebtAuctionThresholdParam),
|
||||
params.NewParamSetPair(KeyDebtLot, &p.DebtAuctionLot, validateDebtAuctionLotParam),
|
||||
params.NewParamSetPair(KeyDistributionFrequency, &p.SavingsDistributionFrequency, validateSavingsDistributionFrequencyParam),
|
||||
}
|
||||
}
|
||||
@ -202,10 +222,18 @@ func (p Params) Validate() error {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := validateSurplusAuctionLotParam(p.SurplusAuctionLot); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := validateDebtAuctionThresholdParam(p.DebtAuctionThreshold); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := validateDebtAuctionLotParam(p.DebtAuctionLot); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := validateSavingsDistributionFrequencyParam(p.SavingsDistributionFrequency); err != nil {
|
||||
return err
|
||||
}
|
||||
@ -360,6 +388,19 @@ func validateSurplusAuctionThresholdParam(i interface{}) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func validateSurplusAuctionLotParam(i interface{}) error {
|
||||
sal, ok := i.(sdk.Int)
|
||||
if !ok {
|
||||
return fmt.Errorf("invalid parameter type: %T", i)
|
||||
}
|
||||
|
||||
if !sal.IsPositive() {
|
||||
return fmt.Errorf("surplus auction lot should be positive: %s", sal)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func validateDebtAuctionThresholdParam(i interface{}) error {
|
||||
dat, ok := i.(sdk.Int)
|
||||
if !ok {
|
||||
@ -373,6 +414,19 @@ func validateDebtAuctionThresholdParam(i interface{}) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func validateDebtAuctionLotParam(i interface{}) error {
|
||||
dal, ok := i.(sdk.Int)
|
||||
if !ok {
|
||||
return fmt.Errorf("invalid parameter type: %T", i)
|
||||
}
|
||||
|
||||
if !dal.IsPositive() {
|
||||
return fmt.Errorf("debt auction lot should be positive: %s", dal)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func validateSavingsDistributionFrequencyParam(i interface{}) error {
|
||||
sdf, ok := i.(time.Duration)
|
||||
if !ok {
|
||||
|
@ -25,7 +25,9 @@ func (suite *ParamsTestSuite) TestParamValidation() {
|
||||
collateralParams types.CollateralParams
|
||||
debtParam types.DebtParam
|
||||
surplusThreshold sdk.Int
|
||||
surplusLot sdk.Int
|
||||
debtThreshold sdk.Int
|
||||
debtLot sdk.Int
|
||||
distributionFreq time.Duration
|
||||
breaker bool
|
||||
}
|
||||
@ -46,7 +48,9 @@ func (suite *ParamsTestSuite) TestParamValidation() {
|
||||
collateralParams: types.DefaultCollateralParams,
|
||||
debtParam: types.DefaultDebtParam,
|
||||
surplusThreshold: types.DefaultSurplusThreshold,
|
||||
surplusLot: types.DefaultSurplusLot,
|
||||
debtThreshold: types.DefaultDebtThreshold,
|
||||
debtLot: types.DefaultDebtLot,
|
||||
distributionFreq: types.DefaultSavingsDistributionFrequency,
|
||||
breaker: types.DefaultCircuitBreaker,
|
||||
},
|
||||
@ -81,7 +85,9 @@ func (suite *ParamsTestSuite) TestParamValidation() {
|
||||
SavingsRate: sdk.MustNewDecFromStr("0.95"),
|
||||
},
|
||||
surplusThreshold: types.DefaultSurplusThreshold,
|
||||
surplusLot: types.DefaultSurplusLot,
|
||||
debtThreshold: types.DefaultDebtThreshold,
|
||||
debtLot: types.DefaultDebtLot,
|
||||
distributionFreq: types.DefaultSavingsDistributionFrequency,
|
||||
breaker: types.DefaultCircuitBreaker,
|
||||
},
|
||||
@ -116,7 +122,9 @@ func (suite *ParamsTestSuite) TestParamValidation() {
|
||||
SavingsRate: sdk.MustNewDecFromStr("0.95"),
|
||||
},
|
||||
surplusThreshold: types.DefaultSurplusThreshold,
|
||||
surplusLot: types.DefaultSurplusLot,
|
||||
debtThreshold: types.DefaultDebtThreshold,
|
||||
debtLot: types.DefaultDebtLot,
|
||||
distributionFreq: types.DefaultSavingsDistributionFrequency,
|
||||
breaker: types.DefaultCircuitBreaker,
|
||||
},
|
||||
@ -151,7 +159,9 @@ func (suite *ParamsTestSuite) TestParamValidation() {
|
||||
SavingsRate: sdk.MustNewDecFromStr("0.95"),
|
||||
},
|
||||
surplusThreshold: types.DefaultSurplusThreshold,
|
||||
surplusLot: types.DefaultSurplusLot,
|
||||
debtThreshold: types.DefaultDebtThreshold,
|
||||
debtLot: types.DefaultDebtLot,
|
||||
distributionFreq: types.DefaultSavingsDistributionFrequency,
|
||||
breaker: types.DefaultCircuitBreaker,
|
||||
},
|
||||
@ -198,7 +208,9 @@ func (suite *ParamsTestSuite) TestParamValidation() {
|
||||
SavingsRate: sdk.MustNewDecFromStr("0.95"),
|
||||
},
|
||||
surplusThreshold: types.DefaultSurplusThreshold,
|
||||
surplusLot: types.DefaultSurplusLot,
|
||||
debtThreshold: types.DefaultDebtThreshold,
|
||||
debtLot: types.DefaultDebtLot,
|
||||
distributionFreq: types.DefaultSavingsDistributionFrequency,
|
||||
breaker: types.DefaultCircuitBreaker,
|
||||
},
|
||||
@ -245,7 +257,9 @@ func (suite *ParamsTestSuite) TestParamValidation() {
|
||||
SavingsRate: sdk.MustNewDecFromStr("0.95"),
|
||||
},
|
||||
surplusThreshold: types.DefaultSurplusThreshold,
|
||||
surplusLot: types.DefaultSurplusLot,
|
||||
debtThreshold: types.DefaultDebtThreshold,
|
||||
debtLot: types.DefaultDebtLot,
|
||||
distributionFreq: types.DefaultSavingsDistributionFrequency,
|
||||
breaker: types.DefaultCircuitBreaker,
|
||||
},
|
||||
@ -292,7 +306,9 @@ func (suite *ParamsTestSuite) TestParamValidation() {
|
||||
SavingsRate: sdk.MustNewDecFromStr("0.95"),
|
||||
},
|
||||
surplusThreshold: types.DefaultSurplusThreshold,
|
||||
surplusLot: types.DefaultSurplusLot,
|
||||
debtThreshold: types.DefaultDebtThreshold,
|
||||
debtLot: types.DefaultDebtLot,
|
||||
distributionFreq: types.DefaultSavingsDistributionFrequency,
|
||||
breaker: types.DefaultCircuitBreaker,
|
||||
},
|
||||
@ -327,7 +343,9 @@ func (suite *ParamsTestSuite) TestParamValidation() {
|
||||
SavingsRate: sdk.MustNewDecFromStr("0.95"),
|
||||
},
|
||||
surplusThreshold: types.DefaultSurplusThreshold,
|
||||
surplusLot: types.DefaultSurplusLot,
|
||||
debtThreshold: types.DefaultDebtThreshold,
|
||||
debtLot: types.DefaultDebtLot,
|
||||
distributionFreq: types.DefaultSavingsDistributionFrequency,
|
||||
breaker: types.DefaultCircuitBreaker,
|
||||
},
|
||||
@ -362,7 +380,9 @@ func (suite *ParamsTestSuite) TestParamValidation() {
|
||||
SavingsRate: sdk.MustNewDecFromStr("0.95"),
|
||||
},
|
||||
surplusThreshold: types.DefaultSurplusThreshold,
|
||||
surplusLot: types.DefaultSurplusLot,
|
||||
debtThreshold: types.DefaultDebtThreshold,
|
||||
debtLot: types.DefaultDebtLot,
|
||||
distributionFreq: types.DefaultSavingsDistributionFrequency,
|
||||
breaker: types.DefaultCircuitBreaker,
|
||||
},
|
||||
@ -409,7 +429,9 @@ func (suite *ParamsTestSuite) TestParamValidation() {
|
||||
SavingsRate: sdk.MustNewDecFromStr("0.95"),
|
||||
},
|
||||
surplusThreshold: types.DefaultSurplusThreshold,
|
||||
surplusLot: types.DefaultSurplusLot,
|
||||
debtThreshold: types.DefaultDebtThreshold,
|
||||
debtLot: types.DefaultDebtLot,
|
||||
distributionFreq: types.DefaultSavingsDistributionFrequency,
|
||||
breaker: types.DefaultCircuitBreaker,
|
||||
},
|
||||
@ -456,7 +478,9 @@ func (suite *ParamsTestSuite) TestParamValidation() {
|
||||
SavingsRate: sdk.MustNewDecFromStr("0.95"),
|
||||
},
|
||||
surplusThreshold: types.DefaultSurplusThreshold,
|
||||
surplusLot: types.DefaultSurplusLot,
|
||||
debtThreshold: types.DefaultDebtThreshold,
|
||||
debtLot: types.DefaultDebtLot,
|
||||
distributionFreq: types.DefaultSavingsDistributionFrequency,
|
||||
breaker: types.DefaultCircuitBreaker,
|
||||
},
|
||||
@ -491,7 +515,9 @@ func (suite *ParamsTestSuite) TestParamValidation() {
|
||||
SavingsRate: sdk.MustNewDecFromStr("0.95"),
|
||||
},
|
||||
surplusThreshold: types.DefaultSurplusThreshold,
|
||||
surplusLot: types.DefaultSurplusLot,
|
||||
debtThreshold: types.DefaultDebtThreshold,
|
||||
debtLot: types.DefaultDebtLot,
|
||||
distributionFreq: types.DefaultSavingsDistributionFrequency,
|
||||
breaker: types.DefaultCircuitBreaker,
|
||||
},
|
||||
@ -526,7 +552,9 @@ func (suite *ParamsTestSuite) TestParamValidation() {
|
||||
SavingsRate: sdk.MustNewDecFromStr("0.95"),
|
||||
},
|
||||
surplusThreshold: types.DefaultSurplusThreshold,
|
||||
surplusLot: types.DefaultSurplusLot,
|
||||
debtThreshold: types.DefaultDebtThreshold,
|
||||
debtLot: types.DefaultDebtLot,
|
||||
distributionFreq: types.DefaultSavingsDistributionFrequency,
|
||||
breaker: types.DefaultCircuitBreaker,
|
||||
},
|
||||
@ -561,7 +589,9 @@ func (suite *ParamsTestSuite) TestParamValidation() {
|
||||
SavingsRate: sdk.MustNewDecFromStr("0.95"),
|
||||
},
|
||||
surplusThreshold: types.DefaultSurplusThreshold,
|
||||
surplusLot: types.DefaultSurplusLot,
|
||||
debtThreshold: types.DefaultDebtThreshold,
|
||||
debtLot: types.DefaultDebtLot,
|
||||
distributionFreq: types.DefaultSavingsDistributionFrequency,
|
||||
breaker: types.DefaultCircuitBreaker,
|
||||
},
|
||||
@ -596,7 +626,9 @@ func (suite *ParamsTestSuite) TestParamValidation() {
|
||||
SavingsRate: sdk.MustNewDecFromStr("0.95"),
|
||||
},
|
||||
surplusThreshold: types.DefaultSurplusThreshold,
|
||||
surplusLot: types.DefaultSurplusLot,
|
||||
debtThreshold: types.DefaultDebtThreshold,
|
||||
debtLot: types.DefaultDebtLot,
|
||||
distributionFreq: types.DefaultSavingsDistributionFrequency,
|
||||
breaker: types.DefaultCircuitBreaker,
|
||||
},
|
||||
@ -631,7 +663,9 @@ func (suite *ParamsTestSuite) TestParamValidation() {
|
||||
SavingsRate: sdk.MustNewDecFromStr("0.95"),
|
||||
},
|
||||
surplusThreshold: types.DefaultSurplusThreshold,
|
||||
surplusLot: types.DefaultSurplusLot,
|
||||
debtThreshold: types.DefaultDebtThreshold,
|
||||
debtLot: types.DefaultDebtLot,
|
||||
distributionFreq: types.DefaultSavingsDistributionFrequency,
|
||||
breaker: types.DefaultCircuitBreaker,
|
||||
},
|
||||
@ -666,7 +700,9 @@ func (suite *ParamsTestSuite) TestParamValidation() {
|
||||
SavingsRate: sdk.MustNewDecFromStr("1.05"),
|
||||
},
|
||||
surplusThreshold: types.DefaultSurplusThreshold,
|
||||
surplusLot: types.DefaultSurplusLot,
|
||||
debtThreshold: types.DefaultDebtThreshold,
|
||||
debtLot: types.DefaultDebtLot,
|
||||
distributionFreq: types.DefaultSavingsDistributionFrequency,
|
||||
breaker: types.DefaultCircuitBreaker,
|
||||
},
|
||||
@ -682,7 +718,9 @@ func (suite *ParamsTestSuite) TestParamValidation() {
|
||||
collateralParams: types.DefaultCollateralParams,
|
||||
debtParam: types.DefaultDebtParam,
|
||||
surplusThreshold: types.DefaultSurplusThreshold,
|
||||
surplusLot: types.DefaultSurplusLot,
|
||||
debtThreshold: types.DefaultDebtThreshold,
|
||||
debtLot: types.DefaultDebtLot,
|
||||
distributionFreq: types.DefaultSavingsDistributionFrequency,
|
||||
breaker: types.DefaultCircuitBreaker,
|
||||
},
|
||||
@ -698,7 +736,9 @@ func (suite *ParamsTestSuite) TestParamValidation() {
|
||||
collateralParams: types.DefaultCollateralParams,
|
||||
debtParam: types.DefaultDebtParam,
|
||||
surplusThreshold: types.DefaultSurplusThreshold,
|
||||
surplusLot: types.DefaultSurplusLot,
|
||||
debtThreshold: types.DefaultDebtThreshold,
|
||||
debtLot: types.DefaultDebtLot,
|
||||
distributionFreq: time.Second * 0,
|
||||
breaker: types.DefaultCircuitBreaker,
|
||||
},
|
||||
@ -708,13 +748,15 @@ func (suite *ParamsTestSuite) TestParamValidation() {
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "zero surplus auction",
|
||||
name: "zero surplus auction threshold",
|
||||
args: args{
|
||||
globalDebtLimit: types.DefaultGlobalDebt,
|
||||
collateralParams: types.DefaultCollateralParams,
|
||||
debtParam: types.DefaultDebtParam,
|
||||
surplusThreshold: sdk.ZeroInt(),
|
||||
surplusLot: types.DefaultSurplusLot,
|
||||
debtThreshold: types.DefaultDebtThreshold,
|
||||
debtLot: types.DefaultDebtLot,
|
||||
distributionFreq: types.DefaultSavingsDistributionFrequency,
|
||||
breaker: types.DefaultCircuitBreaker,
|
||||
},
|
||||
@ -724,13 +766,15 @@ func (suite *ParamsTestSuite) TestParamValidation() {
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "zero debt auction",
|
||||
name: "zero debt auction threshold",
|
||||
args: args{
|
||||
globalDebtLimit: types.DefaultGlobalDebt,
|
||||
collateralParams: types.DefaultCollateralParams,
|
||||
debtParam: types.DefaultDebtParam,
|
||||
surplusThreshold: types.DefaultSurplusThreshold,
|
||||
surplusLot: types.DefaultSurplusLot,
|
||||
debtThreshold: sdk.ZeroInt(),
|
||||
debtLot: types.DefaultDebtLot,
|
||||
distributionFreq: types.DefaultSavingsDistributionFrequency,
|
||||
breaker: types.DefaultCircuitBreaker,
|
||||
},
|
||||
@ -739,10 +783,46 @@ func (suite *ParamsTestSuite) TestParamValidation() {
|
||||
contains: "debt auction threshold should be positive",
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "zero surplus auction lot",
|
||||
args: args{
|
||||
globalDebtLimit: types.DefaultGlobalDebt,
|
||||
collateralParams: types.DefaultCollateralParams,
|
||||
debtParam: types.DefaultDebtParam,
|
||||
surplusThreshold: types.DefaultSurplusThreshold,
|
||||
surplusLot: sdk.ZeroInt(),
|
||||
debtThreshold: types.DefaultDebtThreshold,
|
||||
debtLot: types.DefaultDebtLot,
|
||||
distributionFreq: types.DefaultSavingsDistributionFrequency,
|
||||
breaker: types.DefaultCircuitBreaker,
|
||||
},
|
||||
errArgs: errArgs{
|
||||
expectPass: false,
|
||||
contains: "surplus auction lot should be positive",
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "zero debt auction lot",
|
||||
args: args{
|
||||
globalDebtLimit: types.DefaultGlobalDebt,
|
||||
collateralParams: types.DefaultCollateralParams,
|
||||
debtParam: types.DefaultDebtParam,
|
||||
surplusThreshold: types.DefaultSurplusThreshold,
|
||||
surplusLot: types.DefaultSurplusLot,
|
||||
debtThreshold: types.DefaultDebtThreshold,
|
||||
debtLot: sdk.ZeroInt(),
|
||||
distributionFreq: types.DefaultSavingsDistributionFrequency,
|
||||
breaker: types.DefaultCircuitBreaker,
|
||||
},
|
||||
errArgs: errArgs{
|
||||
expectPass: false,
|
||||
contains: "debt auction lot should be positive",
|
||||
},
|
||||
},
|
||||
}
|
||||
for _, tc := range testCases {
|
||||
suite.Run(tc.name, func() {
|
||||
params := types.NewParams(tc.args.globalDebtLimit, tc.args.collateralParams, tc.args.debtParam, tc.args.surplusThreshold, tc.args.debtThreshold, tc.args.distributionFreq, tc.args.breaker)
|
||||
params := types.NewParams(tc.args.globalDebtLimit, tc.args.collateralParams, tc.args.debtParam, tc.args.surplusThreshold, tc.args.surplusLot, tc.args.debtThreshold, tc.args.debtLot, tc.args.distributionFreq, tc.args.breaker)
|
||||
err := params.Validate()
|
||||
if tc.errArgs.expectPass {
|
||||
suite.Require().NoError(err)
|
||||
|
@ -179,7 +179,9 @@ func (suite *KeeperTestSuite) setupCdpChain() {
|
||||
Params: cdp.Params{
|
||||
GlobalDebtLimit: sdk.NewInt64Coin("usdx", 1000000000000),
|
||||
SurplusAuctionThreshold: cdp.DefaultSurplusThreshold,
|
||||
SurplusAuctionLot: cdp.DefaultSurplusLot,
|
||||
DebtAuctionThreshold: cdp.DefaultDebtThreshold,
|
||||
DebtAuctionLot: cdp.DefaultDebtLot,
|
||||
SavingsDistributionFrequency: cdp.DefaultSavingsDistributionFrequency,
|
||||
CollateralParams: cdp.CollateralParams{
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user