github.com/Finschia/finschia-sdk@v0.48.1/x/mint/simulation/genesis.go (about) 1 package simulation 2 3 // DONTCOVER 4 5 import ( 6 "encoding/json" 7 "fmt" 8 "math/rand" 9 10 sdk "github.com/Finschia/finschia-sdk/types" 11 "github.com/Finschia/finschia-sdk/types/module" 12 "github.com/Finschia/finschia-sdk/x/mint/types" 13 ) 14 15 // Simulation parameter constants 16 const ( 17 Inflation = "inflation" 18 InflationRateChange = "inflation_rate_change" 19 InflationMax = "inflation_max" 20 InflationMin = "inflation_min" 21 GoalBonded = "goal_bonded" 22 ) 23 24 // GenInflation randomized Inflation 25 func GenInflation(r *rand.Rand) sdk.Dec { 26 return sdk.NewDecWithPrec(int64(r.Intn(99)), 2) 27 } 28 29 // GenInflationRateChange randomized InflationRateChange 30 func GenInflationRateChange(r *rand.Rand) sdk.Dec { 31 return sdk.NewDecWithPrec(int64(r.Intn(99)), 2) 32 } 33 34 // GenInflationMax randomized InflationMax 35 func GenInflationMax(r *rand.Rand) sdk.Dec { 36 return sdk.NewDecWithPrec(20, 2) 37 } 38 39 // GenInflationMin randomized InflationMin 40 func GenInflationMin(r *rand.Rand) sdk.Dec { 41 return sdk.NewDecWithPrec(7, 2) 42 } 43 44 // GenGoalBonded randomized GoalBonded 45 func GenGoalBonded(r *rand.Rand) sdk.Dec { 46 return sdk.NewDecWithPrec(67, 2) 47 } 48 49 // RandomizedGenState generates a random GenesisState for mint 50 func RandomizedGenState(simState *module.SimulationState) { 51 // minter 52 var inflation sdk.Dec 53 simState.AppParams.GetOrGenerate( 54 simState.Cdc, Inflation, &inflation, simState.Rand, 55 func(r *rand.Rand) { inflation = GenInflation(r) }, 56 ) 57 58 // params 59 var inflationRateChange sdk.Dec 60 simState.AppParams.GetOrGenerate( 61 simState.Cdc, InflationRateChange, &inflationRateChange, simState.Rand, 62 func(r *rand.Rand) { inflationRateChange = GenInflationRateChange(r) }, 63 ) 64 65 var inflationMax sdk.Dec 66 simState.AppParams.GetOrGenerate( 67 simState.Cdc, InflationMax, &inflationMax, simState.Rand, 68 func(r *rand.Rand) { inflationMax = GenInflationMax(r) }, 69 ) 70 71 var inflationMin sdk.Dec 72 simState.AppParams.GetOrGenerate( 73 simState.Cdc, InflationMin, &inflationMin, simState.Rand, 74 func(r *rand.Rand) { inflationMin = GenInflationMin(r) }, 75 ) 76 77 var goalBonded sdk.Dec 78 simState.AppParams.GetOrGenerate( 79 simState.Cdc, GoalBonded, &goalBonded, simState.Rand, 80 func(r *rand.Rand) { goalBonded = GenGoalBonded(r) }, 81 ) 82 83 mintDenom := sdk.DefaultBondDenom 84 blocksPerYear := uint64(60 * 60 * 8766 / 5) 85 params := types.NewParams(mintDenom, inflationRateChange, inflationMax, inflationMin, goalBonded, blocksPerYear) 86 87 mintGenesis := types.NewGenesisState(types.InitialMinter(inflation), params) 88 89 bz, err := json.MarshalIndent(&mintGenesis, "", " ") 90 if err != nil { 91 panic(err) 92 } 93 fmt.Printf("Selected randomly generated minting parameters:\n%s\n", bz) 94 simState.GenState[types.ModuleName] = simState.Cdc.MustMarshalJSON(mintGenesis) 95 }