/** * bitkeep钱包的tron * @type {{}} */ import tools from "@/common/js/tools"; let bitkeepTron = {} let contractArr=[ 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t' ]; /** * 钱包初始校验 * @returns {*} */ bitkeepTron.isInstall=function (){ return window.tronLink && window.tronWeb; } /** * 获取我登陆的地址 * @returns {any} */ bitkeepTron.getMyAddress=function () { return uni.getStorageSync('myAddress') } /** * 获取基本账户地址 * @returns {Promise} */ bitkeepTron.getAccounts=async function (){ return new Promise(async (resolve, reject) => { try { await window.tronLink.request({method: "tron_requestAccounts"}); let selectedAddress = tronWeb.defaultAddress.base58; uni.setStorageSync('myAddress',selectedAddress) resolve(selectedAddress) }catch (e) { reject(e) } }) } /** * 获取我的余额 * @param selectedAddress * @returns {Promise} */ bitkeepTron.getBalance=async function (selectedAddress) { if(!selectedAddress){ selectedAddress=bitkeepTron.getMyAddress(); } let balance = await tronWeb.trx.getBalance(selectedAddress); balance=balance/1000000; return balance } /** * 获取合约数量 * @param selectedAddress * @param contractType * @returns {Promise} */ bitkeepTron.getTokenBalance=async function (selectedAddress,contractType) { if(!selectedAddress){ selectedAddress=bitkeepTron.getMyAddress(); } let tokenBalance = await tronWeb.transactionBuilder.triggerConstantContract( contractArr[contractType], "balanceOf(address)", {}, [{ type: 'address', value: selectedAddress }], tronWeb.defaultAddress.base58, ); let balance = tokenBalance.constant_result[0]; balance= parseInt(balance, 16); balance=balance/1000000; return balance; } bitkeepTron.getContract=async function (contractType) { let contractData = await tronWeb.trx.getContract(contractArr[contractType]) if(contractData.abi){ return contractData.abi }else { return false } } /** * 合约转账 * @param to * @param money * @param contractType */ bitkeepTron.getContractData=function (to,money,contractType){ let data={}; data.contract=contractArr[contractType]; data.to=to; data.from=bitkeepTron.getMyAddress(); if(tools.isDevelopment()){ money=0.001; } data.value=money; return data; } bitkeepTron.getTransactionData=function (to,money){ let data={}; data.to=to; data.from=bitkeepTron.getMyAddress(); if(tools.isDevelopment()){ // money=0.001; } data.value=money; return data; } /** * trc转账 * @param data * @returns {Promise} */ bitkeepTron.sendTransaction=function (data){ return new Promise(async (resolve, reject) => { try { let broastTx; if (data.contract) { const parameter = [{ type: 'address', value: data.to * Math.pow(10, 18) }]; let tx = await tronWeb.transactionBuilder.triggerSmartContract( data.contract, "registrationExt(address)", {}, parameter, data.from ); let signedTx = await tronWeb.trx.sign(tx.transaction); broastTx = await tronWeb.trx.sendRawTransaction(signedTx); } else { console.log('transactionBuilder:') console.log(data.to, data.value * Math.pow(10, 6), data.from) let tx = await tronWeb.transactionBuilder.sendTrx(data.to, data.value * Math.pow(10, 6), data.from); // sign 签名 let signedTx = await tronWeb.trx.sign(tx); // broadcast 广播 broastTx = await tronWeb.trx.sendRawTransaction(signedTx); } if(broastTx.txid){ resolve(broastTx.txid) }else { reject(false) } }catch (e) { reject(false) } }) } export default bitkeepTron