| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- /**
- * 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<unknown>}
- */
- 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<unknown>}
- */
- 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<number>}
- */
- 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<unknown>}
- */
- 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
|