github.com/Finschia/finschia-sdk@v0.48.1/x/authz/simulation/genesis.go (about) 1 package simulation 2 3 import ( 4 "math/rand" 5 6 codectypes "github.com/Finschia/finschia-sdk/codec/types" 7 sdk "github.com/Finschia/finschia-sdk/types" 8 "github.com/Finschia/finschia-sdk/types/module" 9 simtypes "github.com/Finschia/finschia-sdk/types/simulation" 10 "github.com/Finschia/finschia-sdk/x/authz" 11 banktypes "github.com/Finschia/finschia-sdk/x/bank/types" 12 govtypes "github.com/Finschia/finschia-sdk/x/gov/types" 13 ) 14 15 // genGrant returns a slice of authorization grants. 16 func genGrant(r *rand.Rand, accounts []simtypes.Account) []authz.GrantAuthorization { 17 authorizations := make([]authz.GrantAuthorization, len(accounts)-1) 18 for i := 0; i < len(accounts)-1; i++ { 19 granter := accounts[i] 20 grantee := accounts[i+1] 21 authorizations[i] = authz.GrantAuthorization{ 22 Granter: granter.Address.String(), 23 Grantee: grantee.Address.String(), 24 Authorization: generateRandomGrant(r), 25 } 26 } 27 28 return authorizations 29 } 30 31 func generateRandomGrant(r *rand.Rand) *codectypes.Any { 32 authorizations := make([]*codectypes.Any, 2) 33 authorizations[0] = newAnyAuthorization(banktypes.NewSendAuthorization(sdk.NewCoins(sdk.NewCoin("stake", sdk.NewInt(1000))))) 34 authorizations[1] = newAnyAuthorization(authz.NewGenericAuthorization(sdk.MsgTypeURL(&govtypes.MsgSubmitProposal{}))) 35 36 return authorizations[r.Intn(len(authorizations))] 37 } 38 39 func newAnyAuthorization(a authz.Authorization) *codectypes.Any { 40 any, err := codectypes.NewAnyWithValue(a) 41 if err != nil { 42 panic(err) 43 } 44 45 return any 46 } 47 48 // RandomizedGenState generates a random GenesisState for authz. 49 func RandomizedGenState(simState *module.SimulationState) { 50 var grants []authz.GrantAuthorization 51 simState.AppParams.GetOrGenerate( 52 simState.Cdc, "authz", &grants, simState.Rand, 53 func(r *rand.Rand) { grants = genGrant(r, simState.Accounts) }, 54 ) 55 56 authzGrantsGenesis := authz.NewGenesisState(grants) 57 58 simState.GenState[authz.ModuleName] = simState.Cdc.MustMarshalJSON(authzGrantsGenesis) 59 }