github.com/InjectiveLabs/sdk-go@v1.53.0/examples/chain/exchange/24_MsgUpdateSpotMarket/example.go (about) 1 package main 2 3 import ( 4 "context" 5 "encoding/json" 6 "fmt" 7 "os" 8 9 "cosmossdk.io/math" 10 exchangeclient "github.com/InjectiveLabs/sdk-go/client/exchange" 11 12 "github.com/InjectiveLabs/sdk-go/client" 13 14 "github.com/InjectiveLabs/sdk-go/client/common" 15 16 exchangetypes "github.com/InjectiveLabs/sdk-go/chain/exchange/types" 17 chainclient "github.com/InjectiveLabs/sdk-go/client/chain" 18 rpchttp "github.com/cometbft/cometbft/rpc/client/http" 19 ) 20 21 func main() { 22 network := common.LoadNetwork("testnet", "lb") 23 tmClient, err := rpchttp.New(network.TmEndpoint, "/websocket") 24 if err != nil { 25 panic(err) 26 } 27 28 senderAddress, cosmosKeyring, err := chainclient.InitCosmosKeyring( 29 os.Getenv("HOME")+"/.injectived", 30 "injectived", 31 "file", 32 "inj-user", 33 "12345678", 34 "5d386fbdbf11f1141010f81a46b40f94887367562bd33b452bbaa6ce1cd1381e", // keyring will be used if pk not provided 35 false, 36 ) 37 38 if err != nil { 39 panic(err) 40 } 41 42 clientCtx, err := chainclient.NewClientContext( 43 network.ChainId, 44 senderAddress.String(), 45 cosmosKeyring, 46 ) 47 48 if err != nil { 49 panic(err) 50 } 51 52 clientCtx = clientCtx.WithNodeURI(network.TmEndpoint).WithClient(tmClient) 53 54 chainClient, err := chainclient.NewChainClient( 55 clientCtx, 56 network, 57 common.OptionGasPrices(client.DefaultGasPriceWithDenom), 58 ) 59 if err != nil { 60 panic(err) 61 } 62 63 exchangeClient, err := exchangeclient.NewExchangeClient(network) 64 if err != nil { 65 panic(err) 66 } 67 68 ctx := context.Background() 69 marketsAssistant, err := chainclient.NewMarketsAssistantInitializedFromChain(ctx, exchangeClient) 70 if err != nil { 71 panic(err) 72 } 73 74 baseToken := marketsAssistant.AllTokens()["INJ"] 75 quoteToken := marketsAssistant.AllTokens()["USDC"] 76 minPriceTickSize := math.LegacyMustNewDecFromStr("0.01") 77 minQuantityTickSize := math.LegacyMustNewDecFromStr("0.01") 78 minNotional := math.LegacyMustNewDecFromStr("2") 79 80 chainMinPriceTickSize := minPriceTickSize.Mul(math.LegacyNewDecFromIntWithPrec(math.NewInt(1), int64(quoteToken.Decimals))) 81 chainMinPriceTickSize = chainMinPriceTickSize.Quo(math.LegacyNewDecFromIntWithPrec(math.NewInt(1), int64(baseToken.Decimals))) 82 83 chainMinQuantityTickSize := minQuantityTickSize.Mul(math.LegacyNewDecFromIntWithPrec(math.NewInt(1), int64(baseToken.Decimals))) 84 chainMinNotional := minNotional.Mul(math.LegacyNewDecFromIntWithPrec(math.NewInt(1), int64(quoteToken.Decimals))) 85 86 msg := &exchangetypes.MsgUpdateSpotMarket{ 87 Admin: senderAddress.String(), 88 MarketId: "0x215970bfdea5c94d8e964a759d3ce6eae1d113900129cc8428267db5ccdb3d1a", 89 NewTicker: "INJ/USDC 2", 90 NewMinPriceTickSize: chainMinPriceTickSize, 91 NewMinQuantityTickSize: chainMinQuantityTickSize, 92 NewMinNotional: chainMinNotional, 93 } 94 95 // AsyncBroadcastMsg, SyncBroadcastMsg, QueueBroadcastMsg 96 response, err := chainClient.AsyncBroadcastMsg(msg) 97 98 if err != nil { 99 panic(err) 100 } 101 102 str, _ := json.MarshalIndent(response, "", " ") 103 fmt.Print(string(str)) 104 }