tokenpocket-bnb.js 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. /**
  2. * bitkeep钱包的tron
  3. * @type {{}}
  4. */
  5. import tools from "@/common/js/tools";
  6. import {ethers} from "ethers";
  7. import web3 from "web3";
  8. let tokenpocketBnb = {}
  9. let contractArr=[
  10. '0x59560b65eacf3fce26f80cc80ad07d273f9e7218',//token
  11. '0x337610d27c682e347c9cd60bd4b3b107c9d34ddd',//usdt
  12. // '0x47fB7D1f92119eBFbC8B799044D42a65D4050D93',//token 正式
  13. // '0x55d398326f99059fF775485246999027B3197955',//usdt 正式
  14. ];
  15. let chainId=''
  16. let provider;
  17. /**
  18. * 钱包初始校验
  19. * @returns {*}
  20. */
  21. tokenpocketBnb.getProvider= function (){
  22. console.log(window.ethereum)
  23. console.log(window.ethereum.isTokenPocket)
  24. if (!window.ethereum || typeof window.ethereum.isTokenPocket === 'undefined') {
  25. return false
  26. }
  27. if(!provider){
  28. provider = window.ethereum;
  29. }
  30. // alert(provider.isConnected())
  31. console.log(chainId)
  32. if(!chainId){
  33. provider.request({method:'eth_chainId'}).then((ethChainId)=>{
  34. console.log(ethChainId)
  35. if(ethChainId!=='0x38'){
  36. uni.$emit('noBan',false)
  37. }else {
  38. chainId=ethChainId
  39. }
  40. })
  41. }
  42. return provider;
  43. }
  44. /**
  45. * 获取我登陆的地址
  46. * @returns {any}
  47. */
  48. tokenpocketBnb.getMyAddress=function () {
  49. return uni.getStorageSync('babAddress')
  50. }
  51. /**
  52. * 获取基本账户地址
  53. * @returns {Promise<unknown>}
  54. */
  55. tokenpocketBnb.getAccounts=async function (){
  56. return new Promise( (resolve, reject) => {
  57. try {
  58. tokenpocketBnb.getProvider().request({ method: 'eth_requestAccounts'})
  59. .then((address)=>{
  60. if(address.length>0){
  61. uni.setStorageSync('babAddress',address[0])
  62. resolve(address[0])
  63. }else {
  64. resolve(false)
  65. }
  66. })
  67. .catch((e)=>{
  68. console.log(e)
  69. })
  70. }catch (e) {
  71. reject(e)
  72. }
  73. })
  74. }
  75. /**
  76. * 获取我的余额
  77. * @param selectedAddress
  78. * @returns {Promise<unknown>}
  79. */
  80. tokenpocketBnb.getBalance=async function (selectedAddress) {
  81. if(!selectedAddress){
  82. selectedAddress=tokenpocketBnb.getMyAddress();
  83. }
  84. return new Promise( (resolve, reject) => {
  85. try {
  86. tokenpocketBnb.getProvider().request({ method: 'eth_getBalance',params:[selectedAddress,'latest']})
  87. .then((balance)=>{
  88. balance= ethers.utils.formatEther(balance.toString())
  89. resolve(balance)
  90. })
  91. .catch((e)=>{
  92. resolve(0)
  93. })
  94. }catch (e) {
  95. reject(e)
  96. }
  97. })
  98. }
  99. /**
  100. * 获取合约数量
  101. * @param selectedAddress
  102. * @param contractType
  103. * @returns {Promise<number>}
  104. */
  105. tokenpocketBnb.getTokenBalance=async function (selectedAddress,contractType) {
  106. if(!contractType){
  107. contractType=0
  108. }
  109. if(!selectedAddress){
  110. selectedAddress=tokenpocketBnb.getMyAddress();
  111. }
  112. return new Promise( (resolve, reject) => {
  113. let data='0x70a08231000000000000000000000000'+(selectedAddress.substring(2))
  114. tokenpocketBnb.getProvider().request({method: 'eth_call',params:[{'to':contractArr[contractType],'data':data}, "latest"]}).then((balance)=>{
  115. balance= (web3.utils.hexToNumberString(balance)/1000000000000000000).toString()
  116. if(balance<0.000001){
  117. balance=0
  118. }
  119. resolve(balance)
  120. }).catch((e)=>{
  121. console.log(e)
  122. resolve(0)
  123. })
  124. })
  125. }
  126. /**
  127. * 获取gasPrice
  128. * @returns {Promise<unknown>}
  129. */
  130. tokenpocketBnb.getGasPrice= async function (){
  131. let gasPrice =await tokenpocketBnb.getProvider().request({ method: 'eth_gasPrice',params:[]})
  132. // gasPrice=web3.utils.hexToNumber(gasPrice)
  133. console.log('gasPrice:'+gasPrice)
  134. if(!gasPrice){
  135. gasPrice='0x12a05f200'
  136. }
  137. return gasPrice;
  138. }
  139. /**
  140. * 获取燃料数量
  141. * @param data
  142. * @returns {Promise<unknown>}
  143. */
  144. tokenpocketBnb.getEstimateGas= async function (data){
  145. console.log('estimateGas---------------start',data)
  146. let estimateGas =await tokenpocketBnb.getProvider().request({ method: 'eth_estimateGas',params:[data, "latest"]})
  147. // estimateGas=web3.utils.hexToNumber(estimateGas)
  148. console.log(estimateGas,'estimateGas-------------------------------------------------------',web3.utils.hexToNumberString(estimateGas))
  149. if(!estimateGas || web3.utils.hexToNumberString(estimateGas)<100000){
  150. estimateGas=1000000
  151. estimateGas=web3.utils.numberToHex('1500000');
  152. }
  153. console.log('estimateGas:',estimateGas)
  154. return estimateGas;
  155. }
  156. /**
  157. * 转账接口
  158. * @param to
  159. * @param money
  160. * @returns {{}}
  161. */
  162. tokenpocketBnb.getTransactionData=async function (to,money){
  163. console.log('-------------------------aaaaaaaaaaaaaaaaaaaaaa')
  164. let data={};
  165. data.to=to;
  166. data.from=tokenpocketBnb.getMyAddress();
  167. data.gasPrice=await tokenpocketBnb.getGasPrice();
  168. data.gas=await tokenpocketBnb.getEstimateGas(data);
  169. console.log('-------------------------aaaaaaaaaaaaaaaaaaaaaa')
  170. data.chainId=chainId;
  171. if(tools.isDevelopment()){
  172. money=0.00001;
  173. }
  174. data.data='0x0';
  175. console.log(money.toString())
  176. data.value=web3.utils.numberToHex(ethers.utils.parseEther(money.toString()).toString());
  177. console.log('value:'+data.value)
  178. return data;
  179. }
  180. tokenpocketBnb.getContractTransaction=async function (sendData,contractType){
  181. console.log('getContractTransaction-----------------start')
  182. let data={};
  183. data.to=contractArr[contractType];
  184. data.from=tokenpocketBnb.getMyAddress();
  185. console.log('getContractTransaction-----------------1')
  186. data.gasPrice=await tokenpocketBnb.getGasPrice();
  187. console.log('getContractTransaction-----------------2')
  188. data.gas=await tokenpocketBnb.getEstimateGas();
  189. data.value='0x0';
  190. data.data=sendData;
  191. console.log('getContractTransaction-----------------3')
  192. data.chainId=chainId;
  193. console.log('value:'+data.value)
  194. console.log('getContractTransaction-----------------end')
  195. return data;
  196. }
  197. /**
  198. * 转账
  199. * @param data
  200. * @returns {Promise<unknown>}
  201. */
  202. tokenpocketBnb.sendTransaction=function (data){
  203. return new Promise(async (resolve, reject) => {
  204. console.log(data)
  205. try {
  206. let txHash = await tokenpocketBnb.getProvider().request({
  207. method: 'eth_sendTransaction',
  208. params: [data],
  209. });
  210. console.log('txHash:'+txHash)
  211. if(txHash){
  212. resolve(txHash)
  213. }else {
  214. reject(false)
  215. }
  216. }catch (e) {
  217. reject(false)
  218. }
  219. })
  220. }
  221. export default tokenpocketBnb