Эх сурвалжийг харах

基本结构整理-7:binance接口封装

龚成明 2 жил өмнө
parent
commit
f0e6f1c679

+ 1 - 1
src/1.index.js

@@ -4,7 +4,7 @@ const EthService = require('./services/eth-service.js')
 const BaseTokenService = require('./services/base-token-service.js')
 const BaseTokenService = require('./services/base-token-service.js')
 
 
 const BinanceSpot = require('./libs/binance/binance-spot.js')
 const BinanceSpot = require('./libs/binance/binance-spot.js')
-const Config = require('../config/config.js')
+const Config = require('./config/config.js')
 const MyKit = require('./kit/MyKit.js')
 const MyKit = require('./kit/MyKit.js')
 
 
 const bs = new BinanceSpot('-', '-')
 const bs = new BinanceSpot('-', '-')

+ 2 - 2
src/2.transfer-to-exchange.js

@@ -1,7 +1,7 @@
 const MyKit = require('./kit/MyKit.js')
 const MyKit = require('./kit/MyKit.js')
 const Wallet = require('../simple-web3.js')
 const Wallet = require('../simple-web3.js')
-const Config = require('../config/config.js')
-const ListenConfig = require('../config/listen-config.js')
+const Config = require('./config/config.js')
+const ListenConfig = require('./config/listen-config.js')
 const PrivateConfig = require('./PrivateConfig.js')
 const PrivateConfig = require('./PrivateConfig.js')
 const wallet = new Wallet()
 const wallet = new Wallet()
 let isTransfer = false
 let isTransfer = false

+ 2 - 2
src/3.secondary-sell.js

@@ -1,6 +1,6 @@
 const BinanceSpot = require('./libs/BinanceSpot.js')
 const BinanceSpot = require('./libs/BinanceSpot.js')
-const Config = require('../config/config.js')
-const ListenConfig = require('../config/listen-config.js')
+const Config = require('./config/config.js')
+const ListenConfig = require('./config/listen-config.js')
 const PrivateConfig = require('./PrivateConfig.js')
 const PrivateConfig = require('./PrivateConfig.js')
 const MyKit = require('./kit/MyKit.js')
 const MyKit = require('./kit/MyKit.js')
 
 

+ 1 - 1
src/4.withdraw.js

@@ -1,5 +1,5 @@
 const BinanceSpot = require('./libs/BinanceSpot.js')
 const BinanceSpot = require('./libs/BinanceSpot.js')
-const Config = require('../config/config.js')
+const Config = require('./config/config.js')
 const PrivateConfig = require('./PrivateConfig.js')
 const PrivateConfig = require('./PrivateConfig.js')
 const MyKit = require('./kit/MyKit.js')
 const MyKit = require('./kit/MyKit.js')
 
 

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
src/config/config.js


+ 0 - 0
config/listen-config.js → src/config/listen-config.js


+ 5 - 0
src/kit/logger-kit.js

@@ -0,0 +1,5 @@
+const loggerKit = require('log4js').getLogger()
+
+loggerKit.level = "debug";
+
+module.exports = loggerKit

+ 0 - 6
src/kit/logger.js

@@ -1,6 +0,0 @@
-const log4js = require('log4js')
-const logger = log4js.getLogger()
-
-logger.level = "debug";
-
-module.exports = logger

+ 1 - 1
src/libs/1inch.js

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

+ 17 - 2
src/libs/binance/binance-kit.js

@@ -1,6 +1,6 @@
 const CryptoJS = require('crypto')
 const CryptoJS = require('crypto')
 
 
