Skip to main content

Broadcast gRPC Method

Loading...

Updated on
May 13, 2025

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
1
package main
2
3
import (
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
)
17
18
// Quicknode endpoints consist of two crucial components: the endpoint name and the corresponding token
19
// For eg: QN Endpoint: https://docs-demo.tron-mainnet.quiknode.pro/abcde123456789
20
// endpoint will be: docs-demo.tron-mainnet.quiknode.pro:50051 {50051 is the port number for Tron gRPC}
21
// token will be : abcde123456789
22
23
var token = "YOUR_TOKEN"
24
var endpoint = "YOUR_ENDPOINT:50051"
25
26
type auth struct {
27
token string
28
}
29
30
func (a *auth) GetRequestMetadata(ctx context.Context, uri ...string) (map[string]string, error) {
31
return map[string]string{
32
"x-token": a.token,
33
}, nil
34
}
35
36
func (a *auth) RequireTransportSecurity() bool {
37
return false
38
}
39
40
func main() {
41
42
opts := []grpc.DialOption{
43
grpc.WithTransportCredentials(credentials.NewTLS(&tls.Config{})),
44
grpc.WithPerRPCCredentials(&auth{token}),
45
}
46
conn := client.NewGrpcClient(endpoint)
47
if err := conn.Start(opts...); err != nil {
48
panic(err)
49
}
50
defer conn.Conn.Close()
51
52
fromAddress := "YOUR_ADDRESS"
53
toAddress := "RECIPIENT_ADDRESS"
54
amount := int64(1000000)
55
privateKeyHex := "YOUR_PRIVATE_KEY"
56
57
tx, err := conn.Transfer(
58
fromAddress,
59
toAddress,
60
amount,
61
)
62
if err != nil {
63
fmt.Printf("Error creating transfer transaction: %v\n", err)
64
return
65
}
66
67
fmt.Println("Transfer Transaction Created:")
68
jsonData, err := json.MarshalIndent(tx, "", " ")
69
if err != nil {
70
fmt.Printf("Error marshaling to JSON: %v\n", err)
71
return
72
}
73
fmt.Println(string(jsonData))
74
75
// Sign the transaction
76
privateKeyBytes, err := hex.DecodeString(privateKeyHex)
77
if err != nil {
78
fmt.Printf("Error decoding private key: %v\n", err)
79
return
80
}
81
82
// Get the raw data from the transaction and hash it
83
rawData, err := proto.Marshal(tx.Transaction.GetRawData())
84
if err != nil {
85
fmt.Printf("Error marshaling raw data: %v\n", err)
86
return
87
}
88
89
// Create SHA256 hash of the raw data
90
h256h := sha256.New()
91
h256h.Write(rawData)
92
hash := h256h.Sum(nil)
93
94
// Sign the hash with the private key
95
sk, _ := btcec.PrivKeyFromBytes(privateKeyBytes)
96
signature, err := crypto.Sign(hash, sk.ToECDSA())
97
if err != nil {
98
fmt.Printf("Error signing transaction: %v\n", err)
99
return
100
}
101
102
// Add the signature to the transaction
103
tx.Transaction.Signature = append(tx.Transaction.Signature, signature)
104
105
// Broadcast the signed transaction
106
result, err := conn.Broadcast(tx.Transaction)
107
if err != nil {
108
fmt.Printf("Error broadcasting transaction: %v\n", err)
109
return
110
}
111
112
// Print the broadcast result
113
fmt.Println("Broadcast Result:")
114
resultJSON, err := json.MarshalIndent(result, "", " ")
115
if err != nil {
116
fmt.Printf("Error marshaling result to JSON: %v\n", err)
117
return
118
}
119
fmt.Println(string(resultJSON))
120
}
Don't have an account yet?
Create your Quicknode endpoint in seconds and start building
Get started for free