소스 검색

只差过滤了

skyfffire 3 년 전
부모
커밋
ab9efabe16
1개의 변경된 파일81개의 추가작업 그리고 2개의 파일을 삭제
  1. 81 2
      scripts/calcLevel2Path.ts

+ 81 - 2
scripts/calcLevel2Path.ts

@@ -2,13 +2,92 @@ import { web3 } from "hardhat";
 import swapPath from "./interface/swapPath";
 import logger from "../utils/logger";
 
+function filterPool(pool: any) {
+  return true
+}
+
+function handleSamePools(poolList: any[], pathList: any[]) {
+  for (let poolIndexI = 0; poolIndexI < poolList.length; poolIndexI++) {
+    const x = poolList[poolIndexI]
+    if (!filterPool(x)) continue
+
+    for (let poolIndexJ = poolIndexI + 1; poolIndexJ < poolList.length; poolIndexJ++) {
+      const y = poolList[poolIndexJ]
+      if (!filterPool(y)) continue
+
+      pathList.push([x, y])
+    }
+  }
+}
+
 async function main() {
   logger.debug('start loading...')
   const v2PoolList = require('../config/v2PoolList.json')
   const v3PoolList = require('../config/v3PoolList.json')
 
-  logger.debug(v2PoolList.length)
-  logger.debug(v3PoolList.length)
+  logger.debug('start filter...')
+  const checkedPath: any = {}
+  for (let v2PoolIndex = 0; v2PoolIndex < v2PoolList.length; v2PoolIndex++) {
+    const v2Pool = v2PoolList[v2PoolIndex]
+    v2Pool.type = 'v2'
+
+    // 已经查过的sum不再查询
+    if (checkedPath[v2Pool.sum2] != null) continue
+    checkedPath[v2Pool.sum2] = []
+
+    // 开始排查
+    const sameSumPoolList = [v2Pool]
+    // 排查v2的,从当前位置开始,以免重复path
+    for (let findSameSumV2Index = v2PoolIndex + 1; findSameSumV2Index < v2PoolList.length; findSameSumV2Index++) {
+      const v2PoolUnChecked = v2PoolList[findSameSumV2Index]
+      // 同sumValue
+      if (v2PoolUnChecked.sum2 == v2Pool.sum2) {
+        v2PoolUnChecked.type = 'v2'
+        sameSumPoolList.push(v2PoolUnChecked)
+      }
+    }
+    // 排查v3的,从0开始
+    for (let findSameSumV3Index = 0; findSameSumV3Index < v3PoolList.length; findSameSumV3Index++) {
+      const v3PoolUnChecked = v3PoolList[findSameSumV3Index]
+      // 同sumValue
+      if (v3PoolUnChecked.sum2 == v2Pool.sum2) {
+        v3PoolUnChecked.type = 'v3'
+        sameSumPoolList.push(v3PoolUnChecked)
+      }
+    }
+
+    if (sameSumPoolList.length > 1) {
+      handleSamePools(sameSumPoolList, checkedPath[v2Pool.sum2])
+      await swapPath.appendOrUpdate(v2Pool.sum2, '2', checkedPath[v2Pool.sum2])
+    }
+  }
+  // 处理v3的
+  for (let v3PoolIndex = 0; v3PoolIndex < v3PoolList.length; v3PoolIndex++) {
+    const v3Pool = v3PoolList[v3PoolIndex]
+    v3Pool.type = 'v3'
+
+    // 已经查过的sum不再查询
+    if (checkedPath[v3Pool.sum2] != null) continue
+    checkedPath[v3Pool.sum2] = []
+
+    // 开始排查
+    const sameSumPoolList = [v3Pool]
+    // 排查v3的,从v3PoolIndex开始
+    for (let findSameSumV3Index = v3PoolIndex + 1; findSameSumV3Index < v3PoolList.length; findSameSumV3Index++) {
+      const v3PoolUnChecked = v3PoolList[findSameSumV3Index]
+      // 同sumValue
+      if (v3PoolUnChecked.sum2 == v3Pool.sum2) {
+        v3PoolUnChecked.type = 'v3'
+        sameSumPoolList.push(v3PoolUnChecked)
+      }
+    }
+
+    if (sameSumPoolList.length > 1) {
+      handleSamePools(sameSumPoolList, checkedPath[v3Pool.sum2])
+      await swapPath.appendOrUpdate(v3Pool.sum2, '2', checkedPath[v3Pool.sum2])
+    }
+  }
+  logger.debug('query ok.')
 }
 
 main().catch((error) => {