zhangjianchu 3 年之前
父節點
當前提交
7f29726afb
共有 6 個文件被更改,包括 363 次插入11 次删除
  1. 44 0
      src/main_2.js
  2. 311 0
      src/views/Home_2.vue
  3. 2 2
      src/wallet/Address.js
  4. 0 3
      src/wallet/BinanceChain.js
  5. 5 5
      src/wallet/EventDispatcher.js
  6. 1 1
      src/wallet/WalletMgr.js

+ 44 - 0
src/main_2.js

@@ -0,0 +1,44 @@
+import { createApp } from 'vue'
+import App from './App.vue'
+import router from './router'
+import store from './store'
+import './assets/main.css'
+import './assets/fonts/font.css'
+import walletMgr from './wallet/WalletMgr.js'
+import erc20 from './wallet/contract/Erc20'
+import address from './wallet/Address'
+import uniswapV2Router02 from './wallet/contract/UniswapV2Router02'
+import UniswapV2Library from './wallet/contract/UniswapV2Library'
+
+
+
+import vueSwiper from 'vue-awesome-swiper'
+import 'swiper/dist/css/swiper.css'
+walletMgr.changeWalletType(1,(x)=>{
+    console.log(x)
+    //erc20.setApprovalForAll(address.address.MMB,"0x6d5B551736D15BD83Edd66a13771929633a241E5",null,null)
+    //uniswapV2Router02.addLiquidity("0xd094FE68Ab1196a644A80a2A5687ed42c7B9d2e9","0x563629bA101745864271Bc2cdD6C575Dd68393Fd",1000000,1000000,1000,10000,'0xAf40Bd1870b5A56FE86403acD434A91D7517dBB6',100000000000000,
+    // (x)=>{
+    //     console.log("fun1:",x);
+    // },(x)=>{
+    //     console.log("fun2:",x);
+    // })
+   // walletMgr.addTokensToMetaMask("0x975a6eE5B33CB29B0fF5d5F3CE238f31D19643EE");
+    // erc20.isApprovalForAll(address.address.MMB,"0x6d5B551736D15BD83Edd66a13771929633a241E5",(x)=>{
+    //     console.log("bool:",x);
+    // })
+    //uniswapV2Router02.getAmountsOut(1000000,['0xd094FE68Ab1196a644A80a2A5687ed42c7B9d2e9','0x563629bA101745864271Bc2cdD6C575Dd68393Fd']);
+    //uniswapV2Router02.getAmountsIn(996999,['0x563629bA101745864271Bc2cdD6C575Dd68393Fd','0xd094FE68Ab1196a644A80a2A5687ed42c7B9d2e9']);
+    
+    //UniswapV2Library.pairFor('0x563629bA101745864271Bc2cdD6C575Dd68393Fd','0xd094FE68Ab1196a644A80a2A5687ed42c7B9d2e9')
+    //UniswapV2Library.getReserves('0x563629bA101745864271Bc2cdD6C575Dd68393Fd','0xd094FE68Ab1196a644A80a2A5687ed42c7B9d2e9')
+    // uniswapV2Router02.swapExactTokensForTokens(1000000,1000,['0x563629bA101745864271Bc2cdD6C575Dd68393Fd','0xd094FE68Ab1196a644A80a2A5687ed42c7B9d2e9'],'0x6d5B551736D15BD83Edd66a13771929633a241E5',100000000000000,
+    // (x)=>{
+    //     console.log("fun1:",x);
+    // },(x)=>{
+    //     console.log("fun2:",x);
+    // })
+});
+
+
+createApp(App).use(store).use(router).use(vueSwiper).mount('#app')

+ 311 - 0
src/views/Home_2.vue

