index.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. const web3 = require('hardhat').web3
  2. const logger = require("../../utils/logger")
  3. const BigNumber = require('ethers').BigNumber
  4. const ierc20abi = require('../../abi/IERC20_ABI.json')
  5. const contracts = require('../../config/contracts')
  6. const Time = require("../../utils/time")
  7. const ChainLib = require("../lib/chain")
  8. class LpGenerate {
  9. tokenInstance = {}
  10. lpInstance = {}
  11. async handlePosition(routerObj) {
  12. const block = routerObj.type === 'univ2' ? 'UNIV2DEX' : 'UNIV3DEX'
  13. const hash = routerObj.type === 'univ2' ? routerObj.factory : routerObj.router + '_router'
  14. try {
  15. // 拉取当前pull状态信息
  16. const pullState = await History.findByHashOrBlockOrDataVague(block, hash, '', 0, 200)
  17. let nowPosition = 0
  18. // 没有状态信息的情况
  19. if (pullState.data.length === 0) {
  20. await History.appendOrUpdate(block, hash, {"next": 0})
  21. } else {
  22. nowPosition = pullState.data[0].dataObj.next
  23. }
  24. return nowPosition
  25. } catch (e) {
  26. logger.error(`Pull state error, router: ${routerObj.router}, factory: ${routerObj.factory}`)
  27. logger.error(e)
  28. }
  29. return 0
  30. }
  31. parseFactory(router, factoryAbi, factoryAddress) {
  32. if (router.factoryObj === null) {
  33. router.factoryObj = new web3.eth.Contract(factoryAbi, factoryAddress)
  34. }
  35. return router.factoryObj
  36. }
  37. async run() {
  38. logger.debug('Pull lp start.')
  39. // 初始化410 v2工具箱
  40. const v2ToolBy410Abi = require('../../abi/410_V2_TOOLS.json')
  41. const v2ToolBy410 = new web3.eth.Contract(v2ToolBy410Abi, contracts.V2_TOOLS_BY_410)
  42. const v2FactoryAbi = require('../../abi/UNIV2_FACTORY_ABI.json')
  43. // router
  44. const routerList = require('../../config/router-list.json')
  45. // while (true) {
  46. // for (const routerObj of routerList) {
  47. // try {
  48. // let pairsLength = 0
  49. //
  50. // const factoryAddress = routerObj.factory
  51. // // 获取当前pull状态
  52. // let position = await this.handlePosition(routerObj)
  53. // let v2Factory = undefined
  54. // // v2,v3分开处理
  55. // if (routerObj.type === 'univ2') {
  56. // // 获取工厂实例
  57. // v2Factory = this.parseFactory(routerObj, v2FactoryAbi, factoryAddress)
  58. // // 获取当前pairsLength
  59. // pairsLength = await v2Factory.methods.allPairsLength().call()
  60. // }
  61. // // 如果有未获取的池子
  62. // const haveNewLp = position < pairsLength
  63. //
  64. // // 打印信息
  65. // if (haveNewLp) {
  66. // logger.debug(`Router address: ${routerObj.router}`)
  67. // if (routerObj.type === 'univ2') {
  68. // logger.debug(`factory: ${factoryAddress}, ${position} / ${pairsLength}.`)
  69. // } else {
  70. // logger.debug(`position: ${routerObj.position}, ${position} / ${pairsLength}.`)
  71. // }
  72. // }
  73. //
  74. // // 挨个处理lp信息
  75. // for (; position < pairsLength; position++) {
  76. // await this.handleLp(position, pairsLength, routerObj, v2ToolBy410)
  77. // }
  78. //
  79. // if (haveNewLp) {
  80. // if (routerObj.type === 'univ2') {
  81. // await History.appendOrUpdate('UNIV2DEX', routerObj.factory, {"next": position})
  82. // }
  83. //
  84. // logger.debug('')
  85. // logger.debug('')
  86. // logger.debug('')
  87. // }
  88. // } catch (e) {
  89. // logger.debug(e)
  90. // }
  91. // }
  92. //
  93. // await Time.delay(12000)
  94. // }
  95. }
  96. }
  97. async function main() {
  98. logger.info(await ChainLib.getChainFromCommand())
  99. }
  100. main().catch((error) => {
  101. console.error(error);
  102. process.exitCode = 1;
  103. })