const OneTask = require('../../libs/one-task') const OneInch = require('../../libs/web3/1inch') const BinanceSpot = require('../../libs/binance/binance-spot') const Config = require('../../config/config') const showPrices = function(context, task) { const logger = task.logger const fileLogger = task.fileLogger const tokenMap = context.tokenMap console.clear() console.info(`-----------------------------------------------------------------------------------------------------------------`) console.info(`| pair\t\t\t| 1inch\t\t\t\t| binance\t\t| distance\t\t\t|`) console.info(`-----------------------------------------------------------------------------------------------------------------`) Object.keys(tokenMap).forEach((tokenHash) => { const token = tokenMap[tokenHash] const pair = token.exchange.pair const OneInchPrice = token.OneInchPrice const BinancePrice = token.BinancePrice const distancePrice = BinancePrice - OneInchPrice if (distancePrice > 0) { fileLogger.info(`| ${pair}\t\t| ${OneInchPrice}\t\t| ${BinancePrice}\t\t| ${distancePrice}\t\t|`) } console.info(`| ${pair}\t\t| ${OneInchPrice}\t\t| ${BinancePrice}\t\t| ${distancePrice}\t\t|`) }) console.info(`-----------------------------------------------------------------------------------------------------------------`) logger.info('') } const onTickFun = async function() { const task = this const context = task.context const tokenMap = context.tokenMap const tokenContractAddressList = Object.keys(tokenMap) // 搜集所有价格数据 for (const tokenHash of tokenContractAddressList) { const toToken = tokenMap[tokenHash] const fromIerc20Token = Config.baseIerc20Token const amount = Config.baseTokenAmount const OneInchPrice = await OneInch.price(fromIerc20Token.contract, tokenHash, amount) const BinancePrice = await BinanceSpot.realPrice(toToken.exchange.pair) toToken.OneInchPrice = OneInchPrice toToken.BinancePrice = BinancePrice } // 绘制帧 showPrices(context, task) } const priceMonitor = new OneTask('PriceMonitor',5 * 1000, OneTask.baseInit, onTickFun) priceMonitor.Start()