mirror of
				https://github.com/Instadapp/trustwallet-assets.git
				synced 2024-07-29 22:37:31 +00:00 
			
		
		
		
	[Internal] Fix for running in Action; Adjust token validity check (#5429)
* Extra logs * External Updates * Move token validity check, cheksumFormat ID is available only later. * External Updates Co-authored-by: Catenocrypt <catenocrypt@users.noreply.github.com>
This commit is contained in:
		
							parent
							
								
									80f623673a
								
							
						
					
					
						commit
						5efd533fdc
					
				|  | @ -1,7 +1,7 @@ | |||
| { | ||||
|     "name": "Trust Wallet: Ethereum", | ||||
|     "logoURI": "https://trustwallet.com/assets/images/favicon.png", | ||||
|     "timestamp": "2021-01-28T10:04:51.984Z", | ||||
|     "timestamp": "2021-01-29T07:23:30.936Z", | ||||
|     "tokens": [ | ||||
|         { | ||||
|             "chainId": 1, | ||||
|  | @ -23,10 +23,10 @@ | |||
|                     "base": "c60_t0x00a8b738E453fFd858a7edf03bcCfe20412f0Eb0" | ||||
|                 }, | ||||
|                 { | ||||
|                     "base": "c60_t0x0258F474786DdFd37ABCE6df6BBb1Dd5dfC4434a" | ||||
|                     "base": "c60_t0x00c83aeCC790e8a4453e5dD3B0B4b3680501a7A7" | ||||
|                 }, | ||||
|                 { | ||||
|                     "base": "c60_t0x0417912b3a7AF768051765040A55BB0925D4DDcF" | ||||
|                     "base": "c60_t0x0258F474786DdFd37ABCE6df6BBb1Dd5dfC4434a" | ||||
|                 }, | ||||
|                 { | ||||
|                     "base": "c60_t0x04Fa0d235C4abf4BcF4787aF4CF447DE572eF828" | ||||
|  | @ -106,6 +106,9 @@ | |||
|                 { | ||||
|                     "base": "c60_t0x429881672B9AE42b8EbA0E26cD9C73711b891Ca5" | ||||
|                 }, | ||||
|                 { | ||||
|                     "base": "c60_t0x4a220E6096B25EADb88358cb44068A3248254675" | ||||
|                 }, | ||||
|                 { | ||||
|                     "base": "c60_t0x4c11249814f11b9346808179Cf06e71ac328c1b5" | ||||
|                 }, | ||||
|  | @ -361,6 +364,16 @@ | |||
|             "logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0x00a8b738E453fFd858a7edf03bcCfe20412f0Eb0/logo.png", | ||||
|             "pairs": [] | ||||
|         }, | ||||
|         { | ||||
|             "asset": "c60_t0x00c83aeCC790e8a4453e5dD3B0B4b3680501a7A7", | ||||
|             "type": "ERC20", | ||||
|             "address": "0x00c83aeCC790e8a4453e5dD3B0B4b3680501a7A7", | ||||
|             "name": "SKALE", | ||||
|             "symbol": "SKL", | ||||
|             "decimals": 18, | ||||
|             "logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0x00c83aeCC790e8a4453e5dD3B0B4b3680501a7A7/logo.png", | ||||
|             "pairs": [] | ||||
|         }, | ||||
|         { | ||||
|             "asset": "c60_t0x0258F474786DdFd37ABCE6df6BBb1Dd5dfC4434a", | ||||
|             "type": "ERC20", | ||||
|  | @ -371,16 +384,6 @@ | |||
|             "logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0x0258F474786DdFd37ABCE6df6BBb1Dd5dfC4434a/logo.png", | ||||
|             "pairs": [] | ||||
|         }, | ||||
|         { | ||||
|             "asset": "c60_t0x0417912b3a7AF768051765040A55BB0925D4DDcF", | ||||
|             "type": "ERC20", | ||||
|             "address": "0x0417912b3a7AF768051765040A55BB0925D4DDcF", | ||||
|             "name": "Liquidity Dividends Protocol", | ||||
|             "symbol": "LID", | ||||
|             "decimals": 18, | ||||
|             "logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0x0417912b3a7AF768051765040A55BB0925D4DDcF/logo.png", | ||||
|             "pairs": [] | ||||
|         }, | ||||
|         { | ||||
|             "asset": "c60_t0x04Fa0d235C4abf4BcF4787aF4CF447DE572eF828", | ||||
|             "type": "ERC20", | ||||
|  | @ -655,6 +658,16 @@ | |||
|             "logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0x429881672B9AE42b8EbA0E26cD9C73711b891Ca5/logo.png", | ||||
|             "pairs": [] | ||||
|         }, | ||||
|         { | ||||
|             "asset": "c60_t0x4a220E6096B25EADb88358cb44068A3248254675", | ||||
|             "type": "ERC20", | ||||
|             "address": "0x4a220E6096B25EADb88358cb44068A3248254675", | ||||
|             "name": "Quant", | ||||
|             "symbol": "QNT", | ||||
|             "decimals": 18, | ||||
|             "logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0x4a220E6096B25EADb88358cb44068A3248254675/logo.png", | ||||
|             "pairs": [] | ||||
|         }, | ||||
|         { | ||||
|             "asset": "c60_t0x4c11249814f11b9346808179Cf06e71ac328c1b5", | ||||
|             "type": "ERC20", | ||||
|  | @ -1427,7 +1440,7 @@ | |||
|         } | ||||
|     ], | ||||
|     "version": { | ||||
|         "major": 1, | ||||
|         "major": 2, | ||||
|         "minor": 0, | ||||
|         "patch": 0 | ||||
|     } | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| { | ||||
|     "name": "Trust Wallet: Smart Chain", | ||||
|     "logoURI": "https://trustwallet.com/assets/images/favicon.png", | ||||
|     "timestamp": "2021-01-28T10:04:32.196Z", | ||||
|     "timestamp": "2021-01-29T07:23:25.492Z", | ||||
|     "tokens": [ | ||||
|         { | ||||
|             "chainId": 56, | ||||
|  | @ -82,12 +82,18 @@ | |||
|                 { | ||||
|                     "base": "c20000714_t0x728C5baC3C3e370E372Fc4671f9ef6916b814d8B" | ||||
|                 }, | ||||
|                 { | ||||
|                     "base": "c20000714_t0x78650B139471520656b9E7aA7A5e9276814a38e9" | ||||
|                 }, | ||||
|                 { | ||||
|                     "base": "c20000714_t0x88f1A5ae2A3BF98AEAF342D26B30a79438c9142e" | ||||
|                 }, | ||||
|                 { | ||||
|                     "base": "c20000714_t0x8fF795a6F4D97E7887C79beA79aba5cc76444aDf" | ||||
|                 }, | ||||
|                 { | ||||
|                     "base": "c20000714_t0x928e55daB735aa8260AF3cEDadA18B5f70C72f1b" | ||||
|                 }, | ||||
|                 { | ||||
|                     "base": "c20000714_t0xa1faa113cbE53436Df28FF0aEe54275c13B40975" | ||||
|                 }, | ||||
|  | @ -103,6 +109,9 @@ | |||
|                 { | ||||
|                     "base": "c20000714_t0xBf5140A22578168FD562DCcF235E5D43A02ce9B1" | ||||
|                 }, | ||||
|                 { | ||||
|                     "base": "c20000714_t0xbF7c81FFF98BbE61B40Ed186e4AfD6DDd01337fe" | ||||
|                 }, | ||||
|                 { | ||||
|                     "base": "c20000714_t0xcF6BB5389c92Bdda8a3747Ddb454cB7a64626C63" | ||||
|                 }, | ||||
|  | @ -358,6 +367,16 @@ | |||
|             "logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/smartchain/assets/0x728C5baC3C3e370E372Fc4671f9ef6916b814d8B/logo.png", | ||||
|             "pairs": [] | ||||
|         }, | ||||
|         { | ||||
|             "asset": "c20000714_t0x78650B139471520656b9E7aA7A5e9276814a38e9", | ||||
|             "type": "BEP20", | ||||
|             "address": "0x78650B139471520656b9E7aA7A5e9276814a38e9", | ||||
|             "name": "StandardBTCHashrateToken", | ||||
|             "symbol": "BTCST", | ||||
|             "decimals": 18, | ||||
|             "logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/smartchain/assets/0x78650B139471520656b9E7aA7A5e9276814a38e9/logo.png", | ||||
|             "pairs": [] | ||||
|         }, | ||||
|         { | ||||
|             "asset": "c20000714_t0x88f1A5ae2A3BF98AEAF342D26B30a79438c9142e", | ||||
|             "type": "BEP20", | ||||
|  | @ -378,6 +397,16 @@ | |||
|             "logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/smartchain/assets/0x8fF795a6F4D97E7887C79beA79aba5cc76444aDf/logo.png", | ||||
|             "pairs": [] | ||||
|         }, | ||||
|         { | ||||
|             "asset": "c20000714_t0x928e55daB735aa8260AF3cEDadA18B5f70C72f1b", | ||||
|             "type": "BEP20", | ||||
|             "address": "0x928e55daB735aa8260AF3cEDadA18B5f70C72f1b", | ||||
|             "name": "Frontier Token", | ||||
|             "symbol": "FRONT", | ||||
|             "decimals": 18, | ||||
|             "logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/smartchain/assets/0x928e55daB735aa8260AF3cEDadA18B5f70C72f1b/logo.png", | ||||
|             "pairs": [] | ||||
|         }, | ||||
|         { | ||||
|             "chainId": 56, | ||||
|             "asset": "c20000714_t0xa1faa113cbE53436Df28FF0aEe54275c13B40975", | ||||
|  | @ -432,6 +461,16 @@ | |||
|             "logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/smartchain/assets/0xBf5140A22578168FD562DCcF235E5D43A02ce9B1/logo.png", | ||||
|             "pairs": [] | ||||
|         }, | ||||
|         { | ||||
|             "asset": "c20000714_t0xbF7c81FFF98BbE61B40Ed186e4AfD6DDd01337fe", | ||||
|             "type": "BEP20", | ||||
|             "address": "0xbF7c81FFF98BbE61B40Ed186e4AfD6DDd01337fe", | ||||
|             "name": "Elrond", | ||||
|             "symbol": "EGLD", | ||||
|             "decimals": 18, | ||||
|             "logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/smartchain/assets/0xbF7c81FFF98BbE61B40Ed186e4AfD6DDd01337fe/logo.png", | ||||
|             "pairs": [] | ||||
|         }, | ||||
|         { | ||||
|             "chainId": 56, | ||||
|             "asset": "c20000714_t0xcF6BB5389c92Bdda8a3747Ddb454cB7a64626C63", | ||||
|  | @ -487,7 +526,7 @@ | |||
|         } | ||||
|     ], | ||||
|     "version": { | ||||
|         "major": 1, | ||||
|         "major": 2, | ||||
|         "minor": 0, | ||||
|         "patch": 0 | ||||
|     } | ||||
|  |  | |||
|  | @ -172,7 +172,7 @@ | |||
|         }, | ||||
|         "status": { | ||||
|             "disabled": true, | ||||
|             "note": "No more capacity: -34224" | ||||
|             "note": "No more capacity: -34155" | ||||
|         } | ||||
|     }, | ||||
|     { | ||||
|  |  | |||
|  | @ -6,9 +6,7 @@ import { | |||
|     primaryTokenIndex, | ||||
|     TokenInfo | ||||
| } from "../generic/subgraph"; | ||||
| import { getChainAllowlistPath } from "../generic/repo-structure"; | ||||
| import { Ethereum } from "../generic/blockchains"; | ||||
| import { readJsonFile } from "../generic/json"; | ||||
| import { | ||||
|     rebuildTokenlist, | ||||
|     TokenItem | ||||
|  | @ -23,9 +21,6 @@ const PrimaryTokens: string[] = ["WETH", "ETH"]; | |||
| async function retrieveUniswapPairs(): Promise<PairInfo[]> { | ||||
|     console.log(`Retrieving pairs from Uniswap, limit liquidity USD ${config.Uniswap_MinLiquidity}  volume ${config.Uniswap_MinVol24}  txcount ${config.Uniswap_MinTxCount24}`); | ||||
| 
 | ||||
|     // prepare phase, read allowlist
 | ||||
|     const allowlist: string[] = readJsonFile(getChainAllowlistPath(Ethereum)) as string[]; | ||||
| 
 | ||||
|     const pairs = await getTradingPairs(config.Uniswap_TradingPairsUrl, config.Uniswap_TradingPairsQuery); | ||||
|     const filtered: PairInfo[] = []; | ||||
|     pairs.forEach(x => { | ||||
|  | @ -33,7 +28,7 @@ async function retrieveUniswapPairs(): Promise<PairInfo[]> { | |||
|             if (typeof(x) === "object") { | ||||
|                 const pairInfo = x as PairInfo; | ||||
|                 if (pairInfo) { | ||||
|                     if (checkTradingPair(pairInfo, Ethereum, config.Uniswap_MinLiquidity, config.Uniswap_MinVol24, config.Uniswap_MinTxCount24, allowlist, PrimaryTokens)) { | ||||
|                     if (checkTradingPair(pairInfo, config.Uniswap_MinLiquidity, config.Uniswap_MinVol24, config.Uniswap_MinTxCount24, PrimaryTokens)) { | ||||
|                         filtered.push(pairInfo); | ||||
|                     } | ||||
|                 } | ||||
|  |  | |||
|  | @ -6,13 +6,11 @@ import { | |||
|     primaryTokenIndex, | ||||
|     TokenInfo | ||||
| } from "../generic/subgraph"; | ||||
| import { getChainAllowlistPath } from "../generic/repo-structure"; | ||||
| import { SmartChain } from "../generic/blockchains"; | ||||
| import { | ||||
|     rebuildTokenlist, | ||||
|     TokenItem | ||||
| } from "../generic/tokenlists"; | ||||
| import { readJsonFile } from "../generic/json"; | ||||
| import { toChecksum } from "../generic/eth-address"; | ||||
| import { assetID, logoURI } from "../generic/asset"; | ||||
| import * as config from "../config" | ||||
|  | @ -22,9 +20,6 @@ const PrimaryTokens: string[] = ["WBNB", "BNB"]; | |||
| async function retrievePancakeSwapPairs(): Promise<PairInfo[]> { | ||||
|     console.log(`Retrieving pairs from PancakeSwap, limit liquidity USD ${config.PancakeSwap_MinLiquidity}  volume ${config.PancakeSwap_MinVol24}  txcount ${config.PancakeSwap_MinTxCount24}`); | ||||
| 
 | ||||
|     // prepare phase, read allowlist
 | ||||
|     const allowlist: string[] = readJsonFile(getChainAllowlistPath(SmartChain)) as string[]; | ||||
| 
 | ||||
|     const pairs = await getTradingPairs(config.PancakeSwap_TradingPairsUrl, config.PancakeSwap_TradingPairsQuery); | ||||
|     const filtered: PairInfo[] = []; | ||||
|     pairs.forEach(x => { | ||||
|  | @ -32,7 +27,7 @@ async function retrievePancakeSwapPairs(): Promise<PairInfo[]> { | |||
|             if (typeof(x) === "object") { | ||||
|                 const pairInfo = x as PairInfo; | ||||
|                 if (pairInfo) { | ||||
|                     if (checkTradingPair(pairInfo, SmartChain, config.PancakeSwap_MinLiquidity, config.PancakeSwap_MinVol24, config.PancakeSwap_MinTxCount24, allowlist, PrimaryTokens)) { | ||||
|                     if (checkTradingPair(pairInfo, config.PancakeSwap_MinLiquidity, config.PancakeSwap_MinVol24, config.PancakeSwap_MinTxCount24, PrimaryTokens)) { | ||||
|                         filtered.push(pairInfo); | ||||
|                     } | ||||
|                 } | ||||
|  |  | |||
|  | @ -1,8 +1,6 @@ | |||
| // Interfacing with TheGraph subgraph APIs
 | ||||
| 
 | ||||
| import axios from "axios"; | ||||
| import { getChainAssetLogoPath } from "../generic/repo-structure"; | ||||
| import { isPathExistsSync } from "../generic/filesystem"; | ||||
| 
 | ||||
| export interface TokenInfo { | ||||
|     id: string; | ||||
|  | @ -40,18 +38,6 @@ export async function getTradingPairs(apiUrl: string, subgraphQuery: string): Pr | |||
|     } | ||||
| } | ||||
| 
 | ||||
| function checkBSCTokenExists(id: string, chainName: string, tokenAllowlist: string[]): boolean { | ||||
|     const logoPath = getChainAssetLogoPath(chainName, id); | ||||
|     if (!isPathExistsSync(logoPath)) { | ||||
|         return false; | ||||
|     } | ||||
|     if (tokenAllowlist.find(t => (id.toLowerCase() === t.toLowerCase())) === undefined) { | ||||
|         //console.log(`Token not found in allowlist, ${id}`);
 | ||||
|         return false; | ||||
|     } | ||||
|     return true; | ||||
| } | ||||
| 
 | ||||
| function isTokenPrimary(token: TokenInfo, primaryTokens: string[]): boolean { | ||||
|     return (primaryTokens.find(t => (t === token.symbol.toUpperCase())) != undefined); | ||||
| } | ||||
|  | @ -68,9 +54,7 @@ export function primaryTokenIndex(pair: PairInfo, primaryTokens: string[]): numb | |||
| } | ||||
| 
 | ||||
| // Verify a trading pair, whether we support the tokens, has enough liquidity, etc.
 | ||||
| export function checkTradingPair(pair: PairInfo, chainName: string,  | ||||
|     minLiquidity: number, minVol24: number, minTxCount24: number, | ||||
|     tokenAllowlist: string[], primaryTokens: string[] | ||||
| export function checkTradingPair(pair: PairInfo, minLiquidity: number, minVol24: number, minTxCount24: number, primaryTokens: string[] | ||||
| ): boolean { | ||||
|     if (!pair.id || !pair.reserveUSD || !pair.volumeUSD || !pair.txCount || !pair.token0 || !pair.token1) { | ||||
|         return false; | ||||
|  | @ -87,14 +71,6 @@ export function checkTradingPair(pair: PairInfo, chainName: string, | |||
|         console.log("pair with low tx count:", pair.token0.symbol, "--", pair.token1.symbol, "  ", pair.txCount); | ||||
|         return false; | ||||
|     } | ||||
|     if (!checkBSCTokenExists(pair.token0.id, chainName, tokenAllowlist)) { | ||||
|         console.log("pair with unsupported 1st coin:", pair.token0.symbol, "--", pair.token1.symbol); | ||||
|         return false; | ||||
|     } | ||||
|     if (!checkBSCTokenExists(pair.token1.id, chainName, tokenAllowlist)) { | ||||
|         console.log("pair with unsupported 2nd coin:", pair.token0.symbol, "--", pair.token1.symbol); | ||||
|         return false; | ||||
|     } | ||||
|     if (primaryTokenIndex(pair, primaryTokens) == 0) { | ||||
|         console.log("pair with no primary coin:", pair.token0.symbol, "--", pair.token1.symbol); | ||||
|         return false; | ||||
|  |  | |||
|  | @ -4,10 +4,13 @@ import { readJsonFile, writeJsonFile } from "../generic/json"; | |||
| import { diff } from "jsondiffpatch"; | ||||
| import { tokenInfoFromTwApi, TokenTwInfo } from "../generic/asset"; | ||||
| import { | ||||
|     getChainAssetLogoPath, | ||||
|     getChainAllowlistPath, | ||||
|     getChainTokenlistBasePath, | ||||
|     getChainTokenlistPath | ||||
|     getChainTokenlistPath, | ||||
| } from "../generic/repo-structure"; | ||||
| import * as bluebird from "bluebird"; | ||||
| import { isPathExistsSync } from "../generic/filesystem"; | ||||
| 
 | ||||
| class Version { | ||||
|     major: number | ||||
|  | @ -162,6 +165,19 @@ function addPairToToken(pairToken: TokenItem, token: TokenItem, list: List): voi | |||
|     tokenInList.pairs.push(new Pair(pairToken.asset)); | ||||
| } | ||||
| 
 | ||||
| function checkTokenExists(id: string, chainName: string, tokenAllowlist: string[]): boolean { | ||||
|     const logoPath = getChainAssetLogoPath(chainName, id); | ||||
|     if (!isPathExistsSync(logoPath)) { | ||||
|         //console.log("logo file missing", logoPath);
 | ||||
|         return false; | ||||
|     } | ||||
|     if (tokenAllowlist.find(t => (id.toLowerCase() === t.toLowerCase())) === undefined) { | ||||
|         //console.log(`Token not found in allowlist, ${id}`);
 | ||||
|         return false; | ||||
|     } | ||||
|     return true; | ||||
| } | ||||
| 
 | ||||
| export async function addPairIfNeeded(token0: TokenItem, token1: TokenItem, list: List): Promise<void> { | ||||
|     await addTokenIfNeeded(token0, list); | ||||
|     await addTokenIfNeeded(token1, list); | ||||
|  | @ -206,6 +222,24 @@ export async function rebuildTokenlist(chainName: string, pairs: [TokenItem, Tok | |||
|         return; | ||||
|     } | ||||
|      | ||||
|     // filter out missing tokens
 | ||||
|     // prepare phase, read allowlist
 | ||||
|     const allowlist: string[] = readJsonFile(getChainAllowlistPath(chainName)) as string[]; | ||||
|     const pairs2: [TokenItem, TokenItem][] = []; | ||||
|     pairs.forEach(p => { | ||||
|         if (!checkTokenExists(p[0].address, chainName, allowlist)) { | ||||
|             console.log("pair with unsupported 1st coin:", p[0].symbol, "--", p[1].symbol); | ||||
|             return; | ||||
|         } | ||||
|         if (!checkTokenExists(p[1].address, chainName, allowlist)) { | ||||
|             console.log("pair with unsupported 2nd coin:", p[0].symbol, "--", p[1].symbol); | ||||
|             return; | ||||
|         } | ||||
|         pairs2.push(p); | ||||
|     }); | ||||
|     const filteredCount: number = pairs.length - pairs2.length; | ||||
|     console.log(`${filteredCount} unsupported tokens filtered out, ${pairs2.length} pairs`); | ||||
| 
 | ||||
|     const tokenlistFile = getChainTokenlistPath(chainName); | ||||
|     { | ||||
|         // show current size
 | ||||
|  | @ -218,7 +252,7 @@ export async function rebuildTokenlist(chainName: string, pairs: [TokenItem, Tok | |||
|     const list: List = json as List; | ||||
|     console.log(`Tokenlist base: ${list.tokens.length} tokens`); | ||||
| 
 | ||||
|     await bluebird.each(pairs, async (p) => { | ||||
|     await bluebird.each(pairs2, async (p) => { | ||||
|         await addPairIfNeeded(p[0], p[1], list); | ||||
|     }); | ||||
|     console.log(`Tokenlist updated: ${list.tokens.length} tokens`); | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Adam R
						Adam R