Browse Source

optimism nft完成。

skyfffire 2 years ago
parent
commit
4e8c9cba36
4 changed files with 119 additions and 282 deletions
  1. 0 1
      abi/CLAIM.json
  2. 4 4
      scripts/scroll/flush-state.js
  3. 115 0
      scripts/scroll/optimism-decent.js
  4. 0 277
      scripts/scroll/scroll-network.js

File diff suppressed because it is too large
+ 0 - 1
abi/CLAIM.json


+ 4 - 4
scripts/scroll/flush-state.js

@@ -1,11 +1,11 @@
 const WalletLib = require("../lib/wallet-lib");
 
 async function main() {
-  // for (let i = 0; i < 99; i++) {
-  //   await WalletLib.updateWalletState(i, 0)
-  // }
+  for (let i = 0; i < 99; i++) {
+    await WalletLib.updateWalletState(i, 0)
+  }
 
-  await WalletLib.updateWalletState(89, 3)
+  // await WalletLib.updateWalletState(89, 3)
 }
 
 main().catch((error) => {

+ 115 - 0
scripts/scroll/optimism-decent.js

@@ -0,0 +1,115 @@
+const ChainLib = require("../lib/chain-lib");
+const logger = require("../../utils/logger");
+const secretConfig = require("../../.secret-config.js")
+const AccountLib = require("../lib/account-lib");
+const WalletLib = require("../lib/wallet-lib");
+const Time = require("../../utils/time");
+const Web3 = require("web3");
+const {isDev} = require("../../utils/debug");
+const Web3HttpProvider = require('web3-providers-http')
+const { SocksProxyAgent } = require('socks-proxy-agent')
+
+// 状态-方法映射器
+const stateFunctionArray = [
+  shareEthToWallet,
+  claim,
+  Time.delay
+]
+
+// 分发GoerliETH给指定账户
+async function shareEthToWallet(goerli, scroll, gWallet, sWallet) {
+  const value = goerli.web3.utils.toWei('0.0005')
+
+  return (await AccountLib.transfer(goerli.web3, goerli.mainWallet, gWallet.address, value, 21000))
+}
+
+// 领取测试usdc
+async function claim(goerli, scroll, gWallet, sWallet) {
+  const claimAbi = require('../../abi/CLAIM.json')
+  const claimAddr = '0x6a886C76693Ed6f4319a289e3FE2e670b803a2Da'
+  const claimContract = new scroll.web3.eth.Contract(claimAbi, claimAddr)
+
+  // 0x40c10f19000000000000000000000000cfb3cb29eeae464abd44e35d53e12c555705e8240000000000000000000000000000000000000000000000000000000000000001
+  const claimData = claimContract.methods.mint(sWallet.address, 1).encodeABI()
+
+  return (await AccountLib.call(scroll.web3, sWallet, claimAddr, 0, claimData))
+}
+
+async function logicHandler(goerli, scroll, targetIndex) {
+  const walletDb = await WalletLib.readWallet(targetIndex)
+  const gWallet = goerli.web3.eth.accounts.privateKeyToAccount(walletDb.privateKey)
+  const sWallet = scroll.web3.eth.accounts.privateKeyToAccount(walletDb.privateKey)
+  const fun = stateFunctionArray[walletDb.state]
+
+  if (walletDb.state >= stateFunctionArray.length - 1) {
+    logger.info(`index: ${targetIndex} addr: ${gWallet.address} step: ${walletDb.state} break.`)
+
+    return true
+  }
+
+  try {
+    logger.info(`index: ${targetIndex} addr: ${gWallet.address} step: ${walletDb.state}(${fun.name}).`)
+    const callRst = await fun(goerli, scroll, gWallet, sWallet)
+    await WalletLib.updateWalletState(targetIndex, walletDb.state+1)
+    logger.info(callRst.transactionHash)
+  } catch (e) {
+    logger.error(walletDb.privateKey)
+    logger.error(e)
+  }
+
+  return false
+}
+
+async function main() {
+  const options = {
+    keepAlive: true,
+    timeout: 10000
+  }
+
+  if (isDev()) {
+    options.agent = {
+      http: new SocksProxyAgent('socks5h://127.0.0.1:9080'),
+      https: new SocksProxyAgent('socks5h://127.0.0.1:9080')
+    }
+  }
+
+  const goerliChain = await ChainLib.parseChainById(10)
+  const goerliProvider = new Web3HttpProvider(goerliChain.http, options)
+  const goerliWeb3 = new Web3(goerliProvider)
+  const goerliWallet = goerliWeb3.eth.accounts.privateKeyToAccount(secretConfig.privateKey)
+  const goerli = {
+    chain: goerliChain,
+    web3: goerliWeb3,
+    mainWallet: goerliWallet
+  }
+
+  const scrollChain = await ChainLib.parseChainById(10)
+  const scrollProvider = new Web3HttpProvider(scrollChain.http, options)
+  const scrollWeb3 = new Web3(scrollProvider)
+  const scrollWallet = scrollWeb3.eth.accounts.privateKeyToAccount(secretConfig.privateKey)
+  const scroll = {
+    chain: scrollChain,
+    web3: scrollWeb3,
+    mainWallet: scrollWallet
+  }
+
+  logger.info(goerliChain.http, scrollChain.http)
+  logger.info(await goerliWeb3.eth.getBlockNumber(), await scrollWeb3.eth.getBlockNumber())
+
+  for (let i = 0; i < secretConfig.walletMax; i++) {
+    if (i >= 150) return
+
+    while (true) {
+      if (await logicHandler(goerli, scroll, i)) {
+        break
+      }
+
+      await Time.delay(5000)
+    }
+  }
+}
+
+main().catch((error) => {
+  console.error(error);
+  process.exitCode = 1;
+})

+ 0 - 277
scripts/scroll/scroll-network.js

@@ -1,277 +0,0 @@
-const ChainLib = require("../lib/chain-lib");
-const logger = require("../../utils/logger");
-const secretConfig = require("../../.secret-config.js")
-const AccountLib = require("../lib/account-lib");
-const WalletLib = require("../lib/wallet-lib");
-const Time = require("../../utils/time");
-const Web3 = require("web3");
-const {isDev} = require("../../utils/debug");
-const Web3HttpProvider = require('web3-providers-http')
-const { SocksProxyAgent } = require('socks-proxy-agent')
-
-// 状态-方法映射器
-const stateFunctionArray = [
-  shareGoerliToWallet,
-  proxyGoerliToScroll,
-  recoveryGoerliEthToWallet,
-  proxyScrollToGoerli,
-  // claimUSDC,
-  swapWETH,
-  approve,
-  addLiquidity,
-  removeLiquidity,
-  shareScrollEth,
-  Time.delay
-]
-
-// 分发GoerliETH给指定账户
-async function shareGoerliToWallet(goerli, scroll, gWallet, sWallet) {
-  const value = goerli.web3.utils.toWei('0.4')
-
-  return (await AccountLib.transfer(goerli.web3, goerli.mainWallet, gWallet.address, value, 21000))
-}
-
-// Goerli ETH跨链Scroll Alpha Testnet
-async function proxyGoerliToScroll(goerli, scroll, gWallet, sWallet) {
-  const inProxyAbi = require('../../abi/IN_PROXY.json')
-  const inProxyAddr = '0xe5e30e7c24e4dfcb281a682562e53154c15d3332'
-  const inProxyContract = new goerli.web3.eth.Contract(inProxyAbi, inProxyAddr)
-
-  const inAmount = goerli.web3.utils.toWei('0.05')
-  const value = goerli.web3.utils.toWei('0.10')
-  const gasLimit = 40000
-  const inProxyData = inProxyContract.methods.depositETH(inAmount, gasLimit).encodeABI()
-
-  return (await AccountLib.call(goerli.web3, gWallet, inProxyAddr, value, inProxyData))
-}
-
-async function recoveryGoerliEthToWallet(goerli, scroll, gWallet, sWallet) {
-  const value = await goerli.web3.eth.getBalance(gWallet.address) - 1e16
-
-  return (await AccountLib.transfer(goerli.web3, gWallet, goerli.mainWallet.address, value, 21000))
-}
-
-// Scroll Alpha Testne跨链Goerli ETH
-async function proxyScrollToGoerli(goerli, scroll, gWallet, sWallet) {
-  const outProxyAbi = require('../../abi/OUT_PROXY.json')
-  const outProxyAddr = '0x6d79Aa2e4Fbf80CF8543Ad97e294861853fb0649'
-  const outProxyContract = new scroll.web3.eth.Contract(outProxyAbi, outProxyAddr)
-
-  const outAmount = scroll.web3.utils.toWei('0.001')
-  const value = scroll.web3.utils.toWei('0.04')
-  const gasLimit = 160000
-  const outProxyData = outProxyContract.methods.withdrawETH(outAmount, gasLimit).encodeABI()
-
-  return (await AccountLib.call(scroll.web3, sWallet, outProxyAddr, value, outProxyData))
-}
-
-
-// 领取测试usdc
-async function claimUSDC(goerli, scroll, gWallet, sWallet) {
-  const claimAbi = require('../../abi/CLAIM.json')
-  const claimAddr = '0xeF71Ddc12Bac8A2ba0b9068b368189FFa2628942'
-  const claimContract = new scroll.web3.eth.Contract(claimAbi, claimAddr)
-
-  const claimData = claimContract.methods.claim().encodeABI()
-
-  return (await AccountLib.call(scroll.web3, sWallet, claimAddr, 0, claimData))
-}
-
-// 兑换WETH
-async function swapWETH(goerli, scroll, gWallet, sWallet) {
-  const contractAbi = require('../../abi/WETH.json')
-  const contractAddr = '0xa1EA0B2354F5A344110af2b6AD68e75545009a03'
-  const contract = new scroll.web3.eth.Contract(contractAbi, contractAddr)
-  const value = scroll.web3.utils.toWei('0.01')
-  const data = contract.methods.deposit().encodeABI()
-
-  return (await AccountLib.call(scroll.web3, sWallet, contractAddr, value, data))
-}
-
-async function approve(goerli, scroll, gWallet, sWallet) {
-  const weth = '0xa1EA0B2354F5A344110af2b6AD68e75545009a03'
-  const usdc = '0xA0D71B9877f44C744546D649147E3F1e70a93760'
-  const value = 0
-  const data = '0x095ea7b3000000000000000000000000bd1a5920303f45d628630e88afbaf012ba078f37ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'
-
-  await AccountLib.call(scroll.web3, sWallet, weth, value, data)
-
-  return await AccountLib.call(scroll.web3, sWallet, usdc, value, data)
-}
-
-// 添加WETH和USDC的LP池子
-async function addLiquidity(goerli, scroll, gWallet, sWallet) {
-  const contractAbi = require('../../abi/UNIV3_POS.json')
-  const contractAddr = '0xbd1A5920303F45d628630E88aFbAF012bA078F37'
-  const contract = new scroll.web3.eth.Contract(contractAbi, contractAddr)
-  const value = 0
-
-  const token0 = '0xa0d71b9877f44c744546d649147e3f1e70a93760'
-  const token1 = '0xa1EA0B2354F5A344110af2b6AD68e75545009a03'
-  const fee = 500
-  const tickLower = -887270
-  const tickUpper = 887270
-  const amount0Des = '0xbf36c0c00dd351b9'
-  const amount1Des = "0x9184e72a000"
-  const amount0Min = '0x1'
-  const amount1Min = '0x1'
-  const recipient = sWallet.address
-  const deadline = 1689365795
-
-  const data = contract.methods
-    .mint([token0, token1, fee, tickLower, tickUpper,
-      amount0Des, amount1Des, amount0Min, amount1Min,
-      recipient, deadline])
-    .encodeABI()
-
-  return (await AccountLib.call(scroll.web3, sWallet, contractAddr, value, data))
-}
-
-// 去除流动池百分比
-async function removeLiquidity(goerli, scroll, gWallet, sWallet) {
-  const contractAbi = require('../../abi/UNIV3_POS.json')
-  const contractAddr = '0xbd1A5920303F45d628630E88aFbAF012bA078F37'
-  const contract = new scroll.web3.eth.Contract(contractAbi, contractAddr)
-  const value = 0
-
-  let lastPosition = await contract.methods.tokenOfOwnerByIndex(sWallet.address, 0).call()
-  for (let positionIndex = 0; positionIndex < 100; positionIndex++) {
-    try {
-      lastPosition = await contract.methods.tokenOfOwnerByIndex(sWallet.address, positionIndex).call()
-    } catch (e) {
-      logger.info(`addr: ${sWallet.address}, position index: ${positionIndex}.`)
-      break
-    }
-  }
-  const tempHex = contract.methods.tokenOfOwnerByIndex(sWallet.address, lastPosition).encodeABI()
-
-  const addrHex = tempHex.slice(10, 10+64)
-  const positionHex = tempHex.slice(10+64, 10+64+64)
-
-  const data = '0xac9650d8'
-    .concat('0000000000000000000000000000000000000000000000000000000000000020')
-    .concat('0000000000000000000000000000000000000000000000000000000000000004')
-    .concat('0000000000000000000000000000000000000000000000000000000000000080')
-    .concat('0000000000000000000000000000000000000000000000000000000000000160')
-    .concat('0000000000000000000000000000000000000000000000000000000000000220')
-    .concat('00000000000000000000000000000000000000000000000000000000000002a0')
-    .concat('00000000000000000000000000000000000000000000000000000000000000a4')
-    .concat('0c49ccbe')
-    .concat(positionHex) // position,tokenId
-    .concat('0000000000000000000000000000000000000000000000000010540af5a6bdf1') // liquidity
-    .concat('0000000000000000000000000000000000000000000000001e2cbb2290f23b5a') // amount0Min
-    .concat('0000000000000000000000000000000000000000000000000000024dda5297e5') // amount1Min
-    .concat('0000000000000000000000000000000000000000000000000000000065b1ad23') // deadline
-    .concat('0000000000000000000000000000000000000000000000000000000000000000')
-    .concat('00000000000000000000000000000000000000000000000000000084')
-    .concat('fc6f7865')
-    .concat(positionHex) // position,tokenId
-    .concat('0000000000000000000000000000000000000000000000000000000000000000')
-    .concat('00000000000000000000000000000000ffffffffffffffffffffffffffffffff')
-    .concat('00000000000000000000000000000000ffffffffffffffffffffffffffffffff')
-    .concat('0000000000000000000000000000000000000000000000000000000000000000')
-    .concat('0000000000000000000000000000000000000000000000000000004449404b7c')
-    .concat('000000000000000000000000000000000000000000000000000002361b66490d')
-    .concat(addrHex) // addr
-    .concat('0000000000000000000000000000000000000000000000000000000000000000')
-    .concat('00000000000000000000000000000000000000000000000000000064df2ab5bb')
-    .concat('000000000000000000000000a0d71b9877f44c744546d649147e3f1e70a93760')
-    .concat('0000000000000000000000000000000000000000000000000dae9cd55a8bd739')
-    .concat(addrHex) // addr
-    .concat('00000000000000000000000000000000000000000000000000000000')
-
-  return (await AccountLib.call(scroll.web3, sWallet, contractAddr, value, data))
-}
-
-// Scroll Alpha Testnet ETH转给好友
-async function shareScrollEth(goerli, scroll, gWallet, sWallet) {
-  const value = scroll.web3.utils.toWei('0.0015')
-
-  return (await AccountLib.transfer(scroll.web3, sWallet, scroll.mainWallet.address, value, 21000))
-}
-
-async function logicHandler(goerli, scroll, targetIndex) {
-  const walletDb = await WalletLib.readWallet(targetIndex)
-  const gWallet = goerli.web3.eth.accounts.privateKeyToAccount(walletDb.privateKey)
-  const sWallet = scroll.web3.eth.accounts.privateKeyToAccount(walletDb.privateKey)
-  const fun = stateFunctionArray[walletDb.state]
-
-  if (walletDb.state >= stateFunctionArray.length - 1) {
-    logger.info(`index: ${targetIndex} addr: ${gWallet.address} step: ${walletDb.state} break.`)
-
-    return true
-  }
-
-  try {
-    logger.info(`index: ${targetIndex} addr: ${gWallet.address} step: ${walletDb.state}(${fun.name}).`)
-    const callRst = await fun(goerli, scroll, gWallet, sWallet)
-    await WalletLib.updateWalletState(targetIndex, walletDb.state+1)
-    logger.info(callRst.transactionHash)
-  } catch (e) {
-    logger.error(walletDb.privateKey)
-    logger.error(e)
-  }
-
-  return false
-}
-
-async function main() {
-  const options = {
-    keepAlive: true,
-    timeout: 10000
-  }
-
-  if (isDev()) {
-    options.agent = {
-      http: new SocksProxyAgent('socks5h://127.0.0.1:9080'),
-      https: new SocksProxyAgent('socks5h://127.0.0.1:9080')
-    }
-  }
-
-  const goerliChain = await ChainLib.parseChainById(5)
-  const goerliProvider = new Web3HttpProvider(goerliChain.http, options)
-  const goerliWeb3 = new Web3(goerliProvider)
-  const goerliWallet = goerliWeb3.eth.accounts.privateKeyToAccount(secretConfig.privateKey)
-  const goerli = {
-    chain: goerliChain,
-    web3: goerliWeb3,
-    mainWallet: goerliWallet
-  }
-
-  const scrollChain = await ChainLib.parseChainById(534353)
-  const scrollProvider = new Web3HttpProvider(scrollChain.http, options)
-  const scrollWeb3 = new Web3(scrollProvider)
-  const scrollWallet = scrollWeb3.eth.accounts.privateKeyToAccount(secretConfig.privateKey)
-  const scroll = {
-    chain: scrollChain,
-    web3: scrollWeb3,
-    mainWallet: scrollWallet
-  }
-
-  logger.info(goerliChain.http, scrollChain.http)
-  logger.info(await goerliWeb3.eth.getBlockNumber(), await scrollWeb3.eth.getBlockNumber())
-
-  // logger.info(await claimUSDC(goerli, scroll, goerliWallet, scrollWallet))
-  // logger.info(await swapWETH(goerli, scroll, goerliWallet, scrollWallet))
-  // logger.info(await approve(goerli, scroll, goerliWallet, scrollWallet))
-  // logger.info(await addLiquidity(goerli, scroll, goerliWallet, scrollWallet))
-
-  // logger.info(await removeLiquidity(goerli, scroll, goerliWallet, scrollWallet))
-
-  for (let i = 0; i < secretConfig.walletMax; i++) {
-    if (i >= 100) return
-
-    while (true) {
-      if (await logicHandler(goerli, scroll, i)) {
-        break
-      }
-
-      await Time.delay(1000)
-    }
-  }
-}
-
-main().catch((error) => {
-  console.error(error);
-  process.exitCode = 1;
-})

Some files were not shown because too many files changed in this diff