github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/x/gov/simulation/params.go (about) 1 package simulation 2 3 // DONTCOVER 4 5 import ( 6 "encoding/json" 7 "fmt" 8 "math/rand" 9 10 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 11 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/gov/types" 12 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/simulation" 13 ) 14 15 const ( 16 keyVotingParams = "votingparams" 17 keyDepositParams = "depositparams" 18 keyTallyParams = "tallyparams" 19 subkeyQuorum = "quorum" 20 subkeyThreshold = "threshold" 21 subkeyVeto = "veto" 22 ) 23 24 // ParamChanges defines the parameters that can be modified by param change proposals 25 // on the simulation 26 func ParamChanges(r *rand.Rand) []simulation.ParamChange { 27 return []simulation.ParamChange{ 28 simulation.NewSimParamChange(types.ModuleName, keyVotingParams, 29 func(r *rand.Rand) string { 30 return fmt.Sprintf(`{"voting_period": "%d"}`, GenVotingParamsVotingPeriod(r)) 31 }, 32 ), 33 simulation.NewSimParamChange(types.ModuleName, keyDepositParams, 34 func(r *rand.Rand) string { 35 return fmt.Sprintf(`{"max_deposit_period": "%d"}`, GenDepositParamsDepositPeriod(r)) 36 }, 37 ), 38 simulation.NewSimParamChange(types.ModuleName, keyTallyParams, 39 func(r *rand.Rand) string { 40 changes := []struct { 41 key string 42 value sdk.Dec 43 }{ 44 {subkeyQuorum, GenTallyParamsQuorum(r)}, 45 {subkeyThreshold, GenTallyParamsThreshold(r)}, 46 {subkeyVeto, GenTallyParamsVeto(r)}, 47 } 48 49 pc := make(map[string]string) 50 numChanges := simulation.RandIntBetween(r, 1, len(changes)) 51 for i := 0; i < numChanges; i++ { 52 c := changes[r.Intn(len(changes))] 53 54 _, ok := pc[c.key] 55 for ok { 56 c := changes[r.Intn(len(changes))] 57 _, ok = pc[c.key] 58 } 59 60 pc[c.key] = c.value.String() 61 } 62 63 bz, _ := json.Marshal(pc) 64 return string(bz) 65 }, 66 ), 67 } 68 }