85 lines
1.9 KiB
JavaScript
85 lines
1.9 KiB
JavaScript
'use strict'
|
|
|
|
// Environment
|
|
require('dotenv').config()
|
|
|
|
// Libraries
|
|
const path = require('path')
|
|
const fs = require('fs')
|
|
const { decryptString } = require('./utils')
|
|
|
|
// Connect to Tron network
|
|
const TronWeb = require('tronweb')
|
|
|
|
// Set Tron connection
|
|
const API_URL =
|
|
process.env.DEBUG === '1'
|
|
? process.env.TRON_NILE_API
|
|
: process.env.DEBUG === '2'
|
|
? process.env.TRON_LOCAL_API
|
|
: process.env.TRON_MAINNET_API
|
|
const HttpProvider = TronWeb.providers.HttpProvider
|
|
const fullNode = new HttpProvider(API_URL)
|
|
const solidityNode = new HttpProvider(API_URL)
|
|
const eventServer = API_URL
|
|
const tronWeb = new TronWeb(fullNode, solidityNode, eventServer)
|
|
const feeLimit = parseInt(process.env.FEE_LIMIT)
|
|
|
|
// Set contract data
|
|
const contractPath = path.join(
|
|
__dirname,
|
|
`../build/contracts/${process.env.CONTRACT_NAME}.json`
|
|
)
|
|
const contractData = JSON.parse(fs.readFileSync(contractPath))
|
|
const contract = tronWeb.contract(
|
|
contractData.abi,
|
|
process.env.CONTRACT_ADDRESS
|
|
)
|
|
|
|
// TRX to SUN conversion
|
|
function trxToSun(trx) {
|
|
const sun = +(+trx * 1e6).toFixed(0)
|
|
return sun
|
|
}
|
|
|
|
// SUN to TRX conversion
|
|
function sunToTrx(sun) {
|
|
const trx = +(+sun / 1e6).toFixed(6)
|
|
return trx
|
|
}
|
|
|
|
// Address to base58 conversion
|
|
function addressToBase58(address) {
|
|
return tronWeb.address.fromHex(address)
|
|
}
|
|
|
|
// Set default private key
|
|
function setDefaultPrivateKey(pk) {
|
|
// Decrypt private key
|
|
const decPK =
|
|
pk ||
|
|
decryptString(process.env.PRIVATE_KEY_MAINNET, process.env.SEED_PASSWORD)
|
|
// Set private key in TronWeb
|
|
tronWeb.setPrivateKey(decPK.substring(2))
|
|
|
|
return decPK
|
|
}
|
|
|
|
// Get TRX balance
|
|
const getTrxBalance = async (address) => {
|
|
const balance = sunToTrx(await tronWeb.trx.getBalance(address))
|
|
return balance
|
|
}
|
|
|
|
module.exports = {
|
|
tronWeb,
|
|
setDefaultPrivateKey,
|
|
feeLimit,
|
|
contractData,
|
|
contract,
|
|
trxToSun,
|
|
sunToTrx,
|
|
addressToBase58,
|
|
getTrxBalance
|
|
}
|