package simulation // import ( // "fmt" // "time" // "github.com/cosmos/cosmos-sdk/codec" // sdk "github.com/cosmos/cosmos-sdk/types" // "github.com/cosmos/cosmos-sdk/types/module" // "github.com/cosmos/cosmos-sdk/x/simulation" // "github.com/0glabs/0g-chain/x/pricefeed/types" // pricefeed "github.com/0glabs/0g-chain/x/pricefeed/types" // ) // var ( // // BaseAssets is a list of collateral asset denoms // BaseAssets = [3]string{"bnb", "xrp", "btc"} // QuoteAsset = "usd" // ) // // RandomizedGenState generates a random GenesisState for pricefeed // func RandomizedGenState(simState *module.SimulationState) { // pricefeedGenesis := loadPricefeedGenState(simState) // fmt.Printf("Selected randomly generated %s parameters:\n%s\n", types.ModuleName, codec.MustMarshalJSONIndent(simState.Cdc, pricefeedGenesis)) // simState.GenState[types.ModuleName] = simState.Cdc.MustMarshalJSON(pricefeedGenesis) // } // // loadPricefeedGenState loads a valid pricefeed gen state // func loadPricefeedGenState(simState *module.SimulationState) pricefeed.GenesisState { // var markets []pricefeed.Market // var postedPrices []pricefeed.PostedPrice // for _, denom := range BaseAssets { // // Select an account to be the oracle // oracle, _ := simulation.RandomAcc(simState.Rand, simState.Accounts) // marketID := fmt.Sprintf("%s:%s", denom, QuoteAsset) // // Construct market for asset // market := pricefeed.Market{ // MarketID: marketID, // BaseAsset: denom, // QuoteAsset: QuoteAsset, // Oracles: []sdk.AccAddress{oracle.Address}, // Active: true, // } // // Construct posted price for asset // postedPrice := pricefeed.PostedPrice{ // MarketID: market.MarketId, // OracleAddress: oracle.Address, // Price: getInitialPrice(marketID), // Expiry: simState.GenTimestamp.Add(time.Hour * 24), // } // markets = append(markets, market) // postedPrices = append(postedPrices, postedPrice) // } // params := pricefeed.NewParams(markets) // return pricefeed.NewGenesisState(params, postedPrices) // } // // getInitialPrice gets the starting price for each of the base assets // func getInitialPrice(marketID string) (price sdk.Dec) { // switch marketID { // case "btc:usd": // return sdk.MustNewDecFromStr("7000") // case "bnb:usd": // return sdk.MustNewDecFromStr("14") // case "xrp:usd": // return sdk.MustNewDecFromStr("0.2") // default: // return sdk.MustNewDecFromStr("20") // Catch future additional assets // } // }