xiongzhu 2 سال پیش
والد
کامیت
ca8d9f7205
4فایلهای تغییر یافته به همراه116 افزوده شده و 7 حذف شده
  1. 2 2
      approve.mjs
  2. 54 0
      spacefiaddliquidity.mjs
  3. 56 0
      spacefiremovelliquidity.mjs
  4. 4 5
      spacefiswap.mjs

+ 2 - 2
approve.mjs

@@ -6,8 +6,8 @@ import { ethers } from "ethers";
 
 const rpc = "https://zksync2-testnet.zksync.dev/";
 const privateKey = "0xd768b0b3f8dedcb465ad680268453391f7da6ec4e1942a13fdfcdea8773aab3e";
-const tokenAddress = "0x0faF6df7054946141266420b43783387A78d82A9";
-const spender = "0x96c2Cf9edbEA24ce659EfBC9a6e3942b7895b5e8";
+const tokenAddress = "0xB2bAbfBBB09A17Fb38cBc7E793B18078dd241347";
+const spender = "0x6eeF3310E09DF3aa819Cc2aa364D4f3Ad2E6fFe3";
 
 const provider = new Provider(rpc);
 const wallet = new Wallet(privateKey).connect(provider);

+ 54 - 0
spacefiaddliquidity.mjs

@@ -0,0 +1,54 @@
+import Web3, { eth } from "web3";
+import { BigNumber } from "bignumber.js";
+import { Wallet, Provider } from "zksync-web3";
+import { ethers } from "ethers";
+import spacefiRouterAbi from "./spacefiRouterAbi.json" assert { type: "json" };
+import spacefiFactoryAbi from "./spacefiFactoryAbi.json" assert { type: "json" };
+import spacefiPairAbi from "./spacefiPairAbi.json" assert { type: "json" };
+
+const rpc = "https://zksync2-testnet.zksync.dev/";
+const privateKey = "0xd768b0b3f8dedcb465ad680268453391f7da6ec4e1942a13fdfcdea8773aab3e";
+const spaceFiRouterAddress = "0x6eeF3310E09DF3aa819Cc2aa364D4f3Ad2E6fFe3";
+const usdcAddress = "0x0faF6df7054946141266420b43783387A78d82A9";
+
+const provider = new Provider(rpc);
+const wallet = new Wallet(privateKey).connect(provider);
+const web3 = new Web3(new Web3.providers.HttpProvider(rpc));
+
+const value = ethers.utils.parseEther("0.001");
+const spacefiRouter = new web3.eth.Contract(spacefiRouterAbi, spaceFiRouterAddress);
+const wethAddress = await spacefiRouter.methods.WETH().call();
+console.log(`wethAddress: ${wethAddress}`);
+const d = ethers.BigNumber.from(usdcAddress).gt(ethers.BigNumber.from(wethAddress));
+const inputToken = "eth";
+const inputEth = inputToken === "eth";
+console.log(`d: ${d}`);
+const factoryAddress = await spacefiRouter.methods.factory().call();
+console.log(`factoryAddress: ${factoryAddress}`);
+const factory = new web3.eth.Contract(spacefiFactoryAbi, factoryAddress);
+const pairAddress = await factory.methods.getPair(wethAddress, usdcAddress).call();
+console.log(`pairAddress: ${pairAddress}`);
+const pair = new web3.eth.Contract(spacefiPairAbi, pairAddress);
+const reserves = await pair.methods.getReserves().call();
+const amountOut = await spacefiRouter.methods
+    .quote(value.toHexString(), d ^ inputEth ? reserves[1] : reserves[0], d ^ inputEth ? reserves[0] : reserves[1])
+    .call();
+console.log(`out: ${ethers.utils.formatUnits(amountOut, 6)}`);
+
+const addLiquidity = await spacefiRouter.methods.addLiquidityETH(
+    usdcAddress,
+    amountOut,
+    0,
+    0,
+    wallet.address,
+    Math.floor(new Date().getTime() / 1000 + 60 * 30) + ""
+);
+const gasLimit = await addLiquidity.estimateGas({ from: wallet.address, value: value.toHexString() });
+console.log(`gasLimit: ${gasLimit}`);
+const tx = await wallet.sendTransaction({
+    to: spaceFiRouterAddress,
+    data: addLiquidity.encodeABI(),
+    value: value.toHexString(),
+    gasLimit,
+});
+console.log(tx);

+ 56 - 0
spacefiremovelliquidity.mjs

