Transaction
Generating Signed Transaction
You can use Tronweb to complete the tasks of this section, for more details, please refer to:
Tronweb Github
Tronweb API 文档
Alternatively, you can use API Signature and Broadcast Flow to generate a signed transaction.
The above document shows the complete workflow of using APIs, Here is mainly Tronweb, using freezeBalance as an example.
Creating a Transaction
Create an unsigned transaction for staking balance.
Tronweb freezeBalance
Signing the Transaction
Sign the transaction with your private key.
Tronweb sign
Never use this in any web / user-facing applications, as it will expose your private key.
For security reasons, please use a local full node.
Broadcast the Transaction
Broadcast the signed transaction.
Tronweb Broadcast transaction
The broadcasting function in Tronweb is
sendrawtransaction
without a 'broadcast' keyword, refer to the source code for details.
Full Code Example
const CryptoUtils = require("@tronscan/client/src/utils/crypto");
const TransactionUtils = require("@tronscan/client/src/utils/transactionBuilder");
function transferContractTx() {
const privateKey = "b815adfd6ef133d5a878869cb3a2b31f32d4c1481132a71300c3e125be0ab1a1";
const token = "TRX";
const fromAddress = CryptoUtils.pkToAddress(privateKey);
const toAddress = "TQ6pM81JDC2GhrUoNYtZGvPc7SvyqcemEu";
const amount = 1;
let transaction = TransactionUtils.buildTransferTransaction(token, fromAddress, toAddress, amount);
let signedTransaction = CryptoUtils.signTransaction(privateKey, transaction);
}
Transaction Confirmation
The mechanism of TRON's block validation is that a block is validated after this block is produced and 19 different SRs produce subsequent blocks based on this block.
When a block is confirmed, transactions inside are all confirmed. TRON provides the /walletsolidty/ interface to make it easier for users to search for confirmed transactions; the following describes how to confirm different types of transactions.
Transaction Type | Method of transaction confirmation |
---|---|
transferContract and transferAssetContract | As long as the transaction can query the results via walletsolidity/gettransactioninfobyid or walletsolidity/gettransactionbyid. |
TriggerSmartContract | There are two ways to judge: 1. Find transactionInfo.receipt.result=success via the /walletsolidity/gettransactioninfobyid interface (It is not recommended to use transactionInfo.receipt.result to judge, because for the http interface, successful transactions do not return this field by default). 2. Via /walletsolidity/gettransactionbyid The interface found transaction.ret.contractRet =success |
InternalTransaction | Query by /walletsolidity/gettransactioninfobyid. Http interface: For successful transactions, the rejected field is not returned by default. For failed transactions, rejected=true. Grpc interface: For successful transactions, rejected=false (indicating that the current internalTransaction has not been discarded), For failed transactions, rejected=true. |
Multi-type transactions
There are many types of transactions in TRON network:
protobuf
TRONWEB.TRANSACTIONBUILDER
Please read these contents for more details.
Updated about 3 years ago