Sign Tron transactions
Signing a Tron transaction is identical to how we sign an Ethereum or Solana transaction with the exception that we need to pass in the Tron specific RPC URL, chain ID, and method.
In the example we are going to update:
chainID
totron:nile
rpcUrl
togrpc.nile.trongrid.io:50051?api_key=<API_KEY>
method
totron_sendTransaction
params
to a base64 encoded serialized Tron transaction
Here is a short snippet of how to get the params
using tronweb
, for a complete example checkout this example repo:
const tnw = require('tronweb');
const tronWeb = new tnw.TronWeb({
fullHost: 'https://nile.trongrid.io',
headers: { 'TRON-PRO-API-KEY': 'API_KEY' },
});
const fromTronHexAddress = tronWeb.address.toHex(tronAddress);
const toHexAddress = '418840E6C55B9ADA326D211D818C34A994AECED808';
const transactionBuidlerParsa = new tnw.TransactionBuilder(tronWeb);
const transaction = await transactionBuidlerParsa.sendTrx(
toHexAddress,
1,
fromTronHexAddress,
);
// // Serialize the transaction
const txPb = tronWeb.utils.transaction.txJsonToPb(transaction)
const rawData = txPb.getRawData().serializeBinary();
// // Base64 encode the serialized transaction
const base64Transaction = Buffer.from(rawData).toString('base64');
// Sign the transaction
const signResponse = await axios.post(
`${PORTAL_MPC_CLIENT_URL}/v1/sign`,
{
share: shares.SECP256K1.share,
method: 'tron_sendTransaction',
rpcUrl,
params: base64Transaction,
chainId: 'tron:nile',
},
{
headers: { Authorization: `Bearer ${clientApiKey}` },
},
);
Below is an example curl command for signing a Tron message:
curl -X POST 'https://mpc-client.portalhq.io/v1/sign' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <clientApiKey>' \
-d '{
"share": $share,
"method": "tron_sendTransaction",
"params": $base64EncodedTransaction,
"rpcUrl": "grpc.nile.trongrid.io:50051?api_key=<API_KEY>",
"chainId": "tron:nile"
}'
Supported Methods and ChainIds
Methods:
tron_sendTransaction
ChainIds:
tron:mainnet
tron:nile
tron:shasta
Last updated
Was this helpful?