const OneTask = require('./task') const Context = require("./context"); const Config = require("../config/config"); const BinanceSpot = require("./binance/binance-spot"); const IERC20 = require("./web3/ierc20-token"); const Token = require("./token"); const PrivateConfig = require("../PrivateConfig") OneTask.baseInit = async function() { this.context = new Context() this.context.binanceSpot = new BinanceSpot(PrivateConfig.binanceAPIKey, PrivateConfig.binanceSecretKey) const pairs = Object.values(PrivateConfig.tokenMapping).map(coin => `${coin}${Config.baseIerc20Token.symbol}` ) const exchangeInfo = await BinanceSpot.exchangeInfo(pairs) // 解析priceTickFilter const priceTickFilterMap = (() => { const filterMap = {} exchangeInfo.symbols.forEach(function(pairInfo) { const filter = pairInfo.filters.filter(filterObj => filterObj.filterType === 'PRICE_FILTER')[0] filterMap[pairInfo.symbol] = Math.log10(1 / parseFloat(filter.tickSize)) }) return filterMap })() // 解析lotSizeFilter const lotSizeFilterMap = (() => { const filterMap = {} exchangeInfo.symbols.forEach(function(pairInfo) { const filter = pairInfo.filters.filter(filterObj => filterObj.filterType === 'LOT_SIZE')[0] filterMap[pairInfo.symbol] = Math.log10(1 / parseFloat(filter.stepSize)) }) return filterMap })() // 初始化IERC20的token await IERC20.batchInit(this.context, Object.keys(PrivateConfig.tokenMapping)) // 初始化本地token,绑定binance与IERC20 await Token.batchInit(this.context, Object.keys(PrivateConfig.tokenMapping), priceTickFilterMap, lotSizeFilterMap) } module.exports = OneTask