@@ -0,0 +1,311 @@
+<template>
+
+  <div class="home">
+  
+
+<div>
+   <button style="" @click="addUSDT()">add USDT  address</button>
+   <input type="text" style="width: 400px;" v-model="USDT">
+    <br />
+   <button style="" @click="addMMB()">add MMB  address</button>
+   <input type="text" style="width: 400px;" v-model="MMB">
+    <br />
+   <button style="" @click="addKIT()">add KIT address</button>
+   <input type="text" style="width: 400px;" v-model="KIT">
+    <br />
+    <br />
+    <br />
+    <button style="" @click="setApprovalForAll()">setApprovalForAll</button>
+    <input type="text" style="width: 400px;" v-model="approvalAddress">
+    <br />
+    <button style="" @click="isApprovalForAll()">isApprovalForAll</button>
+    <input type="text" style="width: 400px;" v-model="approvalAddress">
+    <input type="text" style="width: 50px;" v-model="isApproval">
+    <br />
+    <br />
+    <br />
+    <button style="" @click="checkAddLiquidity()">checkAddLiquidity</button>
+    <br />
+    <span style="color:#000;">tokenA</span>
+    <input type="text" style="width: 400px;" v-model="tokenA">
+    <br />
+    <span style="color:#000;">tokenB</span>
+    <input type="text" style="width: 400px;" v-model="tokenB">
+    <br />
+    <span style="color:#000;">amountA</span>
+    <input type="text" v-model="amountA" @click="this.amountA='';this.amountB=''" >
+    <br />
+    <span style="color:#000;">amountB</span>
+    <input type="text" v-model="amountB"  @click="this.amountA='';this.amountB=''">
+    <br />
+    <br />
+    <br />
+    <button style="" @click="addLiquidity()">addLiquidity</button>
+    <br />
+    <span style="color:#000;">tokenA</span>
+    <input type="text" style="width: 400px;" v-model="tokenA">
+    <br />
+    <span style="color:#000;">tokenB</span>
+    <input type="text" style="width: 400px;" v-model="tokenB">
+    <br />
+    <span style="color:#000;">amountA</span>
+    <input type="text" v-model="amountA">
+    <br />
+    <span style="color:#000;">amountB</span>
+    <input type="text" v-model="amountB">
+    <br />
+    <span style="color:#000;">toAddress</span>
+    <input type="text" style="width: 400px;" v-model="liquidityTo">
+    <br />
+    <br />
+    <br />
+    <button style="" @click="removeLiquidity()">removeLiquidity</button>
+    <br />
+    <span style="color:#000;">tokenA</span>
+    <input type="text" style="width: 400px;" v-model="tokenA">
+    <br />
+    <span style="color:#000;">tokenB</span>
+    <input type="text" style="width: 400px;" v-model="tokenB">
+    <br />
+    <span style="color:#000;">LPAmount</span>
+    <input type="text" v-model="liquidityAmount">
+    <br />
+    <span style="color:#000;">toAddress</span>
+    <input type="text" style="width: 400px;" v-model="liquidityTo">
+    <br />
+    <br />
+    <br />
+    <button style="" @click="checkoutTokens()">checkoutTokens</button>
+    <br />
+    <span style="color:#000;">tokenA</span>
+    <input type="text" style="width: 400px;" v-model="tokenA_2">
+    <br />
+    <span style="color:#000;">tokenB</span>
+    <input type="text" style="width: 400px;" v-model="tokenB_2">
+    <br />
+    <span style="color:#000;">tokensAddress</span>
+    <input type="text" style="width: 400px;" v-model="tokensAddress">
+    <br />
+    <span style="color:#000;">tokenAAmount</span>
+    <input type="text" style="width: 300px;" v-model="tokenAAmount">
+    <input type="text" style="width: 100px;" v-model="tokenAName">
+    <input type="text" style="width: 300px;" v-model="priceA">
+    <br />
+    <span style="color:#000;">tokenBAmount</span>
+    <input type="text" style="width: 300px;" v-model="tokenBAmount">
+    <input type="text" style="width: 100px;" v-model="tokenBName">
+    <input type="text" style="width: 300px;" v-model="priceB">
+    <br />
+    <br />
+    <br />
+    <button style="" @click="checkBuyTokens()">checkBuyTokens</button>===========
+    <button style="" @click="buyTokens()">buyTokens</button>===========
+    <button style="" @click="exchange()">exchange</button>
+    <br />
+    <span style="color:#000;">tokenA</span>
+    <input type="text" style="width: 400px;" v-model="tokenA_3">
+    <br />
+    <span style="color:#000;">tokenB</span>
+    <input type="text" style="width: 400px;" v-model="tokenB_3">
+    <br />
+    <span style="color:#000;">amountA_in</span>
+    <input type="text" v-model="amountA" @click="this.amountA='';this.amountB=''" >
+    <br />
+    <span style="color:#000;">amountB_out</span>
+    <input type="text" v-model="amountB"  @click="this.amountA='';this.amountB=''">
+    <br />
+    <span style="color:#000;">toAddress</span>
+    <input type="text" style="width: 400px;" v-model="buyAddress">
+<br />
+   <!-- <button style="" @click="aaaa()">add token to metaMask</button>
+   <input type="text" v-model="aaa" @click="this.aaa=''"> -->
+</div>
+
+   
+
+
+   
+
+  
+  </div>
+</template>
+
+<script>
+// @ is an alias to /srcf-nav-icon1
+import walletMgr from '../wallet/WalletMgr.js'
+import Erc20 from '../wallet/contract/Erc20'
+import address from '../wallet/Address'
+import uniswapV2Router02 from '../wallet/contract/UniswapV2Router02'
+import UniswapV2Library from '../wallet/contract/UniswapV2Library'
+import { ethers } from 'ethers'
+export default {
+  name: "Home",
+  components: {},
+  data() {
+    return {
+        USDT:"0x563629bA101745864271Bc2cdD6C575Dd68393Fd",
+        MMB:"0xd094FE68Ab1196a644A80a2A5687ed42c7B9d2e9",
+        KIT:"0x975a6eE5B33CB29B0fF5d5F3CE238f31D19643EE",
+        approvalAddress:"",
+        tokenA:"0x563629bA101745864271Bc2cdD6C575Dd68393Fd",
+        tokenB:"0xd094FE68Ab1196a644A80a2A5687ed42c7B9d2e9",
+        amountA:"",
+        amountB:"",
+        liquidityTo:"",
+        liquidityAmount:"",
+        isApproval:"false",
+        tokensAddress:"",
+        tokenAAmount:"",
+        tokenBAmount:"",
+        tokenAName:"",
+        tokenBName:"",
+        priceA:"",
+        priceB:"",
+        tokenA_2:"0x563629bA101745864271Bc2cdD6C575Dd68393Fd",
+        tokenB_2:"0xd094FE68Ab1196a644A80a2A5687ed42c7B9d2e9",
+        tokenA_3:"0x563629bA101745864271Bc2cdD6C575Dd68393Fd",
+        tokenB_3:"0xd094FE68Ab1196a644A80a2A5687ed42c7B9d2e9",
+        buyAddress:"",
+        isTokenA:false,
+    }
+  },
+  methods: {
+    exchange(){
+        let a = this.tokenA_3;
+        this.tokenA_3 = this.tokenB_3
+        this.tokenB_3 = a;
+        a =  this.amountA;
+        this.amountA = this.amountB;
+        this.amountB = a;
+        this.isTokenA = !this.isTokenA
+    },
+    buyTokens(){
+        if(this.isTokenA){
+            uniswapV2Router02.swapExactTokensForTokens(this.amountA,0,[this.tokenA_3,this.tokenB_3],this.buyAddress,100000000000);
+        }else{
+            let amountInMax = ethers.BigNumber.from("10000000000000000000000000")
+            uniswapV2Router02.swapTokensForExactTokens(this.amountB,amountInMax,[this.tokenA_3,this.tokenB_3],this.buyAddress,100000000000);
+        }
+    },
+    checkBuyTokens(){
+        this.isTokenA = false;
+        if(this.tokenA_3 < this.tokenB_3){
+            if (this.amountA != ""){
+                this.isTokenA = true;
+                uniswapV2Router02.getAmountsOut(this.amountA,[this.tokenA_3,this.tokenB_3],(x)=>{
+                    console.log(x);
+                    this.amountB = x.data[1];
+                });
+            }else{
+                uniswapV2Router02.getAmountsIn(this.amountB,[this.tokenA_3,this.tokenB_3],(x)=>{
+                    this.amountA = x.data[0];
+                });
+            }
+        }else{
+            if (this.amountA != ""){
+                this.isTokenA = true;
+                uniswapV2Router02.getAmountsIn(this.amountA,[this.tokenA_3,this.tokenB_3],(x)=>{
+                        this.amountB = x.data[0];
+                });
+            }else{
+                 uniswapV2Router02.getAmountsOut(this.amountB,[this.tokenA_3,this.tokenB_3],(x)=>{
+                    console.log(x);
+                    this.amountA = x.data[1];
+                });
+            }
+        }
+    },
+    addUSDT(){
+        walletMgr.addTokensToMetaMask(this.USDT);
+    },
+    addMMB(){
+        walletMgr.addTokensToMetaMask(this.MMB);
+    },
+    addKIT(){
+        walletMgr.addTokensToMetaMask(this.KIT);
+    },
+    checkAddLiquidity(){
+        UniswapV2Library.getReserves(this.tokenA,this.tokenB,(x)=>{
+            let tokenAAmount = x.data.tokenAAmount;
+            let tokenBAmount = x.data.tokenBAmount;
+            if(this.amountA == ""){
+                UniswapV2Library.quote(this.amountB,tokenBAmount,tokenAAmount,(x)=>{
+                    this.amountA =  x.data;
+                })
+            }else{
+                 UniswapV2Library.quote(this.amountA,tokenAAmount,tokenBAmount,(x)=>{
+                    this.amountB =  x.data;
+                })
+            }
+           
+        })
+    },
+    addLiquidity(){
+        uniswapV2Router02.addLiquidity(this.tokenA,this.tokenB,this.amountA,this.amountB,1000,10000,this.liquidityTo,100000000000000,
+            (x)=>{
+                console.log("fun1:",x);
+            },(x)=>{
+                console.log("fun2:",x);
+                alert(x.code);
+            }
+        )
+    },
+    removeLiquidity(){
+        uniswapV2Router02.removeLiquidity(this.tokenA,this.tokenB,this.liquidityAmount,0,0,this.liquidityTo,100000000000000,
+            (x)=>{
+                console.log("fun1:",x);
+            },(x)=>{
+                console.log("fun2:",x);
+                alert(x.code);
+            }
+        )
+    },
+    setApprovalForAll(){
+        Erc20.setApprovalForAll(this.approvalAddress,address.address.UniswapV2Router02, 
+            (x)=>{
+                console.log("fun1:",x);
+            },(x)=>{
+                console.log("fun2:",x);
+                alert(x.code);
+        })
+    },
+    isApprovalForAll(){
+        this.isApproval = false;
+        Erc20.isApprovalForAll(this.approvalAddress,address.address.UniswapV2Router02,(x)=>{
+            this.isApproval = x.data;
+            console.log("bool:",x);
+        })
+    },
+    async checkoutTokens(){
+        this.tokensAddress = "";
+        this.tokenAAmount = "";
+        this.tokenBAmount = "";
+        UniswapV2Library.pairFor(this.tokenA_2,this.tokenB_2,(x)=>{
+            this.tokensAddress = x.data;
+        })
+        UniswapV2Library.getReserves(this.tokenA_2,this.tokenB_2,(x)=>{
+            this.tokenAAmount = x.data.tokenAAmount;
+            this.tokenBAmount = x.data.tokenBAmount;
+            this.priceA = ethers.FixedNumber.fromValue(this.tokenBAmount,2).divUnsafe( ethers.FixedNumber.fromValue(this.tokenAAmount,2))
+            this.priceB = ethers.FixedNumber.fromValue(this.tokenAAmount,2).divUnsafe( ethers.FixedNumber.fromValue(this.tokenBAmount,2))
+        })
+          
+        let info = await Erc20.getTokenInfo(this.tokenA_2);
+        this.tokenAName =  info.symbol+"   "+info.decimals
+        info = await Erc20.getTokenInfo(this.tokenB_2);
+        this.tokenBName =  info.symbol+"   "+info.decimals
+        console.log(this.tokenBName)
+
+    },
+  },
+  beforeDestroy() {
+
+  },
+  mounted() {
+   
+  },
+};
+</script>
+<style lang="less">
+
+</style>

