github.com/InjectiveLabs/sdk-go@v1.53.0/examples/chain/bank/2_MsgMultiSend/example.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "os" 6 "time" 7 8 "cosmossdk.io/math" 9 10 "github.com/InjectiveLabs/sdk-go/client" 11 "github.com/InjectiveLabs/sdk-go/client/common" 12 13 chainclient "github.com/InjectiveLabs/sdk-go/client/chain" 14 rpchttp "github.com/cometbft/cometbft/rpc/client/http" 15 sdktypes "github.com/cosmos/cosmos-sdk/types" 16 banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" 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 // initialize grpc client 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 60 if err != nil { 61 panic(err) 62 } 63 64 // prepare tx msg 65 66 msg := &banktypes.MsgMultiSend{ 67 Inputs: []banktypes.Input{ 68 { 69 Address: senderAddress.String(), 70 Coins: []sdktypes.Coin{{ 71 Denom: "inj", Amount: math.NewInt(1000000000000000000)}, // 1 INJ 72 }, 73 }, 74 { 75 Address: senderAddress.String(), 76 Coins: []sdktypes.Coin{{ 77 Denom: "peggy0x87aB3B4C8661e07D6372361211B96ed4Dc36B1B5", Amount: math.NewInt(1000000)}, // 1 USDT 78 }, 79 }, 80 }, 81 Outputs: []banktypes.Output{ 82 { 83 Address: "inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r", 84 Coins: []sdktypes.Coin{{ 85 Denom: "inj", Amount: math.NewInt(1000000000000000000)}, // 1 INJ 86 }, 87 }, 88 { 89 Address: "inj1hkhdaj2a2clmq5jq6mspsggqs32vynpk228q3r", 90 Coins: []sdktypes.Coin{{ 91 Denom: "peggy0x87aB3B4C8661e07D6372361211B96ed4Dc36B1B5", Amount: math.NewInt(1000000)}, // 1 USDT 92 }, 93 }, 94 }, 95 } 96 97 // AsyncBroadcastMsg, SyncBroadcastMsg, QueueBroadcastMsg 98 err = chainClient.QueueBroadcastMsg(msg) 99 100 if err != nil { 101 fmt.Println(err) 102 } 103 104 time.Sleep(time.Second * 5) 105 106 gasFee, err := chainClient.GetGasFee() 107 108 if err != nil { 109 fmt.Println(err) 110 return 111 } 112 113 fmt.Println("gas fee:", gasFee, "INJ") 114 }