'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 }