+ 2 - 2
src/wallet/Address.js

@@ -1,8 +1,8 @@
 var address ={
-    //正式服地址
+    //address
 
 
-    //测试地址
+    //test address
     MMB                     :'0x563629bA101745864271Bc2cdD6C575Dd68393Fd',
     WETH                    :'0x1083D982756027A03976e3e3EBA1A346E9b29297',
     USDT                    :'0x563629bA101745864271Bc2cdD6C575Dd68393Fd',

+ 0 - 3
src/wallet/BinanceChain.js

@@ -5,7 +5,6 @@ let bscConnector;
 let isRegister = false;
 let CodeEnum;
 let walletMgr;
-// 初始钱包状态
 
 async function init(_walletMgr,fun){
     walletMgr = _walletMgr;
@@ -23,7 +22,6 @@ async function init(_walletMgr,fun){
     connectWallectAccount(fun)
 }
 
-// 连接钱包 获取登录信息   
 async function connectWallectAccount(fun){
     
     let act = await bscConnector.activate();
@@ -56,7 +54,6 @@ function close(){
     
 }
 
-
 function onDisConnect(e){
 
     EventDispatcher.Dispatch(EventDispatcher.Enum.loginOut);

+ 5 - 5
src/wallet/EventDispatcher.js

@@ -5,11 +5,11 @@ var _enum = {
     disconnect_wallet :"disconnect_wallet",
     connectt_wallet : "connectt_wallet",
     accountsChanged_wallet : "accountsChanged_wallet",
-    buyCatNft_wallet:"buyCatNft_wallet",                    //官网购买成功
-    createSaleCatNft_wallet:"createSaleCatNft_wallet",      //创建售卖成功
-    saleSuccessful_wallet:"saleSuccessful_wallet",          //上架售卖成功
-    saleCancelled_wallet:"saleCancelled_wallet",            //取消售卖成功
-    tokenInvalid :"tokenInvalid",               // token失效
+    buyCatNft_wallet:"buyCatNft_wallet",                    
+    createSaleCatNft_wallet:"createSaleCatNft_wallet",     
+    saleSuccessful_wallet:"saleSuccessful_wallet",          
+    saleCancelled_wallet:"saleCancelled_wallet",           
+    tokenInvalid :"tokenInvalid",               
     loginOut:"loginOut",   
 }
 export default {

+ 1 - 1
src/wallet/WalletMgr.js

@@ -31,7 +31,7 @@ let chainTab = {
     }],
     Rinkeby: [{
         chainId: "0x4", // A 0x-prefixed hexadecimal string
-        chainName: "Rinkeby 测试网络",
+        chainName: "Rinkeby Test",
         nativeCurrency: {
             name: "ETH",
             symbol: "ETH", // 2-6 characters long