| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- const ChainLib = require("../lib/chain-lib");
- const Web3Utils = require("../../utils/web3-utils");
- const logger = require("../../utils/logger");
- const Time = require("../../utils/time");
- const LpLib = require("../lib/lp-lib");
- class LpMaintenance {
- constructor(web3, chain) {
- this.web3 = web3
- this.chain = chain
- // 初始化依赖库
- this.lpLib = new LpLib(this.web3, this.chain)
- }
- async tick() {
- const v2LpList = await this.lpLib.getLpList(LpLib.VERSION.UNIV2)
- const v3LpList = await this.lpLib.getLpList(LpLib.VERSION.UNIV3)
- const lpList = v2LpList.concat(v3LpList)
- // 完善lp信息
- // 1. 更新所有lp的r0,r1
- await this.lpLib.putR0AndR1(lpList)
- // 2. 获取每种交易对的最佳兑换池子(最佳:池子价值最高)
- // 按相同交易对分组的对象,通过token0+token1的字符串串联方式索引
- const maxValueLpMap = this.lpLib.getMaxValueLpMap()
- // 3. 计算token0与token1的相对价格(需要decimals0,decimals1)
- this.lpLib.calcSwapPrice(lpList)
- // 4. 获取池子兑基本币价值
- this.lpLib.calcLpValue(lpList)
- }
- async run() {
- logger.debug(`${this.chain.networkName} liquidity pool maintenance is start.`)
- logger.debug(`web3 is connected, block number: ${await this.web3.eth.getBlockNumber()}.`)
- // 3. 开始处理
- while (true) {
- try {
- await this.tick()
- } catch (e) {
- logger.error(e)
- }
- await Time.delay(1000)
- }
- }
- }
- async function main() {
- const chain = await ChainLib.getChainFromCommand()
- const web3 = Web3Utils.autoCreate(chain)
- const generator = new LpMaintenance(web3, chain)
- await generator.run()
- }
- main().catch((error) => {
- console.error(error);
- process.exitCode = 1;
- })
|