Broadcast gRPC Method
Parameters
tx
object
REQUIRED
Loading...
raw_data
object
Loading...
ref_block_bytes
string
Loading...
ref_block_num
integer
Loading...
ref_block_hash
string
Loading...
expiration
integer
Loading...
auths
array
Loading...
data
string
Loading...
contract
array
Loading...
scripts
string
Loading...
timestamp
integer
Loading...
fee_limit
integer
Loading...
signature
array
Loading...
ret
array
Loading...
fee
integer
Loading...
ret
string
Loading...
contractRet
string
Loading...
assetIssueID
string
Loading...
withdraw_amount
integer
Loading...
unfreeze_amount
integer
Loading...
exchangeReceivedAmount
integer
Loading...
exchangeInjectAnotherAmount
integer
Loading...
exchangeWithdrawAnotherAmount
integer
Loading...
exchange_id
integer
Loading...
shieldedTransactionFee
integer
Loading...
orderId
string
Loading...
orderDetails
array
Loading...
makerOrderId
string
Loading...
takerOrderId
string
Loading...
fillSellQuantity
integer
Loading...
fillBuyQuantity
integer
Loading...
withdraw_expire_amount
integer
Loading...
cancelUnfreezeV2Amount
object
Loading...
Returns
result
boolean
Loading...
code
string
Loading...
SUCCESS
integer
Loading...
SIGERROR
integer
Loading...
CONTRACT_VALIDATE_ERROR
integer
Loading...
CONTRACT_EXE_ERROR
integer
Loading...
BANDWITH_ERROR
integer
Loading...
DUP_TRANSACTION_ERROR
integer
Loading...
TAPOS_ERROR
integer
Loading...
TOO_BIG_TRANSACTION_ERROR
integer
Loading...
TRANSACTION_EXPIRATION_ERROR
integer
Loading...
SERVER_BUSY
integer
Loading...
NO_CONNECTION
integer
Loading...
NOT_ENOUGH_EFFECTIVE_CONNECTION
integer
Loading...
BLOCK_UNSOLIDIFIED
integer
Loading...
OTHER_ERROR
integer
Loading...
message
string
Loading...
Request
1package main23import (4"context"5"crypto/sha256"6"crypto/tls"7"encoding/hex"8"fmt"9"encoding/json"10"github.com/fbsobreira/gotron-sdk/pkg/client"11"github.com/btcsuite/btcd/btcec/v2"12"github.com/ethereum/go-ethereum/crypto"13"google.golang.org/grpc"14"google.golang.org/grpc/credentials"15"google.golang.org/protobuf/proto"16)1718// Quicknode endpoints consist of two crucial components: the endpoint name and the corresponding token19// For eg: QN Endpoint: https://docs-demo.tron-mainnet.quiknode.pro/abcde12345678920// endpoint will be: docs-demo.tron-mainnet.quiknode.pro:50051 {50051 is the port number for Tron gRPC}21// token will be : abcde1234567892223var token = "YOUR_TOKEN"24var endpoint = "YOUR_ENDPOINT:50051"2526type auth struct {27token string28}2930func (a *auth) GetRequestMetadata(ctx context.Context, uri ...string) (map[string]string, error) {31return map[string]string{32"x-token": a.token,33}, nil34}3536func (a *auth) RequireTransportSecurity() bool {37return false38}3940func main() {4142opts := []grpc.DialOption{43grpc.WithTransportCredentials(credentials.NewTLS(&tls.Config{})),44grpc.WithPerRPCCredentials(&auth{token}),45}46conn := client.NewGrpcClient(endpoint)47if err := conn.Start(opts...); err != nil {48panic(err)49}50defer conn.Conn.Close()5152fromAddress := "YOUR_ADDRESS"53toAddress := "RECIPIENT_ADDRESS"54amount := int64(1000000)55privateKeyHex := "YOUR_PRIVATE_KEY"5657tx, err := conn.Transfer(58fromAddress,59toAddress,60amount,61)62if err != nil {63fmt.Printf("Error creating transfer transaction: %v\n", err)64return65}6667fmt.Println("Transfer Transaction Created:")68jsonData, err := json.MarshalIndent(tx, "", " ")69if err != nil {70fmt.Printf("Error marshaling to JSON: %v\n", err)71return72}73fmt.Println(string(jsonData))7475// Sign the transaction76privateKeyBytes, err := hex.DecodeString(privateKeyHex)77if err != nil {78fmt.Printf("Error decoding private key: %v\n", err)79return80}8182// Get the raw data from the transaction and hash it83rawData, err := proto.Marshal(tx.Transaction.GetRawData())84if err != nil {85fmt.Printf("Error marshaling raw data: %v\n", err)86return87}8889// Create SHA256 hash of the raw data90h256h := sha256.New()91h256h.Write(rawData)92hash := h256h.Sum(nil)9394// Sign the hash with the private key95sk, _ := btcec.PrivKeyFromBytes(privateKeyBytes)96signature, err := crypto.Sign(hash, sk.ToECDSA())97if err != nil {98fmt.Printf("Error signing transaction: %v\n", err)99return100}101102// Add the signature to the transaction103tx.Transaction.Signature = append(tx.Transaction.Signature, signature)104105// Broadcast the signed transaction106result, err := conn.Broadcast(tx.Transaction)107if err != nil {108fmt.Printf("Error broadcasting transaction: %v\n", err)109return110}111112// Print the broadcast result113fmt.Println("Broadcast Result:")114resultJSON, err := json.MarshalIndent(result, "", " ")115if err != nil {116fmt.Printf("Error marshaling result to JSON: %v\n", err)117return118}119fmt.Println(string(resultJSON))120}
1package main23import (4"context"5"crypto/sha256"6"crypto/tls"7"encoding/hex"8"fmt"9"encoding/json"10"github.com/fbsobreira/gotron-sdk/pkg/client"11"github.com/btcsuite/btcd/btcec/v2"12"github.com/ethereum/go-ethereum/crypto"13"google.golang.org/grpc"14"google.golang.org/grpc/credentials"15"google.golang.org/protobuf/proto"16)1718// Quicknode endpoints consist of two crucial components: the endpoint name and the corresponding token19// For eg: QN Endpoint: https://docs-demo.tron-mainnet.quiknode.pro/abcde12345678920// endpoint will be: docs-demo.tron-mainnet.quiknode.pro:50051 {50051 is the port number for Tron gRPC}21// token will be : abcde1234567892223var token = "YOUR_TOKEN"24var endpoint = "YOUR_ENDPOINT:50051"2526type auth struct {27token string28}2930func (a *auth) GetRequestMetadata(ctx context.Context, uri ...string) (map[string]string, error) {31return map[string]string{32"x-token": a.token,33}, nil34}3536func (a *auth) RequireTransportSecurity() bool {37return false38}3940func main() {4142opts := []grpc.DialOption{43grpc.WithTransportCredentials(credentials.NewTLS(&tls.Config{})),44grpc.WithPerRPCCredentials(&auth{token}),45}46conn := client.NewGrpcClient(endpoint)47if err := conn.Start(opts...); err != nil {48panic(err)49}50defer conn.Conn.Close()5152fromAddress := "YOUR_ADDRESS"53toAddress := "RECIPIENT_ADDRESS"54amount := int64(1000000)55privateKeyHex := "YOUR_PRIVATE_KEY"5657tx, err := conn.Transfer(58fromAddress,59toAddress,60amount,61)62if err != nil {63fmt.Printf("Error creating transfer transaction: %v\n", err)64return65}6667fmt.Println("Transfer Transaction Created:")68jsonData, err := json.MarshalIndent(tx, "", " ")69if err != nil {70fmt.Printf("Error marshaling to JSON: %v\n", err)71return72}73fmt.Println(string(jsonData))7475// Sign the transaction76privateKeyBytes, err := hex.DecodeString(privateKeyHex)77if err != nil {78fmt.Printf("Error decoding private key: %v\n", err)79return80}8182// Get the raw data from the transaction and hash it83rawData, err := proto.Marshal(tx.Transaction.GetRawData())84if err != nil {85fmt.Printf("Error marshaling raw data: %v\n", err)86return87}8889// Create SHA256 hash of the raw data90h256h := sha256.New()91h256h.Write(rawData)92hash := h256h.Sum(nil)9394// Sign the hash with the private key95sk, _ := btcec.PrivKeyFromBytes(privateKeyBytes)96signature, err := crypto.Sign(hash, sk.ToECDSA())97if err != nil {98fmt.Printf("Error signing transaction: %v\n", err)99return100}101102// Add the signature to the transaction103tx.Transaction.Signature = append(tx.Transaction.Signature, signature)104105// Broadcast the signed transaction106result, err := conn.Broadcast(tx.Transaction)107if err != nil {108fmt.Printf("Error broadcasting transaction: %v\n", err)109return110}111112// Print the broadcast result113fmt.Println("Broadcast Result:")114resultJSON, err := json.MarshalIndent(result, "", " ")115if err != nil {116fmt.Printf("Error marshaling result to JSON: %v\n", err)117return118}119fmt.Println(string(resultJSON))120}
Don't have an account yet?
Create your Quicknode endpoint in seconds and start building
Get started for free