|
|
@@ -1,631 +0,0 @@
|
|
|
-/**
|
|
|
- * bitkeep钱包的tron
|
|
|
- * @type {{}}
|
|
|
- */
|
|
|
-import tools from "@/common/js/tools";
|
|
|
-
|
|
|
-let bitkeepTron = {}
|
|
|
-
|
|
|
-let contractArr=[
|
|
|
- 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t',
|
|
|
- 'TTUzsY3UMVTwT8a7wmJ3P6ar7aj5ddjVsR',
|
|
|
-];
|
|
|
-const tronCrossAddress = "TTUzsY3UMVTwT8a7wmJ3P6ar7aj5ddjVsR";
|
|
|
-const tronCrossAbi = [
|
|
|
- {
|
|
|
- "anonymous": false,
|
|
|
- "inputs": [
|
|
|
- {
|
|
|
- "indexed": true,
|
|
|
- "internalType": "address",
|
|
|
- "name": "_l1Token",
|
|
|
- "type": "address"
|
|
|
- },
|
|
|
- {
|
|
|
- "indexed": true,
|
|
|
- "internalType": "address",
|
|
|
- "name": "_l2Token",
|
|
|
- "type": "address"
|
|
|
- },
|
|
|
- {
|
|
|
- "indexed": true,
|
|
|
- "internalType": "address",
|
|
|
- "name": "_from",
|
|
|
- "type": "address"
|
|
|
- },
|
|
|
- {
|
|
|
- "indexed": false,
|
|
|
- "internalType": "address",
|
|
|
- "name": "_to",
|
|
|
- "type": "address"
|
|
|
- },
|
|
|
- {
|
|
|
- "indexed": false,
|
|
|
- "internalType": "uint256",
|
|
|
- "name": "_amount",
|
|
|
- "type": "uint256"
|
|
|
- },
|
|
|
- {
|
|
|
- "indexed": false,
|
|
|
- "internalType": "bytes",
|
|
|
- "name": "_data",
|
|
|
- "type": "bytes"
|
|
|
- }
|
|
|
- ],
|
|
|
- "name": "ERC20DepositInitiated",
|
|
|
- "type": "event"
|
|
|
- },
|
|
|
- {
|
|
|
- "anonymous": false,
|
|
|
- "inputs": [
|
|
|
- {
|
|
|
- "indexed": true,
|
|
|
- "internalType": "address",
|
|
|
- "name": "_l1Token",
|
|
|
- "type": "address"
|
|
|
- },
|
|
|
- {
|
|
|
- "indexed": true,
|
|
|
- "internalType": "address",
|
|
|
- "name": "_l2Token",
|
|
|
- "type": "address"
|
|
|
- },
|
|
|
- {
|
|
|
- "indexed": true,
|
|
|
- "internalType": "address",
|
|
|
- "name": "_from",
|
|
|
- "type": "address"
|
|
|
- },
|
|
|
- {
|
|
|
- "indexed": false,
|
|
|
- "internalType": "address",
|
|
|
- "name": "_to",
|
|
|
- "type": "address"
|
|
|
- },
|
|
|
- {
|
|
|
- "indexed": false,
|
|
|
- "internalType": "uint256",
|
|
|
- "name": "_amount",
|
|
|
- "type": "uint256"
|
|
|
- },
|
|
|
- {
|
|
|
- "indexed": false,
|
|
|
- "internalType": "bytes",
|
|
|
- "name": "_data",
|
|
|
- "type": "bytes"
|
|
|
- }
|
|
|
- ],
|
|
|
- "name": "ERC20WithdrawalFinalized",
|
|
|
- "type": "event"
|
|
|
- },
|
|
|
- {
|
|
|
- "anonymous": false,
|
|
|
- "inputs": [
|
|
|
- {
|
|
|
- "indexed": true,
|
|
|
- "internalType": "address",
|
|
|
- "name": "_from",
|
|
|
- "type": "address"
|
|
|
- },
|
|
|
- {
|
|
|
- "indexed": true,
|
|
|
- "internalType": "address",
|
|
|
- "name": "_to",
|
|
|
- "type": "address"
|
|
|
- },
|
|
|
- {
|
|
|
- "indexed": false,
|
|
|
- "internalType": "uint256",
|
|
|
- "name": "_amount",
|
|
|
- "type": "uint256"
|
|
|
- },
|
|
|
- {
|
|
|
- "indexed": false,
|
|
|
- "internalType": "bytes",
|
|
|
- "name": "_data",
|
|
|
- "type": "bytes"
|
|
|
- }
|
|
|
- ],
|
|
|
- "name": "ETHDepositInitiated",
|
|
|
- "type": "event"
|
|
|
- },
|
|
|
- {
|
|
|
- "anonymous": false,
|
|
|
- "inputs": [
|
|
|
- {
|
|
|
- "indexed": true,
|
|
|
- "internalType": "address",
|
|
|
- "name": "_from",
|
|
|
- "type": "address"
|
|
|
- },
|
|
|
- {
|
|
|
- "indexed": true,
|
|
|
- "internalType": "address",
|
|
|
- "name": "_to",
|
|
|
- "type": "address"
|
|
|
- },
|
|
|
- {
|
|
|
- "indexed": false,
|
|
|
- "internalType": "uint256",
|
|
|
- "name": "_amount",
|
|
|
- "type": "uint256"
|
|
|
- },
|
|
|
- {
|
|
|
- "indexed": false,
|
|
|
- "internalType": "bytes",
|
|
|
- "name": "_data",
|
|
|
- "type": "bytes"
|
|
|
- }
|
|
|
- ],
|
|
|
- "name": "ETHWithdrawalFinalized",
|
|
|
- "type": "event"
|
|
|
- },
|
|
|
- {
|
|
|
- "anonymous": false,
|
|
|
- "inputs": [
|
|
|
- {
|
|
|
- "indexed": true,
|
|
|
- "internalType": "address",
|
|
|
- "name": "previousOwner",
|
|
|
- "type": "address"
|
|
|
- },
|
|
|
- {
|
|
|
- "indexed": true,
|
|
|
- "internalType": "address",
|
|
|
- "name": "newOwner",
|
|
|
- "type": "address"
|
|
|
- }
|
|
|
- ],
|
|
|
- "name": "OwnershipTransferred",
|
|
|
- "type": "event"
|
|
|
- },
|
|
|
- {
|
|
|
- "inputs": [
|
|
|
- {
|
|
|
- "internalType": "address",
|
|
|
- "name": "_l1Token",
|
|
|
- "type": "address"
|
|
|
- },
|
|
|
- {
|
|
|
- "internalType": "address",
|
|
|
- "name": "_l2Token",
|
|
|
- "type": "address"
|
|
|
- },
|
|
|
- {
|
|
|
- "internalType": "uint256",
|
|
|
- "name": "_amount",
|
|
|
- "type": "uint256"
|
|
|
- },
|
|
|
- {
|
|
|
- "internalType": "uint32",
|
|
|
- "name": "_l2Gas",
|
|
|
- "type": "uint32"
|
|
|
- },
|
|
|
- {
|
|
|
- "internalType": "bytes",
|
|
|
- "name": "_data",
|
|
|
- "type": "bytes"
|
|
|
- }
|
|
|
- ],
|
|
|
- "name": "depositERC20",
|
|
|
- "outputs": [],
|
|
|
- "stateMutability": "nonpayable",
|
|
|
- "type": "function"
|
|
|
- },
|
|
|
- {
|
|
|
- "inputs": [
|
|
|
- {
|
|
|
- "internalType": "address",
|
|
|
- "name": "_l1Token",
|
|
|
- "type": "address"
|
|
|
- },
|
|
|
- {
|
|
|
- "internalType": "address",
|
|
|
- "name": "_l2Token",
|
|
|
- "type": "address"
|
|
|
- },
|
|
|
- {
|
|
|
- "internalType": "address",
|
|
|
- "name": "_to",
|
|
|
- "type": "address"
|
|
|
- },
|
|
|
- {
|
|
|
- "internalType": "uint256",
|
|
|
- "name": "_amount",
|
|
|
- "type": "uint256"
|
|
|
- },
|
|
|
- {
|
|
|
- "internalType": "uint32",
|
|
|
- "name": "_l2Gas",
|
|
|
- "type": "uint32"
|
|
|
- },
|
|
|
- {
|
|
|
- "internalType": "bytes",
|
|
|
- "name": "_data",
|
|
|
- "type": "bytes"
|
|
|
- }
|
|
|
- ],
|
|
|
- "name": "depositERC20To",
|
|
|
- "outputs": [],
|
|
|
- "stateMutability": "nonpayable",
|
|
|
- "type": "function"
|
|
|
- },
|
|
|
- {
|
|
|
- "inputs": [
|
|
|
- {
|
|
|
- "internalType": "uint32",
|
|
|
- "name": "_l2Gas",
|
|
|
- "type": "uint32"
|
|
|
- },
|
|
|
- {
|
|
|
- "internalType": "bytes",
|
|
|
- "name": "_data",
|
|
|
- "type": "bytes"
|
|
|
- }
|
|
|
- ],
|
|
|
- "name": "depositETH",
|
|
|
- "outputs": [],
|
|
|
- "stateMutability": "payable",
|
|
|
- "type": "function"
|
|
|
- },
|
|
|
- {
|
|
|
- "inputs": [
|
|
|
- {
|
|
|
- "internalType": "address",
|
|
|
- "name": "_to",
|
|
|
- "type": "address"
|
|
|
- },
|
|
|
- {
|
|
|
- "internalType": "uint32",
|
|
|
- "name": "_l2Gas",
|
|
|
- "type": "uint32"
|
|
|
- },
|
|
|
- {
|
|
|
- "internalType": "bytes",
|
|
|
- "name": "_data",
|
|
|
- "type": "bytes"
|
|
|
- }
|
|
|
- ],
|
|
|
- "name": "depositETHTo",
|
|
|
- "outputs": [],
|
|
|
- "stateMutability": "payable",
|
|
|
- "type": "function"
|
|
|
- },
|
|
|
- {
|
|
|
- "inputs": [
|
|
|
- {
|
|
|
- "internalType": "address",
|
|
|
- "name": "",
|
|
|
- "type": "address"
|
|
|
- },
|
|
|
- {
|
|
|
- "internalType": "address",
|
|
|
- "name": "",
|
|
|
- "type": "address"
|
|
|
- }
|
|
|
- ],
|
|
|
- "name": "deposits",
|
|
|
- "outputs": [
|
|
|
- {
|
|
|
- "internalType": "uint256",
|
|
|
- "name": "",
|
|
|
- "type": "uint256"
|
|
|
- }
|
|
|
- ],
|
|
|
- "stateMutability": "view",
|
|
|
- "type": "function"
|
|
|
- },
|
|
|
- {
|
|
|
- "inputs": [],
|
|
|
- "name": "donateETH",
|
|
|
- "outputs": [],
|
|
|
- "stateMutability": "payable",
|
|
|
- "type": "function"
|
|
|
- },
|
|
|
- {
|
|
|
- "inputs": [
|
|
|
- {
|
|
|
- "internalType": "address",
|
|
|
- "name": "_l1Token",
|
|
|
- "type": "address"
|
|
|
- },
|
|
|
- {
|
|
|
- "internalType": "address",
|
|
|
- "name": "_l2Token",
|
|
|
- "type": "address"
|
|
|
- },
|
|
|
- {
|
|
|
- "internalType": "address",
|
|
|
- "name": "_from",
|
|
|
- "type": "address"
|
|
|
- },
|
|
|
- {
|
|
|
- "internalType": "address",
|
|
|
- "name": "_to",
|
|
|
- "type": "address"
|
|
|
- },
|
|
|
- {
|
|
|
- "internalType": "uint256",
|
|
|
- "name": "_amount",
|
|
|
- "type": "uint256"
|
|
|
- },
|
|
|
- {
|
|
|
- "internalType": "bytes",
|
|
|
- "name": "_data",
|
|
|
- "type": "bytes"
|
|
|
- }
|
|
|
- ],
|
|
|
- "name": "finalizeERC20Withdrawal",
|
|
|
- "outputs": [],
|
|
|
- "stateMutability": "nonpayable",
|
|
|
- "type": "function"
|
|
|
- },
|
|
|
- {
|
|
|
- "inputs": [
|
|
|
- {
|
|
|
- "internalType": "address",
|
|
|
- "name": "_from",
|
|
|
- "type": "address"
|
|
|
- },
|
|
|
- {
|
|
|
- "internalType": "address",
|
|
|
- "name": "_to",
|
|
|
- "type": "address"
|
|
|
- },
|
|
|
- {
|
|
|
- "internalType": "uint256",
|
|
|
- "name": "_amount",
|
|
|
- "type": "uint256"
|
|
|
- },
|
|
|
- {
|
|
|
- "internalType": "bytes",
|
|
|
- "name": "_data",
|
|
|
- "type": "bytes"
|
|
|
- }
|
|
|
- ],
|
|
|
- "name": "finalizeETHWithdrawal",
|
|
|
- "outputs": [],
|
|
|
- "stateMutability": "nonpayable",
|
|
|
- "type": "function"
|
|
|
- },
|
|
|
- {
|
|
|
- "inputs": [],
|
|
|
- "name": "owner",
|
|
|
- "outputs": [
|
|
|
- {
|
|
|
- "internalType": "address",
|
|
|
- "name": "",
|
|
|
- "type": "address"
|
|
|
- }
|
|
|
- ],
|
|
|
- "stateMutability": "view",
|
|
|
- "type": "function"
|
|
|
- },
|
|
|
- {
|
|
|
- "inputs": [],
|
|
|
- "name": "renounceOwnership",
|
|
|
- "outputs": [],
|
|
|
- "stateMutability": "nonpayable",
|
|
|
- "type": "function"
|
|
|
- },
|
|
|
- {
|
|
|
- "inputs": [
|
|
|
- {
|
|
|
- "internalType": "address",
|
|
|
- "name": "newOwner",
|
|
|
- "type": "address"
|
|
|
- }
|
|
|
- ],
|
|
|
- "name": "transferOwnership",
|
|
|
- "outputs": [],
|
|
|
- "stateMutability": "nonpayable",
|
|
|
- "type": "function"
|
|
|
- },
|
|
|
- {
|
|
|
- "stateMutability": "payable",
|
|
|
- "type": "receive"
|
|
|
- }
|
|
|
-];
|
|
|
-/**
|
|
|
- * 钱包初始校验
|
|
|
- * @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;
|
|
|
-}
|
|
|
-
|
|
|
-/**
|
|
|
- * 获取合约信息
|
|
|
- * @param contractType
|
|
|
- * @returns {Promise<boolean|*>}
|
|
|
- */
|
|
|
-bitkeepTron.getContract=async function (contractType) {
|
|
|
- let contractData = await tronWeb.trx.getContract(contractArr[contractType])
|
|
|
- console.log(contractData)
|
|
|
- if(contractData.abi){
|
|
|
- return contractData
|
|
|
- }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;
|
|
|
-}
|
|
|
-
|
|
|
-/**
|
|
|
- * 转账接口
|
|
|
- * @param to
|
|
|
- * @param money
|
|
|
- * @returns {{}}
|
|
|
- */
|
|
|
-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;
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-bitkeepTron.depositUsdtTo=async function (address,amount){
|
|
|
- return new Promise(async (resolve, reject) => {
|
|
|
- try {
|
|
|
- let _amount = tronWeb.toSun(amount)
|
|
|
- let trxUsdtContract = await tronWeb.contract().at(contractArr[0])
|
|
|
- let res = await trxUsdtContract.methods.approve(tronCrossAddress, _amount).send()
|
|
|
- if (res) {
|
|
|
- let timeNum=0;
|
|
|
- let timeServe= setInterval(async () => {
|
|
|
- let hashRes = await tronWeb.trx.getTransaction(res)
|
|
|
- if(hashRes.ret.length>0){
|
|
|
- if(hashRes.ret[0].contractRet==='SUCCESS'){
|
|
|
- const cInstance = tronWeb.contract(tronCrossAbi, tronCrossAddress);
|
|
|
- let _l1Token = "0xa614f803b6fd780986a42c78ec9c7f77e6ded13c".toLowerCase()
|
|
|
- let _l2Token = "0x10186D85Ac0579Cb141Ff37261f23CF4F1D254b5".toLowerCase()
|
|
|
- let sendRes = await cInstance.methods.depositERC20To(_l1Token, _l2Token, address, _amount, 0, []).send()
|
|
|
- console.log(sendRes)
|
|
|
- resolve(sendRes)
|
|
|
- clearInterval(timeServe)
|
|
|
- }else if(hashRes.ret[0].contractRet==='REVERT'){
|
|
|
- resolve(false)
|
|
|
- clearInterval(timeServe)
|
|
|
- }else if(timeNum>5){
|
|
|
- clearInterval(timeServe)
|
|
|
- resolve(false)
|
|
|
- }
|
|
|
- ++timeNum
|
|
|
- }
|
|
|
- }, 500)
|
|
|
-
|
|
|
- }else {
|
|
|
- resolve(false)
|
|
|
- }
|
|
|
- }catch (e) {
|
|
|
- reject(false)
|
|
|
- }
|
|
|
- })
|
|
|
-
|
|
|
-}
|
|
|
-
|
|
|
-/**
|
|
|
- * trc转账
|
|
|
- * @param data
|
|
|
- * @returns {Promise<unknown>}
|
|
|
- */
|
|
|
-bitkeepTron.sendTransaction=function (data){
|
|
|
- return new Promise(async (resolve, reject) => {
|
|
|
- try {
|
|
|
- let broastTx={};
|
|
|
- if (data.contract) {
|
|
|
- let decimal = 18
|
|
|
- let Contract = await tronWeb.contract().at(data.contract)
|
|
|
- const decimalCall = Contract.decimals || Contract.DECIMALS;
|
|
|
- if (decimalCall) {
|
|
|
- decimal = await decimalCall().call()
|
|
|
- }
|
|
|
- let txid = await Contract.transfer(
|
|
|
- data.to,
|
|
|
- tronWeb.toHex(data.value * Math.pow(10, decimal))
|
|
|
- ).send()
|
|
|
- if(txid){
|
|
|
- broastTx.txid=txid
|
|
|
- }
|
|
|
- } else {
|
|
|
- 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
|