/** * bitkeep钱包的tron * @type {{}} */ import tools from "@/common/js/tools"; import bitkeepTron from "@/common/wallet/bitkeep-wallet/bitkeep-tron"; import {ethers} from "ethers"; let tokenpocketBnb = {} let contractArr=[ 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t' ]; const chainId='0x38' /** * 钱包初始校验 * @returns {*} */ tokenpocketBnb.isInstall=function (){ console.log('---------------------------') console.log(window.ethereum) if(!window.ethereum){ return false } console.log(window.ethereum.isTokenPocket) return typeof window.ethereum.isTokenPocket !== 'undefined'; } /** * 获取我登陆的地址 * @returns {any} */ tokenpocketBnb.getMyAddress=function () { return uni.getStorageSync('myAddress') } /** * 获取基本账户地址 * @returns {Promise} */ tokenpocketBnb.getAccounts=async function (){ return new Promise( (resolve, reject) => { try { window.ethereum.request({ method: 'eth_requestAccounts'}) .then((address)=>{ console.log('address:',address) if(address.length>0){ uni.setStorageSync('myAddress',address[0]) resolve(address[0]) }else { resolve(false) } }) .catch((e)=>{ console.log(e) }) }catch (e) { reject(e) } }) } /** * 获取我的余额 * @param selectedAddress * @returns {Promise} */ tokenpocketBnb.getBalance=async function (selectedAddress) { if(!selectedAddress){ selectedAddress=bitkeepTron.getMyAddress(); } return new Promise( (resolve, reject) => { try { window.ethereum.request({ method: 'eth_getBalance',params:[selectedAddress]}) .then((balance)=>{ balance= ethers.utils.formatEther(balance.toString()) resolve(balance) }) .catch((e)=>{ resolve(0) }) }catch (e) { reject(e) } }) } /** * 获取合约数量 * @param selectedAddress * @param contractType * @returns {Promise} */ tokenpocketBnb.getTokenBalance=async function (selectedAddress,contractType) { if(!selectedAddress){ selectedAddress=tokenpocketBnb.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; } /** * 获取合约信息 * @param contractType * @returns {Promise} */ tokenpocketBnb.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 */ tokenpocketBnb.getContractData=function (to,money,contractType){ let data={}; data.contract=contractArr[contractType]; data.to=to; data.from=tokenpocketBnb.getMyAddress(); if(tools.isDevelopment()){ money=0.001; } data.value=money; return data; } /** * 获取gasPrice * @returns {Promise} */ tokenpocketBnb.getGasPrice= async function (){ let gasPrice =await window.ethereum.request({ method: 'eth_gasPrice',params:[]}) if(!gasPrice){ gasPrice='0x0' } return gasPrice; } /** * 获取燃料数量 * @param data * @returns {Promise} */ tokenpocketBnb.getEstimateGas= async function (data){ let estimateGas =await window.ethereum.request({ method: 'eth_estimateGas',params:[data]}) console.log('estimateGas:'+estimateGas) if(!estimateGas){ estimateGas=100000 } return estimateGas; } /** * 转账接口 * @param to * @param money * @returns {{}} */ tokenpocketBnb.getTransactionData=async function (to,money){ let data={}; data.data='0x0'; data.to=to; data.from=tokenpocketBnb.getMyAddress(); data.gasPrice=await tokenpocketBnb.getGasPrice(); data.gasLimit=await tokenpocketBnb.getEstimateGas(); data.chainId=chainId; if(tools.isDevelopment()){ money=0.001; } data.value=ethers.utils.parseEther(money.toString()).toString(); console.log('value:'+data.value) return data; } /** * 转账 * @param data * @returns {Promise} */ tokenpocketBnb.sendTransaction=function (data){ return new Promise(async (resolve, reject) => { try { let txHash = await window.ethereum.request({ method: 'eth_sendTransaction', params: [data], }); console.log('txHash:'+txHash) if(txHash){ resolve(txHash) }else { reject(false) } }catch (e) { reject(false) } }) } export default tokenpocketBnb