@secux/app-trx

SecuX Hardware Wallet TRX API

Usage no npm install needed!

<script type="module">
  import secuxAppTrx from 'https://cdn.skypack.dev/@secux/app-trx';
</script>

README

lerna view on npm npm module downloads

@secux/app-trx

SecuX Hardware Wallet TRX API

Usage

import { SecuxTRX } from "@secux/app-trx";

First, create instance of ITransport


Examples

  1. Get address of bip44 path
const path = "m/44'/195'/0'/0/0";
const address = await device.getAddress(path);

/*

// transfer data to hardware wallet by custom transport layer.
const data = SecuxTRX.prepareAddress(path);
const response = await device.Exchange(data);
const address =  SecuxTRX.resolveAddress(response);

*/
  1. Sign transaction (TransferContract)
const TronWeb = require("tronweb");

// fetch block data
const tronWeb = new TronWeb({ fullHost: 'https://api.trongrid.io' });
const block = await tronWeb.trx.getConfirmedCurrentBlock();

const content = {
    to: "TJKiYicrKqB7PR2wywfWKkNMppNRqd6tXt",
    amount: 1e5,
    blockID: block.blockID,
    blockNumber: block.block_header.raw_data.number,
    timestamp: block.block_header.raw_data.timestamp
};

// sign
const { raw_tx, signature } = await device.sign("m/44'/195'/0'/0/0", content);

/*

// transfer data to hardware wallet by custom transport layer.
const { commandData, rawTx } = SecuxTRX.prepareSign("m/44'/195'/0'/0/0", content);
const response = await device.Exchange(commandData);
const raw_tx = SecuxTRX.resolveTransaction(response, rawTx);

*/

// broadcast
const response = await tronWeb.trx.sendHexTransaction(raw_tx);
  1. Sign TRC10 transaction (TransferAssetContract)
const content = {
    to: "TJKiYicrKqB7PR2wywfWKkNMppNRqd6tXt",
    token: 1002000,
    amount: 1e5,
    blockID: block.blockID,
    blockNumber: block.block_header.raw_data.number,
    timestamp: block.block_header.raw_data.timestamp
};

const { raw_tx, signature } = await device.sign("m/44'/195'/0'/0/0", content);

/*

// transfer data to hardware wallet by custom transport layer.
const { commandData, rawTx } = SecuxTRX.prepareSign("m/44'/195'/0'/0/0", content);
const response = await device.Exchange(commandData);
const raw_tx = SecuxTRX.resolveTransaction(response, rawTx);

*/
  1. Sign TRC20 transaction (TriggerSmartContract)
    • [tokenId]: the TRC10 asset ID that transfered to the contract while calling the contract.
    • [tokenValue]: the amount of TRC10 asset that transfered to the contract while calling the contract.
    • [callValue]: the amount of TRX that transfered to the contract while calling the contract, the unit is sun.
const content = {
    contract: "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
    // data field can use abi encoded string optionally
    data: [
        { type: "address", value: "TJKiYicrKqB7PR2wywfWKkNMppNRqd6tXt" },
        { type: "uint256", value: 1e5 }
    ],
    blockID: block.blockID,
    blockNumber: block.block_header.raw_data.number,
    timestamp: block.block_header.raw_data.timestamp
};

const { raw_tx, signature } = await device.sign("m/44'/195'/0'/0/0", content);

/*

// transfer data to hardware wallet by custom transport layer.
const { commandData, rawTx } = SecuxTRX.prepareSign("m/44'/195'/0'/0/0", content);
const response = await device.Exchange(commandData);
const raw_tx = SecuxTRX.resolveTransaction(response, rawTx);

*/

API Reference

TRX package for SecuX device

Kind: global class


SecuxTRX.prepareAddress ⇒ communicationData

Prepare data for address generation.

Returns: communicationData - data for sending to device

Param Type Description
path string m/44'/195'/...

SecuxTRX.addressConvert(publickey) ⇒ string

Convert secp256k1 publickey to TRX address.

Returns: string - TRX address

Param Type
publickey string | Buffer

SecuxTRX.resolveAddress(response) ⇒ string

Generate address from response data.

Returns: string - TRX address

Param Type Description
response communicationData data from device

SecuxTRX.preparePublickey(path) ⇒ communicationData

Prepare data for secp256k1 publickey.

Returns: communicationData - data for sending to device

Param Type Description
path string m/44'/195'/...

SecuxTRX.resolvePublickey(response) ⇒ string

Resolve secp256k1 publickey from response data.

Returns: string - secp256k1 publickey

Param Type Description
response communicationData data from device

SecuxTRX.prepareXPublickey(path) ⇒ communicationData

Prepare data for xpub.

Returns: communicationData - data for sending to device

Param Type Description
path string m/44'/195'/...

SecuxTRX.resolveXPublickey(response, path) ⇒

Resolve xpub from response data.

Returns: xpub

Param Type Description
response communicationData data from device
path string m/44'/195'/...

SecuxTRX.prepareSign(path, content) ⇒ prepared

Prepare data for signing.

Returns: prepared - prepared object

Param Type Description
path string m/44'/195'/...
content transferData | trc10_Data | trc20_Data transaction object

SecuxTRX.resolveSignature(response) ⇒ string

Resolve signature from response data.

Returns: string - signature (hex string)

Param Type Description
response communicationData data from device

SecuxTRX.resolveTransaction(response, serialized) ⇒ string

Resolve transaction for broadcasting.

Returns: string - signed raw transaction

Param Type Description
response communicationData data from device
serialized communicationData raw transaction


transferData

Properties

Name Type Description
from string sending address
to string receiving address
amount number transfer amount
blockID string
blockNumber number
[feeLimit] number
[timestamp] number
[expiration] number

trc10_Data

Properties

Name Type Description
from string sending address
to string receiving address
token string | number token id number
amount number transfer amount
blockID string
blockNumber number
[feeLimit] number
[timestamp] number
[expiration] number

trc20_Data

Properties

Name Type Description
from string sending address
to string receiving address
amount number | string transfer amount
contract string contract address
[data] string abi encoded string
blockID string
blockNumber number
[callValue] number amount of TRX to send to the contract when triggers.
[tokenId] number id of TRC-10 token to be sent to the contract.
[tokenValue] number amount of TRC-10 token to send to the contract when triggers.
[feeLimit] number
[timestamp] number
[expiration] number

prepared

Properties

Name Type Description
commandData communicationData data for sending to device
rawTx communicationData unsigned raw transaction


© 2018-21 SecuX Technology Inc.

authors:
andersonwu@secuxtech.com