@faast/tron-payments
Version:
Library to assist in processing tron payments, such as deriving addresses and sweeping funds
112 lines (81 loc) • 3.33 kB
Markdown
# tron-payments
Library to assist in payment processing on tron. It first allows for generation
of address according to the [BIP44 standard](https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki).
[Bitcore](https://bitcore.io/) is used for deterministic public and private keys.
Please see the BIP32 standard for more information ([BIP32](https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki)).
Some work is inspired off of the prior work done by [tron-bip44](https://github.com/trapp/tron-bip44)
Coming soon: tools to sign transactions passed down from the server connected to web3.
## Getting Started
```bash
npm install --save go-faast/tron-payments
```
Create a new wallet (DON'T DO THIS ON PRODUCTION):
```js
let { HdTronPayments } = require('@faast/tron-payments')
let keys = HdTronPayments.generateNewKeys()
console.log(keys.xpub)
console.log(keys.xprv)
```
Generate an tron deposit address from a public seed (xpub).
This is useful if you are a hot wallet and don't store the private key. You will need
to keep track of which path node you are on (increasing INT):
```js
let tronPayments = new HdTronPayments({ hdKey: keys.xprv }) // xpub or xprv can be used
// for path m/44'/195'/0'/0/1234
let { address: depositAddress } = tronPayments.getPayport(1234)
let privateKey = tronPayments.getPrivateKey(1234) // will throw Error if xpub was provided as hdKey
```
or, if you'd rather not us bip44 and have existing private keys or addresses:
```js
let { KeyPairTronPayments } = require('@faast/tron-payments')
let tronPayments = new KeyPairTronPayments({ keyPairs: [privateKey0, address1, privateKey2] })
let { address: depositAddress } = tronPayments.getPayport(1234) // address for privateKey2
await tronpayments.getPrivateKey(1234) // will throw error because keyPair[1] is not a private key
```
Validate an address:
```js
if (tronPayments.isValidAddress(depositAddress)) {
// do something
}
```
Get the public key from a private key:
```js
let address = tronPayments.privateKeyToAddress(privateKey) // for path m/44'/195'/0/1234
if(address === depositAddress){
console.log('this library works')
} else {
console.log('better not use this library')
}
```
Get the derived xpub key from a root xprv:
```js
let { xprvToXpub } = require('@faast/tron-payments')
let xpub = xprvToXpub(xprv) // derives path m/44'/195'/0'
```
Get the balance of an address:
```js
let { confirmedBalance, unconfirmedBalance } = await tronPayments.getBalance(1234)
```
Generate a sweep transaction for an address, then broadcast it:
```js
let unsignedTx = await tronPayments.createSweepTransaction(1234, to)
let signedTx = await tronPayments.signTransaction(unsignedTx)
let { id: txHash } = await tronPayments.broadcastTransaction(signedtx)
```
Generate a simple send transaction
```js
let unsignedTx = await tronPayments.createTransaction(1234, to, '1.234')
// You still need to sign and broadcast the transaction
```
Get a transaction and check if it is confirmed:
```js
let txInfo = await tronPayments.getTransactionInfo(txHash)
if (txInfo.isConfirmed) {
// txInfo.confirmations > 0
}
```
*See tests for more utilities*
**Note:** It is suggested to generate your Private key offline with FAR more entropy than the default function, then use xprvToXpub.
You have been warned!
## License
MIT