@@ -0,0 +1,56 @@
+import Web3, { eth } from "web3";
+import { BigNumber } from "bignumber.js";
+import { Wallet, Provider } from "zksync-web3";
+import { ethers } from "ethers";
+import spacefiRouterAbi from "./spacefiRouterAbi.json" assert { type: "json" };
+import spacefiFactoryAbi from "./spacefiFactoryAbi.json" assert { type: "json" };
+import spacefiPairAbi from "./spacefiPairAbi.json" assert { type: "json" };
+
+const rpc = "https://zksync2-testnet.zksync.dev/";
+const privateKey = "0xd768b0b3f8dedcb465ad680268453391f7da6ec4e1942a13fdfcdea8773aab3e";
+const spaceFiRouterAddress = "0x6eeF3310E09DF3aa819Cc2aa364D4f3Ad2E6fFe3";
+const usdcAddress = "0x0faF6df7054946141266420b43783387A78d82A9";
+
+const provider = new Provider(rpc);
+const wallet = new Wallet(privateKey).connect(provider);
+const web3 = new Web3(new Web3.providers.HttpProvider(rpc));
+
+const value = ethers.utils.parseEther("0.001");
+const spacefiRouter = new web3.eth.Contract(spacefiRouterAbi, spaceFiRouterAddress);
+const wethAddress = await spacefiRouter.methods.WETH().call();
+console.log(`wethAddress: ${wethAddress}`);
+const d = ethers.BigNumber.from(usdcAddress).gt(ethers.BigNumber.from(wethAddress));
+const inputToken = "eth";
+const inputEth = inputToken === "eth";
+console.log(`d: ${d}`);
+const factoryAddress = await spacefiRouter.methods.factory().call();
+console.log(`factoryAddress: ${factoryAddress}`);
+const factory = new web3.eth.Contract(spacefiFactoryAbi, factoryAddress);
+const pairAddress = await factory.methods.getPair(wethAddress, usdcAddress).call();
+console.log(`pairAddress: ${pairAddress}`);
+const pair = new web3.eth.Contract(spacefiPairAbi, pairAddress);
+const reserves = await pair.methods.getReserves().call();
+const amountOut = await spacefiRouter.methods
+    .quote(value.toHexString(), d ^ inputEth ? reserves[1] : reserves[0], d ^ inputEth ? reserves[0] : reserves[1])
+    .call();
+console.log(`out: ${ethers.utils.formatUnits(amountOut, 6)}`);
+
+const liquidity = await pair.methods.balanceOf(wallet.address).call();
+console.log(`liquidity: ${liquidity}`);
+
+const removeLiquidity = await spacefiRouter.methods.removeLiquidityETH(
+    usdcAddress,
+    liquidity,
+    0,
+    0,
+    wallet.address,
+    Math.floor(new Date().getTime() / 1000 + 60 * 30)
+);
+const gasLimit = await removeLiquidity.estimateGas({ from: wallet.address });
+console.log(`gasLimit: ${gasLimit}`);
+const tx = await wallet.sendTransaction({
+    to: spaceFiRouterAddress,
+    data: removeLiquidity.encodeABI(),
+    gasLimit,
+});
+console.log(tx);

+ 4 - 5
spacefiswap.mjs

@@ -2,7 +2,7 @@ import Web3, { eth } from "web3";
 import { BigNumber } from "bignumber.js";
 import { Wallet, Provider } from "zksync-web3";
 import { ethers } from "ethers";
-import muteRouterAbi from "./muteRouterAbi.json" assert { type: "json" };
+import spacefiRouterAbi from "./spacefiRouterAbi.json" assert { type: "json" };
 import mutePairAbi from "./mutePairAbi.json" assert { type: "json" };
 
 const rpc = "https://zksync2-testnet.zksync.dev/";
@@ -15,11 +15,10 @@ const wallet = new Wallet(privateKey).connect(provider);
 const web3 = new Web3(new Web3.providers.HttpProvider(rpc));
 
 const value = ethers.utils.parseEther("0.001");
-const muteRouter = new web3.eth.Contract(muteRouterAbi, spaceFiRouterAddress);
-const wethAddress = await muteRouter.methods.WETH().call();
+const spacefiRouter = new web3.eth.Contract(spacefiRouterAbi, spaceFiRouterAddress);
+const wethAddress = await spacefiRouter.methods.WETH().call();
 console.log(`wethAddress: ${wethAddress}`);
-
-const swap = muteRouter.methods.swapExactETHForTokens(
+const swap = spacefiRouter.methods.swapExactETHForTokens(
     "0",
     [wethAddress, usdcAddress],
     wallet.address,