tokenpocket-bnb.js 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. /**
  2. * bitkeep钱包的tron
  3. * @type {{}}
  4. */
  5. import tools from "@/common/js/tools";
  6. let tokenpocketBnb = {}
  7. let contractArr=[
  8. 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t'
  9. ];
  10. /**
  11. * 钱包初始校验
  12. * @returns {*}
  13. */
  14. tokenpocketBnb.isInstall=function (){
  15. console.log('---------------------------')
  16. console.log(window.ethereum)
  17. if(!window.ethereum){
  18. return false
  19. }
  20. console.log(window.ethereum.isTokenPocket)
  21. return typeof window.ethereum.isTokenPocket !== 'undefined';
  22. }
  23. /**
  24. * 获取我登陆的地址
  25. * @returns {any}
  26. */
  27. tokenpocketBnb.getMyAddress=function () {
  28. return uni.getStorageSync('myAddress')
  29. }
  30. /**
  31. * 获取基本账户地址
  32. * @returns {Promise<unknown>}
  33. */
  34. tokenpocketBnb.getAccounts=async function (){
  35. return new Promise( (resolve, reject) => {
  36. try {
  37. window.ethereum.request({ method: 'eth_requestAccounts'})
  38. .then((address)=>{
  39. if(address.length>0){
  40. uni.setStorageSync('myAddress',address[0])
  41. resolve(address[0])
  42. }else {
  43. resolve(false)
  44. }
  45. })
  46. .catch((e)=>{
  47. console.log(e)
  48. })
  49. }catch (e) {
  50. reject(e)
  51. }
  52. })
  53. }
  54. /**
  55. * 获取我的余额
  56. * @param selectedAddress
  57. * @returns {Promise<unknown>}
  58. */
  59. tokenpocketBnb.getBalance=async function (selectedAddress) {
  60. if(!selectedAddress){
  61. selectedAddress=bitkeepTron.getMyAddress();
  62. }
  63. let balance = await tronWeb.trx.getBalance(selectedAddress);
  64. balance=balance/1000000;
  65. return balance
  66. }
  67. /**
  68. * 获取合约数量
  69. * @param selectedAddress
  70. * @param contractType
  71. * @returns {Promise<number>}
  72. */
  73. tokenpocketBnb.getTokenBalance=async function (selectedAddress,contractType) {
  74. if(!selectedAddress){
  75. selectedAddress=tokenpocketBnb.getMyAddress();
  76. }
  77. let tokenBalance = await tronWeb.transactionBuilder.triggerConstantContract(
  78. contractArr[contractType],
  79. "balanceOf(address)",
  80. {},
  81. [{ type: 'address', value: selectedAddress }],
  82. tronWeb.defaultAddress.base58,
  83. );
  84. let balance = tokenBalance.constant_result[0];
  85. balance= parseInt(balance, 16);
  86. balance=balance/1000000;
  87. return balance;
  88. }
  89. /**
  90. * 获取合约信息
  91. * @param contractType
  92. * @returns {Promise<boolean|*>}
  93. */
  94. tokenpocketBnb.getContract=async function (contractType) {
  95. let contractData = await tronWeb.trx.getContract(contractArr[contractType])
  96. if(contractData.abi){
  97. return contractData.abi
  98. }else {
  99. return false
  100. }
  101. }
  102. /**
  103. * 合约转账
  104. * @param to
  105. * @param money
  106. * @param contractType
  107. */
  108. tokenpocketBnb.getContractData=function (to,money,contractType){
  109. let data={};
  110. data.contract=contractArr[contractType];
  111. data.to=to;
  112. data.from=tokenpocketBnb.getMyAddress();
  113. if(tools.isDevelopment()){
  114. money=0.001;
  115. }
  116. data.value=money;
  117. return data;
  118. }
  119. /**
  120. * 转账接口
  121. * @param to
  122. * @param money
  123. * @returns {{}}
  124. */
  125. tokenpocketBnb.getTransactionData=function (to,money){
  126. let data={};
  127. data.to=to;
  128. data.from=tokenpocketBnb.getMyAddress();
  129. if(tools.isDevelopment()){
  130. money=0.001;
  131. }
  132. data.value=money;
  133. return data;
  134. }
  135. /**
  136. * 转账
  137. * @param data
  138. * @returns {Promise<unknown>}
  139. */
  140. tokenpocketBnb.sendTransaction=function (data){
  141. return new Promise(async (resolve, reject) => {
  142. try {
  143. let broastTx={};
  144. if (data.contract) {
  145. let decimal = 18
  146. let Contract = await tronWeb.contract().at(data.contract)
  147. const decimalCall = Contract.decimals || Contract.DECIMALS;
  148. if (decimalCall) {
  149. decimal = await decimalCall().call()
  150. }
  151. let txid = await Contract.transfer(
  152. data.to,
  153. tronWeb.toHex(data.value * Math.pow(10, decimal))
  154. ).send()
  155. if(txid){
  156. broastTx.txid=txid
  157. }
  158. } else {
  159. let tx = await tronWeb.transactionBuilder.sendTrx(data.to, data.value * Math.pow(10, 6), data.from);
  160. // sign 签名
  161. let signedTx = await tronWeb.trx.sign(tx);
  162. // broadcast 广播
  163. broastTx = await tronWeb.trx.sendRawTransaction(signedTx);
  164. }
  165. if(broastTx.txid){
  166. resolve(broastTx.txid)
  167. }else {
  168. reject(false)
  169. }
  170. }catch (e) {
  171. reject(false)
  172. }
  173. })
  174. }
  175. export default tokenpocketBnb