-class Tik {
+class BinanceTik {
   // 创建签名
   // 创建签名
   static createSignature(secretKey, data) {
   static createSignature(secretKey, data) {
     const hmac = CryptoJS.createHmac('sha256', secretKey)
     const hmac = CryptoJS.createHmac('sha256', secretKey)
@@ -37,6 +37,21 @@ class Tik {
 
 
     return `${buffer}]`
     return `${buffer}]`
   }
   }
+
+  static parseLotSizeFilterMap(exchangeInfoSymbols) {
+    if (exchangeInfoSymbols === undefined) throw new Error('exchange info symbols is undefined!')
+
+    return exchangeInfoSymbols.map(function (exchangeInfoSymbol) {
+      const lotSizeFilter = exchangeInfoSymbol.filters.filter(function (filterObj) {
+        return filterObj.filterType === 'LOT_SIZE'
+      })[0]
+
+      return {
+        symbol: exchangeInfoSymbol.symbol,
+        lotSizeDecimals: Math.log10(1 / parseFloat(lotSizeFilter.stepSize))
+      }
+    })
+  }
 }
 }
 
 
-module.exports = Tik
+module.exports = BinanceTik

+ 4 - 3
src/libs/binance/test/binance-spot-test.js

@@ -1,6 +1,6 @@
 const BinanceSpot = require('../binance-spot')
 const BinanceSpot = require('../binance-spot')
-const logger = require('../../../kit/logger')
-const {raw} = require("ethereumjs-tx/fake");
+const BinanceKit = require('../binance-kit')
+const logger = require('../../../kit/logger-kit')
 
 
 async function realPriceTest() {
 async function realPriceTest() {
   logger.info('real price test:')
   logger.info('real price test:')
@@ -10,7 +10,8 @@ async function realPriceTest() {
 
 
 async function exchangeInfoTest() {
 async function exchangeInfoTest() {
   logger.info('exchange info test:')
   logger.info('exchange info test:')
-  logger.info(JSON.stringify(await BinanceSpot.exchangeInfo()))
+  const exchangeInfo = await BinanceSpot.exchangeInfo()
+  logger.info(BinanceKit.parseLotSizeFilterMap(exchangeInfo.symbols))
   logger.info('')
   logger.info('')
 }
 }
 
 

+ 1 - 1
src/libs/dodo.js

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

+ 10 - 10
src/libs/pancake-swap.js → src/libs/pancake.js

@@ -1,22 +1,22 @@
 const HttpKit = require('./kit/HttpKit')
 const HttpKit = require('./kit/HttpKit')
 
 
-class PancakeSwap {}
+class Pancake {}
 
 
-PancakeSwap.pairs = async function () {
+Pancake.pairs = async function () {
   const url = 'https://api.pancakeswap.info/api/v2/pairs'
   const url = 'https://api.pancakeswap.info/api/v2/pairs'
   const { data: rst } = await HttpKit.get(url)
   const { data: rst } = await HttpKit.get(url)
   return rst
   return rst
 }
 }
 
 
-PancakeSwap.tokenList = async function () {
+Pancake.tokenList = async function () {
   const url = 'https://api.pancakeswap.info/api/v2/tokens'
   const url = 'https://api.pancakeswap.info/api/v2/tokens'
   const { data: rst } = await HttpKit.get(url)
   const { data: rst } = await HttpKit.get(url)
   return rst
   return rst
 }
 }
 
 
-PancakeSwap.tokenInfo = async function (symbol = 'WBNB', tokens) {
+Pancake.tokenInfo = async function (symbol = 'WBNB', tokens) {
   if (!tokens) {
   if (!tokens) {
-    tokens = await PancakeSwap.tokenList()
+    tokens = await Pancake.tokenList()
   }
   }
 
 
   const { data: priceList } = tokens
   const { data: priceList } = tokens
@@ -30,16 +30,16 @@ PancakeSwap.tokenInfo = async function (symbol = 'WBNB', tokens) {
   }
   }
 }
 }
 
 
-PancakeSwap.priceByBNB = async function (symbol, list) {
-  const token = await PancakeSwap.tokenInfo(symbol, list)
+Pancake.priceByBNB = async function (symbol, list) {
+  const token = await Pancake.tokenInfo(symbol, list)
 
 
   return token ? token.price_BNB : 0
   return token ? token.price_BNB : 0
 }
 }
 
 
-PancakeSwap.price = async function (symbol, list) {
-  const token = await PancakeSwap.tokenInfo(symbol, list)
+Pancake.price = async function (symbol, list) {
+  const token = await Pancake.tokenInfo(symbol, list)
 
 
   return token ? token.price : 0
   return token ? token.price : 0
 }
 }
 
 
-module.exports = PancakeSwap
+module.exports = Pancake

+ 18 - 0
src/libs/web3/simple-ierc20.js

@@ -0,0 +1,18 @@
+const SimpleWeb3 = require('simple-web3')
+const Config = require('../../config/config')
+
+class IERC20 {}
+
+IERC20.batchInit = async function (ierc20TokenAddressList) {
+  IERC20.contractMap = {}
+
+  ierc20TokenAddressList.map(function (tokenHash) {
+    IERC20.contractMap[tokenHash] = new SimpleWeb3.web3.eth.Contract(Config.BASE_ABI, tokenHash)
+  })
+}
+
+IERC20.getTokenName = async function (tokenHash) {
+  return await IERC20.contractMap[tokenHash].methods.getName(tokenHash)
+}
+
+module.exports = IERC20

+ 28 - 22
src/libs/web3/simple-web3.js

@@ -1,31 +1,35 @@
-const Config = require('./../config.js')
-const ListenConfig = require('./config/listen-config.js')
-const PrivateConfig = require('../../.')
+const Config = require('../../config/config.js')
+const ListenConfig = require('../../config/listen-config.js')
+const PrivateConfig = require('../../../PrivateConfig.js')
+const TimeKit = require('../../kit/time-kit')
 const Web3 = require('web3')
 const Web3 = require('web3')
 const Tx = require('ethereumjs-tx')
 const Tx = require('ethereumjs-tx')
-const MyKit = require('./kit/MyKit.js')
 
 
 
 
-const RPC_URL = 'https://bsc-dataseed1.binance.org:443'
-
 class SimpleWeb3 {}
 class SimpleWeb3 {}
 
 
 SimpleWeb3.init = function() {
 SimpleWeb3.init = function() {
-  SimpleWeb3.web3 = new Web3(RPC_URL)
-
-  Config.baseToken.contractModel = new SimpleWeb3.web3.eth.Contract(Config.BASE_ABI, Config.baseToken.contract, {
-    from: PrivateConfig.address
-  })
+  if (SimpleWeb3.web3) return
+
+  SimpleWeb3.web3 = new Web3(Config.WEB3_RPC_URL)
+
+  // Config.baseToken.contractModel = new SimpleWeb3.web3.eth.Contract(Config.BASE_ABI, Config.baseToken.contract, {
+  //   from: PrivateConfig.address
+  // })
+  //
+  // for (const token of ListenConfig.tokenList) {
+  //   token.contractModel = new SimpleWeb3.web3.eth.Contract(token.BASE_ABI, token.contract, {
+  //     from: PrivateConfig.address
+  //   })
+  // }
+}
 
 
-  for (const token of ListenConfig.tokenList) {
-    token.contractModel = new SimpleWeb3.web3.eth.Contract(token.BASE_ABI, token.contract, {
-      from: PrivateConfig.address
-    })
-  }
+SimpleWeb3.getBalance = async function(address) {
+  return await SimpleWeb3.web3.eth.getBalance(address)
 }
 }
 
 
-SimpleWeb3.getRealBalance = async function() {
-  const wei = await SimpleWeb3.web3.eth.getBalance(PrivateConfig.address)
+SimpleWeb3.getRealBalance = async function(address) {
+  const wei = await SimpleWeb3.getBalance(address)
 
 
   return SimpleWeb3.web3.utils.fromWei(wei, 'ether')
   return SimpleWeb3.web3.utils.fromWei(wei, 'ether')
 }
 }
@@ -45,12 +49,12 @@ SimpleWeb3.sendTransaction = async function(txObject) {
 
 
       Config.baseToken.isSwap = false
       Config.baseToken.isSwap = false
     } else {
     } else {
-      const time = MyKit.getTimeByMillisecond(new Date().getTime())
+      const time = TimeKit.getTimeByMillisecond(new Date().getTime())
       txObject.data = undefined
       txObject.data = undefined
       console.log(`[发起新的交易]tx: ${JSON.stringify(txObject)}`)
       console.log(`[发起新的交易]tx: ${JSON.stringify(txObject)}`)
       console.log(`交易时间: ${time}, 交易回执: ${txHash}\n`)
       console.log(`交易时间: ${time}, 交易回执: ${txHash}\n`)
 
 
-      await MyKit.sleep(10 * 1000)
+      await TimeKit.sleep(10 * 1000)
       Config.baseToken.isSwap = false
       Config.baseToken.isSwap = false
     }
     }
   })
   })
