1.0.5 • Published 4 years ago

tron-protocol-ts v1.0.5

Weekly downloads
34
License
LGPL-3.0
Repository
github
Last release
4 years ago

Tron Protocol TypeScript

The typed binding for Tron Protocol, which is generated using protoc-gen-ts.

Usage

Transaction builder

You might need Base58Check encoder/decoder from bs58check and Any message from google-protobuf.

import base58check from 'bs58check';
import { TransferContract, Transaction } from 'tron-protocol-ts';
import { Any } from 'google-protobuf/google/protobuf/any_pb';

const to = 'TAEYS2U1AiDf7EEvRonmsxCTgPJMRjneJJ';
const from = 'TDAcZbH7V1vNyb26jaqMuhck4NP6VG87tE';
const amount = 1; // in SUN, 1 TRX = 1,000,000 SUN

const transferContract = new TransferContract();
transferContract.setToAddress(base58check.decode(to));
transferContract.setOwnerAddress(base58check.decode(from));
transferContract.setAmount(amount);

const param = new Any();
param.pack(transferContract.serializeBinary(), "protocol.TransferContract");

const contract = new Transaction.Contract();
contract.setType(Transaction.Contract.ContractType.TRANSFERCONTRACT);
contract.setParameter(param);

const rawData = new Transaction.raw();
rawData.addContract(contract);

const transaction = new Transaction();
transaction.setRawData(rawData);

Serialize

Given transaction, to get the transaction hex

const rawTransaction = Buffer
  .from(transaction.serializeBinary())
  .toString('hex');

Deserialize

Given rawTransaction in hex form, to get the Transaction

import { TransferContract, Transaction } from 'tron-protocol-ts';

Transaction.deserializeBinary(Buffer.from(rawTransaction, 'hex'));

If you need to read the contract inside

transaction.getRawData().getContractList().forEach((contract) => {
  switch (contract.getType()) {
    case Transaction.Contract.ContractType.TRANSFERCONTRACT:
      const param = TransferContract.deserializeBinary(contract.getParameter().getValue() as Uint8Array);
      const amount = param.getAmount();
      const toAddress = base58check.encode(param.getToAddress());
      const ownerAddress = base58check.encode(param.getOwnerAddress());

    // Handle other kinds of Transaction.Contract.ContractType if you need it
  }
});