README
@secux/app-trx
SecuX Hardware Wallet TRX API
Usage
import { SecuxTRX } from "@secux/app-trx";
First, create instance of ITransport
Examples
- 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);
*/
- 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);
- 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);
*/
- 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
- .addressConvert(publickey) ⇒
string
- .resolveAddress(response) ⇒
string
- .preparePublickey(path) ⇒
communicationData
- .resolvePublickey(response) ⇒
string
- .prepareXPublickey(path) ⇒
communicationData
- .resolveXPublickey(response, path) ⇒
- .prepareSign(path, content) ⇒
prepared
- .resolveSignature(response) ⇒
string
- .resolveTransaction(response, serialized) ⇒
string
- .prepareAddress ⇒
communicationData
SecuxTRX.prepareAddress ⇒ Prepare data for address generation.
Returns: communicationData
- data for sending to device
Param | Type | Description |
---|---|---|
path | string |
m/44'/195'/... |
string
SecuxTRX.addressConvert(publickey) ⇒ Convert secp256k1 publickey to TRX address.
Returns: string
- TRX address
Param | Type |
---|---|
publickey | string | Buffer |
string
SecuxTRX.resolveAddress(response) ⇒ Generate address from response data.
Returns: string
- TRX address
Param | Type | Description |
---|---|---|
response | communicationData |
data from device |
communicationData
SecuxTRX.preparePublickey(path) ⇒ Prepare data for secp256k1 publickey.
Returns: communicationData
- data for sending to device
Param | Type | Description |
---|---|---|
path | string |
m/44'/195'/... |
string
SecuxTRX.resolvePublickey(response) ⇒ Resolve secp256k1 publickey from response data.
Returns: string
- secp256k1 publickey
Param | Type | Description |
---|---|---|
response | communicationData |
data from device |
communicationData
SecuxTRX.prepareXPublickey(path) ⇒ 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'/... |
prepared
SecuxTRX.prepareSign(path, content) ⇒ Prepare data for signing.
Returns: prepared
- prepared object
Param | Type | Description |
---|---|---|
path | string |
m/44'/195'/... |
content | transferData | trc10_Data | trc20_Data |
transaction object |
string
SecuxTRX.resolveSignature(response) ⇒ Resolve signature from response data.
Returns: string
- signature (hex string)
Param | Type | Description |
---|---|---|
response | communicationData |
data from device |
string
SecuxTRX.resolveTransaction(response, serialized) ⇒ 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