|
|
@@ -0,0 +1,58 @@
|
|
|
+import logger from "../../utils/logger";
|
|
|
+import history from "../interface/history"
|
|
|
+import { web3 } from "hardhat";
|
|
|
+
|
|
|
+const ierc20abi = require('../../abi/IERC20_ABI.json')
|
|
|
+
|
|
|
+async function handleToken(pool: any, zero: boolean) {
|
|
|
+ const token = {
|
|
|
+ 'address': zero ? pool.token0 : pool.token1,
|
|
|
+ 'symbol': zero ? pool.symbol0 : pool.symbol1,
|
|
|
+ 'decimal': zero ? pool.decimals0 : pool.decimals1,
|
|
|
+ 'name': 'xxxxxxxx'
|
|
|
+ }
|
|
|
+
|
|
|
+ const tokenObj = new web3.eth.Contract(ierc20abi, token.address)
|
|
|
+
|
|
|
+ token.name = await tokenObj.methods.name().call()
|
|
|
+ token.name = token.name.replace(/[^A-Za-z0-9 ]+/g, '').substring(0, 37)
|
|
|
+
|
|
|
+ return token
|
|
|
+}
|
|
|
+
|
|
|
+async function main() {
|
|
|
+ logger.debug('start loading pools...')
|
|
|
+ const v2PoolList = require('../../config/v2PoolList.json')
|
|
|
+ const v3PoolList = require('../../config/v3PoolList.json')
|
|
|
+ const poolList = v2PoolList.concat(v3PoolList)
|
|
|
+
|
|
|
+ const tokenBus: any = {}
|
|
|
+
|
|
|
+ // 所有token获取
|
|
|
+ for (let poolIndex in poolList) {
|
|
|
+ const pool = poolList[poolIndex]
|
|
|
+
|
|
|
+ if (tokenBus[pool.token0] == null) {
|
|
|
+ const token = await handleToken(pool, true)
|
|
|
+ tokenBus[pool.token0] = token
|
|
|
+
|
|
|
+ const saveRst = await history.appendOrUpdate('token', token.address, token)
|
|
|
+ logger.debug(token + saveRst.msg)
|
|
|
+ }
|
|
|
+
|
|
|
+ if (tokenBus[pool.token1] == null) {
|
|
|
+ const token = await handleToken(pool, false)
|
|
|
+ tokenBus[pool.token1] = token
|
|
|
+
|
|
|
+ const saveRst = await history.appendOrUpdate('token', token.address, token)
|
|
|
+ logger.debug(token + saveRst.msg)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ logger.debug(Object.keys(tokenBus).length)
|
|
|
+}
|
|
|
+
|
|
|
+main().catch((error) => {
|
|
|
+ console.error(error);
|
|
|
+ process.exitCode = 1;
|
|
|
+})
|