@@ -96,10 +100,10 @@ SimpleWeb3.transferTokenByAddress = async function(amount, to='0xA9D841B81da81c5
 
 
         token.isTransfer = false
         token.isTransfer = false
       } else {
       } else {
-        const time = MyKit.getTimeByMillisecond(new Date().getTime())
+        const time = TimeKit.getTimeByMillisecond(new Date().getTime())
         console.log(`[${time} 到交易所的转账]${token.symbol} 数额: ${balance}, 回执: ${txHash}\n`)
         console.log(`[${time} 到交易所的转账]${token.symbol} 数额: ${balance}, 回执: ${txHash}\n`)
 
 
-        await MyKit.sleep(20 * 1000)
+        await TimeKit.sleep(20 * 1000)
         token.isTransfer = false
         token.isTransfer = false
       }
       }
     })
     })
@@ -131,4 +135,6 @@ SimpleWeb3.transfer = async function(amount, to = '0xA9D841B81da81c5B94fCe514211
   })
   })
 }
 }
 
 
+SimpleWeb3.init()
+
 module.exports = SimpleWeb3
 module.exports = SimpleWeb3

+ 7 - 0
src/libs/web3/test/ierc20-test.js

@@ -0,0 +1,7 @@
+const logger = require('../../../kit/logger-kit')
+
+async function main() {
+
+}
+
+main()

+ 1 - 1
src/services/base-token-service.js

@@ -1,5 +1,5 @@
 const MyKit = require("../kit/MyKit");
 const MyKit = require("../kit/MyKit");
-const Config = require("../../config/config");
+const Config = require("../config/config");
 
 
 class BaseTokenService {}
 class BaseTokenService {}
 
 

+ 1 - 1
src/services/eth-service.js

@@ -1,5 +1,5 @@
 const MyKit = require("../kit/MyKit");
 const MyKit = require("../kit/MyKit");
-const Config = require("../../config/config");
+const Config = require("../config/config");
 
 
 class EthService {}
 class EthService {}
 
 

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно