The TRON Developer Hub

Welcome to the TRON developer hub. You'll find comprehensive guides and documentation to help you start working with TRON as quickly as possible, as well as support if you get stuck. Let's jump right in!

Get Started    

Sending Transactions

Any operation contracting with the TRON network is a transaction. A transaction can be TRX transfer, freezing & unfreezing, Trigger Smart Contract, Etc.

Only resource consumption transactions are available to acquire on the chain.

The Routine for Sending

A normal routine for sending a transaction is:

Create -> Sign -> Broadcast -> (wait) -> Lookup and get receipt

Create a Transaction

Each non-inquiry function creates an unsigned transaction, for example:

public TransactionExtention transfer(String fromAddress, String toAddress, long amount) throws IllegalException {

        ByteString rawFrom = parseAddress(fromAddress);
        ByteString rawTo = parseAddress(toAddress);

        TransferContract req = TransferContract.newBuilder()
        TransactionExtention txnExt = blockingStub.createTransaction2(req);

        if(SUCCESS != txnExt.getResult().getCode()){
            throw new IllegalException(txnExt.getResult().getMessage().toStringUtf8());

        return txnExt;

Add Extra Parameters

core.TransactionBuilder allows you to add or modify parameters before signing, for example:

TransactionBuilder builder = new TransactionBuilder(transaction);
//call to get a new transaction;

Note that only smart contract transactions require a fee limit.


There are two ways to sign a transaction:

Sign with the binding private key

Every ApiWrapper instance is initiated with a private key(or a hexadecimal string of 64 characters in length). Simply sign a transaction like this:

Transction signedTransaction = wrapper.signTransaction(transaction);

Sign with a specific private key

Regardless of the binding private key, you can use any private key to sign the transaction, like below:

Transaction signedTransaction = wrapper.signTransaction(transaction, SECP256K1.KeyPair);

Refer to org.tron.trident.crypto.SECP256K1 for construct an SECP256K1.KeyPair.


Transaction hash may change due to any modification to the original transaction (except the signature).
Transaction hash is re-calculated inside the function of ApiWrapper.broadcastTransaction(Transaction txn) before transaction is broadcasted.


//return transaction hash if successfully broadcasted, otherwise the error code

Updated 3 months ago

Sending Transactions

Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.