github.com/InjectiveLabs/sdk-go@v1.53.0/examples/chain/exchange/23_MsgDecreasePositionMargin/example.go (about)

     1  package main
     2  
     3  import (
     4  	"encoding/json"
     5  	"fmt"
     6  	"os"
     7  
     8  	"cosmossdk.io/math"
     9  
    10  	"github.com/InjectiveLabs/sdk-go/client"
    11  
    12  	"github.com/InjectiveLabs/sdk-go/client/common"
    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  		"5d386fbdbf11f1141010f81a46b40f94887367562bd33b452bbaa6ce1cd1381e", // 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  
    46  	if err != nil {
    47  		panic(err)
    48  	}
    49  
    50  	clientCtx = clientCtx.WithNodeURI(network.TmEndpoint).WithClient(tmClient)
    51  
    52  	chainClient, err := chainclient.NewChainClient(
    53  		clientCtx,
    54  		network,
    55  		common.OptionGasPrices(client.DefaultGasPriceWithDenom),
    56  	)
    57  
    58  	if err != nil {
    59  		panic(err)
    60  	}
    61  
    62  	defaultSubaccountID := chainClient.DefaultSubaccount(senderAddress)
    63  
    64  	msg := &exchangetypes.MsgDecreasePositionMargin{
    65  		Sender:                  senderAddress.String(),
    66  		MarketId:                "0x17ef48032cb24375ba7c2e39f384e56433bcab20cbee9a7357e4cba2eb00abe6",
    67  		SourceSubaccountId:      defaultSubaccountID.String(),
    68  		DestinationSubaccountId: defaultSubaccountID.String(),
    69  		Amount:                  math.LegacyMustNewDecFromStr("100000000"), //100 USDT
    70  	}
    71  
    72  	// AsyncBroadcastMsg, SyncBroadcastMsg, QueueBroadcastMsg
    73  	response, err := chainClient.AsyncBroadcastMsg(msg)
    74  
    75  	if err != nil {
    76  		panic(err)
    77  	}
    78  
    79  	str, _ := json.MarshalIndent(response, "", " ")
    80  	fmt.Print(string(str))
    81  }