spacefiswap.mjs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import Web3, { eth } from "web3";
  2. import { BigNumber } from "bignumber.js";
  3. import { Wallet, Provider } from "zksync-web3";
  4. import { ethers } from "ethers";
  5. import spacefiRouterAbi from "./spacefiRouterAbi.json" assert { type: "json" };
  6. import mutePairAbi from "./mutePairAbi.json" assert { type: "json" };
  7. const rpc = "https://zksync2-testnet.zksync.dev/";
  8. const privateKey = "0xd768b0b3f8dedcb465ad680268453391f7da6ec4e1942a13fdfcdea8773aab3e";
  9. const spaceFiRouterAddress = "0x6eeF3310E09DF3aa819Cc2aa364D4f3Ad2E6fFe3";
  10. const usdcAddress = "0x0faF6df7054946141266420b43783387A78d82A9";
  11. const provider = new Provider(rpc);
  12. const wallet = new Wallet(privateKey).connect(provider);
  13. const web3 = new Web3(new Web3.providers.HttpProvider(rpc));
  14. const value = ethers.utils.parseEther("0.001");
  15. const spacefiRouter = new web3.eth.Contract(spacefiRouterAbi, spaceFiRouterAddress);
  16. const wethAddress = await spacefiRouter.methods.WETH().call();
  17. console.log(`wethAddress: ${wethAddress}`);
  18. const swap = spacefiRouter.methods.swapExactETHForTokens(
  19. "0",
  20. [wethAddress, usdcAddress],
  21. wallet.address,
  22. Math.floor(new Date().getTime() / 1000 + 60 * 30) + "",
  23. [false]
  24. );
  25. const gasLimit = await swap.estimateGas({
  26. from: wallet.address,
  27. value: value.toHexString(),
  28. });
  29. console.log(`gasLimit: ${gasLimit}`);
  30. const tx = await wallet.sendTransaction({
  31. to: spaceFiRouterAddress,
  32. data: swap.encodeABI(),
  33. value: value.toHexString(),
  34. gasLimit,
  35. });
  36. console.log(tx);