龚成明 пре 2 година
родитељ
комит
e6b080bb41
7 измењених фајлова са 56 додато и 15 уклоњено
  1. 26 0
      libs/one-task.js
  2. 10 5
      libs/task.js
  3. 4 4
      libs/web3/1inch.js
  4. 4 4
      libs/web3/dodo.js
  5. 0 0
      libs/web3/pancake.js
  6. 2 2
      scripts/1.index.js
  7. 10 0
      scripts/monitors/price-monitor.js

+ 26 - 0
libs/one-task.js

@@ -0,0 +1,26 @@
+const OneTask = require('./task')
+const Context = require("./context");
+const Config = require("../config/config");
+const BinanceSpot = require("./binance/binance-spot");
+const BinanceKit = require("./binance/binance-kit");
+const IERC20 = require("./web3/ierc20-token");
+const Token = require("./token");
+
+OneTask.baseInit = async function() {
+  this.context = new Context()
+
+  // 获取lotSizeFilter
+  const lotSizeFilterMap = await (async () => {
+    const pairs = Object.values(Config.tokenMapping).map(coin => `${coin}${Config.baseToken.symbol}` )
+    const exchangeInfo = await BinanceSpot.exchangeInfo(pairs)
+    return BinanceKit.parseLotSizeFilterMap(exchangeInfo.symbols)
+  })()
+
+  // 初始化IERC20的token
+  await IERC20.batchInit(this.context, Object.keys(Config.tokenMapping))
+
+  // 初始化本地token,绑定binance与IERC20
+  await Token.batchInit(this.context, Object.keys(Config.tokenMapping), lotSizeFilterMap)
+}
+
+module.exports = OneTask

+ 10 - 5
scripts/task.js → libs/task.js

@@ -1,8 +1,9 @@
 const logger = require('../kit/logger-kit')
 
-module.exports = class Task {
-  constructor(context, delayTime, initFun, onTickFun) {
-    this.context = context
+class Task {
+  context
+
+  constructor(delayTime, initFun, onTickFun) {
     this.delayTime = delayTime
 
     this.init = initFun
@@ -12,11 +13,13 @@ module.exports = class Task {
   async Start() {
     const task = this
 
+    logger.info('Init context or others.')
     await this.init()
 
-    this.interval = setInterval(() => {
+    logger.info('Dida dida dida, on tick, on tick...')
+    this.interval = setInterval(async () => {
       try {
-        task.onTick(task.context)
+        await task.onTick()
       } catch (e) {
         logger.error(e)
       }
@@ -27,3 +30,5 @@ module.exports = class Task {
     clearInterval(this.interval)
   }
 }
+
+module.exports = Task

+ 4 - 4
libs/1inch.js → libs/web3/1inch.js

@@ -1,7 +1,7 @@
-const HttpKit = require('../kit/http-kit.js')
-const Config = require('../config/config.js')
-const PrivateConfig = require('../PrivateConfig.js')
-const SimpleWeb3 = require("./web3/simple-web3");
+const HttpKit = require('../../kit/http-kit.js')
+const Config = require('../../config/config.js')
+const PrivateConfig = require('../../PrivateConfig.js')
+const SimpleWeb3 = require("./simple-web3");
 
 const chainID = 56
 

+ 4 - 4
libs/dodo.js → libs/web3/dodo.js

@@ -1,7 +1,7 @@
-const HttpKit = require('../kit/http-kit.js')
-const Config = require('../config/config.js')
-const PrivateConfig = require('../PrivateConfig.js')
-const SimpleWeb3 = require("./web3/simple-web3");
+const HttpKit = require('../../kit/http-kit.js')
+const Config = require('../../config/config.js')
+const PrivateConfig = require('../../PrivateConfig.js')
+const SimpleWeb3 = require("./simple-web3");
 
 const chainID = 56
 const rpc = 'https://bsc-dataseed1.binance.org'

+ 0 - 0
libs/pancake.js → libs/web3/pancake.js


+ 2 - 2
scripts/1.index.js

@@ -1,5 +1,5 @@
-const OneInch = require('../libs/1inch.js')
-const DoDo = require('../libs/dodo.js')
+const OneInch = require('../libs/web3/1inch.js')
+const DoDo = require('../libs/web3/dodo.js')
 const EthService = require('../services/eth-service.js')
 const BaseTokenService = require('../services/base-token-service.js')
 

+ 10 - 0
scripts/monitors/price-monitor.js

@@ -0,0 +1,10 @@
+const OneTask = require('../../libs/one-task')
+const logger = require('../../kit/logger-kit')
+
+const onTickFun = async function() {
+  logger.info(this.context)
+}
+
+const priceMonitor = new OneTask(1000, OneTask.baseInit, onTickFun)
+
+priceMonitor.Start()