github.com/InjectiveLabs/sdk-go@v1.53.0/examples/chain/13_BroadcastMsgWithoutSimulation/example.go (about) 1 package main 2 3 import ( 4 "context" 5 "fmt" 6 "os" 7 8 "github.com/InjectiveLabs/sdk-go/client" 9 "github.com/InjectiveLabs/sdk-go/client/common" 10 exchangeclient "github.com/InjectiveLabs/sdk-go/client/exchange" 11 "github.com/google/uuid" 12 "github.com/shopspring/decimal" 13 14 exchangetypes "github.com/InjectiveLabs/sdk-go/chain/exchange/types" 15 chainclient "github.com/InjectiveLabs/sdk-go/client/chain" 16 rpchttp "github.com/cometbft/cometbft/rpc/client/http" 17 ) 18 19 func main() { 20 network := common.LoadNetwork("testnet", "lb") 21 tmClient, err := rpchttp.New(network.TmEndpoint, "/websocket") 22 if err != nil { 23 panic(err) 24 } 25 26 senderAddress, cosmosKeyring, err := chainclient.InitCosmosKeyring( 27 os.Getenv("HOME")+"/.injectived", 28 "injectived", 29 "file", 30 "inj-user", 31 "12345678", 32 "f9db9bf330e23cb7839039e944adef6e9df447b90b503d5b4464c90bea9022f3", // keyring will be used if pk not provided 33 false, 34 ) 35 36 if err != nil { 37 panic(err) 38 } 39 40 clientCtx, err := chainclient.NewClientContext( 41 network.ChainId, 42 senderAddress.String(), 43 cosmosKeyring, 44 ) 45 if err != nil { 46 fmt.Println(err) 47 return 48 } 49 clientCtx = clientCtx.WithNodeURI(network.TmEndpoint).WithClient(tmClient).WithSimulation(false) 50 51 exchangeClient, err := exchangeclient.NewExchangeClient(network) 52 if err != nil { 53 panic(err) 54 } 55 56 ctx := context.Background() 57 marketsAssistant, err := chainclient.NewMarketsAssistantInitializedFromChain(ctx, exchangeClient) 58 if err != nil { 59 panic(err) 60 } 61 62 txFactory := chainclient.NewTxFactory(clientCtx) 63 txFactory = txFactory.WithGasPrices(client.DefaultGasPriceWithDenom) 64 txFactory = txFactory.WithGas(uint64(txFactory.GasAdjustment() * 140000)) 65 66 clientInstance, err := chainclient.NewChainClient( 67 clientCtx, 68 network, 69 common.OptionTxFactory(&txFactory), 70 ) 71 72 if err != nil { 73 panic(err) 74 } 75 76 defaultSubaccountID := clientInstance.DefaultSubaccount(senderAddress) 77 78 marketId := "0x0611780ba69656949525013d947713300f56c37b6175e02f26bffa495c3208fe" 79 80 amount := decimal.NewFromFloat(1) 81 price := decimal.NewFromFloat(4.55) 82 83 order := clientInstance.CreateSpotOrder( 84 defaultSubaccountID, 85 &chainclient.SpotOrderData{ 86 OrderType: exchangetypes.OrderType_BUY, //BUY SELL BUY_PO SELL_PO 87 Quantity: amount, 88 Price: price, 89 FeeRecipient: senderAddress.String(), 90 MarketId: marketId, 91 Cid: uuid.NewString(), 92 }, 93 marketsAssistant, 94 ) 95 96 msg := new(exchangetypes.MsgCreateSpotLimitOrder) 97 msg.Sender = senderAddress.String() 98 msg.Order = exchangetypes.SpotOrder(*order) 99 100 result, err := clientInstance.SyncBroadcastMsg(msg) 101 102 if err != nil { 103 panic(err) 104 } 105 106 fmt.Printf("Broadcast result: %s\n", result) 107 108 }