From ad04ceda8896b952e5f3b320919c051073cd9b30 Mon Sep 17 00:00:00 2001 From: Mykola Date: Fri, 10 Apr 2020 17:49:55 -0700 Subject: [PATCH] Format asset info.json + add test to check. Daily update. --- .../info.json | 4 +- .../info.json | 8 +- .../info.json | 4 +- .../logo.png | Bin 7200 -> 0 bytes .../logo.png | Bin 0 -> 6298 bytes .../info.json | 10 +-- .../logo.png | Bin 0 -> 7462 bytes .../logo.png | Bin 0 -> 3461 bytes .../logo.png | Bin .../info.json | 2 +- .../logo.png | Bin 0 -> 5719 bytes .../info.json | 1 + .../info.json | 10 +-- .../info.json | 16 ++-- .../logo.png | Bin 0 -> 6002 bytes .../info.json | 10 +-- .../info.json | 10 +-- .../info.json | 6 +- .../info.json | 16 ++-- .../logo.png | Bin 43785 -> 0 bytes .../info.json | 2 +- .../info.json | 10 +-- .../info.json | 9 +- .../info.json | 4 +- .../info.json | 2 +- .../info.json | 4 +- .../info.json | 3 +- .../info.json | 6 +- .../info.json | 40 ++++----- .../logo.png | Bin 0 -> 6328 bytes blockchains/ethereum/blacklist.json | 17 ++++ blockchains/ethereum/whitelist.json | 11 ++- blockchains/kava/validators/list.json | 2 +- pricing/coinmarketcap/mapping.json | 48 ++++++++++- script/gen_info.ts | 6 +- script/gen_list.ts | 35 +++++--- src/test/helpers.ts | 29 ++++++- src/test/index.test.ts | 78 ++++++++++-------- src/test/models.ts | 10 ++- 39 files changed, 258 insertions(+), 155 deletions(-) delete mode 100644 blockchains/ethereum/assets/0x187C4B0e3819017a5cf07af81A4E2b16166aAbc6/logo.png create mode 100644 blockchains/ethereum/assets/0x1A3496C18d558bd9C6C8f609E1B129f67AB08163/logo.png create mode 100644 blockchains/ethereum/assets/0x2d71983E810B9e95258966B9c164C4d61a829bA9/logo.png create mode 100644 blockchains/ethereum/assets/0x2ef52Ed7De8c5ce03a4eF0efbe9B7450F2D7Edc9/logo.png rename blockchains/ethereum/assets/{0xd5dad1DB7F112037c0c6Cf0792dc2a7866Bfd136 => 0x340eF83Ec8560892168D4062720F030460468656}/logo.png (100%) create mode 100644 blockchains/ethereum/assets/0x3aFfCCa64c2A6f4e3B6Bd9c64CD2C969EFd1ECBe/logo.png create mode 100644 blockchains/ethereum/assets/0x6b74Dd5d01f8320081247F5CF1F7a48324700Db6/logo.png delete mode 100644 blockchains/ethereum/assets/0x8F9bfe5b6A5C3fEa8c64ad41a5Cf6f60Ec4aa47c/logo.png create mode 100644 blockchains/ethereum/assets/0xd321Ca7Cd7A233483b8CD5a11a89E9337e70Df84/logo.png diff --git a/blockchains/ethereum/assets/0x0327112423F3A68efdF1fcF402F6c5CB9f7C33fd/info.json b/blockchains/ethereum/assets/0x0327112423F3A68efdF1fcF402F6c5CB9f7C33fd/info.json index e62fe61e0..7e0a0b8e1 100644 --- a/blockchains/ethereum/assets/0x0327112423F3A68efdF1fcF402F6c5CB9f7C33fd/info.json +++ b/blockchains/ethereum/assets/0x0327112423F3A68efdF1fcF402F6c5CB9f7C33fd/info.json @@ -2,6 +2,8 @@ "name": "PieDAO BTC++", "website": "https://piedao.org", "short_description": "Diversified Bitcoin exposure on Ethereum", - "socials": ["https://twitter.com/PieDAO_DeFi"], + "socials": [ + "https://twitter.com/PieDAO_DeFi" + ], "explorer": "https://etherscan.io/token/0x0327112423f3a68efdf1fcf402f6c5cb9f7c33fd" } \ No newline at end of file diff --git a/blockchains/ethereum/assets/0x0703Fb3CCF77D117Ecbb19774b5f97c5a4875c9D/info.json b/blockchains/ethereum/assets/0x0703Fb3CCF77D117Ecbb19774b5f97c5a4875c9D/info.json index 0b3935de5..52c38382a 100644 --- a/blockchains/ethereum/assets/0x0703Fb3CCF77D117Ecbb19774b5f97c5a4875c9D/info.json +++ b/blockchains/ethereum/assets/0x0703Fb3CCF77D117Ecbb19774b5f97c5a4875c9D/info.json @@ -1,6 +1,6 @@ { - "name": "Digital CHF", - "symbol": "DCHF", - "smart_contract": "0x0703Fb3CCF77D117Ecbb19774b5f97c5a4875c9D", - "explorer": "https://etherscan.io/token/0x0703Fb3CCF77D117Ecbb19774b5f97c5a4875c9D" + "name": "Digital CHF", + "website": "", + "short_description": "", + "explorer": "https://etherscan.io/token/0x0703Fb3CCF77D117Ecbb19774b5f97c5a4875c9D" } \ No newline at end of file diff --git a/blockchains/ethereum/assets/0x0D24e4A32B174ff6777059D4fD6bF8CFE031014b/info.json b/blockchains/ethereum/assets/0x0D24e4A32B174ff6777059D4fD6bF8CFE031014b/info.json index dfbac07c4..d83f33f28 100644 --- a/blockchains/ethereum/assets/0x0D24e4A32B174ff6777059D4fD6bF8CFE031014b/info.json +++ b/blockchains/ethereum/assets/0x0D24e4A32B174ff6777059D4fD6bF8CFE031014b/info.json @@ -1,5 +1,4 @@ { - "name": "BitPhantom Pro", "website": "https://pro.bitphantom.io", "source_code": "https://github.com/bitphantom-ops", @@ -19,5 +18,4 @@ } ], "explorer": "https://etherscan.io/token/0x0D24e4A32B174ff6777059D4fD6bF8CFE031014b" -} - +} \ No newline at end of file diff --git a/blockchains/ethereum/assets/0x187C4B0e3819017a5cf07af81A4E2b16166aAbc6/logo.png b/blockchains/ethereum/assets/0x187C4B0e3819017a5cf07af81A4E2b16166aAbc6/logo.png deleted file mode 100644 index 07c41bcc8776132f17338cfb73cd9430d1e9279f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7200 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 literal 0 HcmV?d00001 diff --git a/blockchains/ethereum/assets/0x211d6373313dAfa21789767E2A255e0C435E7F5d/info.json b/blockchains/ethereum/assets/0x211d6373313dAfa21789767E2A255e0C435E7F5d/info.json index 4ec3a2adf..a5028dbc1 100644 --- a/blockchains/ethereum/assets/0x211d6373313dAfa21789767E2A255e0C435E7F5d/info.json +++ b/blockchains/ethereum/assets/0x211d6373313dAfa21789767E2A255e0C435E7F5d/info.json @@ -1,6 +1,6 @@ { - "name": "USDI", - "website": "https://otfund.io/", - "short_description": "USDI payment gateway.", - "explorer": "https://etherscan.io/token/0x211d6373313dAfa21789767E2A255e0C435E7F5d" -} + "name": "USDI", + "website": "https://otfund.io/", + "short_description": "USDI payment gateway.", + "explorer": "https://etherscan.io/token/0x211d6373313dAfa21789767E2A255e0C435E7F5d" +} \ No newline at end of file diff --git a/blockchains/ethereum/assets/0x2d71983E810B9e95258966B9c164C4d61a829bA9/logo.png b/blockchains/ethereum/assets/0x2d71983E810B9e95258966B9c164C4d61a829bA9/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..84aa4fb0fb6813347cc4adadfefceca9dbea6d94 GIT binary patch literal 7462 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 EFT0|yUjP6A literal 0 HcmV?d00001 diff --git a/blockchains/ethereum/assets/0xd5dad1DB7F112037c0c6Cf0792dc2a7866Bfd136/logo.png b/blockchains/ethereum/assets/0x340eF83Ec8560892168D4062720F030460468656/logo.png similarity index 100% rename from blockchains/ethereum/assets/0xd5dad1DB7F112037c0c6Cf0792dc2a7866Bfd136/logo.png rename to blockchains/ethereum/assets/0x340eF83Ec8560892168D4062720F030460468656/logo.png diff --git a/blockchains/ethereum/assets/0x3A4A0D5b8dfAcd651EE28ed4fFEBf91500345489/info.json b/blockchains/ethereum/assets/0x3A4A0D5b8dfAcd651EE28ed4fFEBf91500345489/info.json index 83f26ba8f..52eaeaafd 100644 --- a/blockchains/ethereum/assets/0x3A4A0D5b8dfAcd651EE28ed4fFEBf91500345489/info.json +++ b/blockchains/ethereum/assets/0x3A4A0D5b8dfAcd651EE28ed4fFEBf91500345489/info.json @@ -18,4 +18,4 @@ "handle": "Polar berry" } ] -} +} \ No newline at end of file diff --git a/blockchains/ethereum/assets/0x3aFfCCa64c2A6f4e3B6Bd9c64CD2C969EFd1ECBe/logo.png b/blockchains/ethereum/assets/0x3aFfCCa64c2A6f4e3B6Bd9c64CD2C969EFd1ECBe/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..512e9c4f003f08a4ddd53220763ba2f125cb6928 GIT binary patch literal 5719 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 l5*+;Bmmk1Y)kq1P#1+>}hC00004XF*Lt006O% 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 `iA@I%Mlg* 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 JdIg)v{{afa { - const assets = readDirSync(getChainAssetsPath(chain)) + const assets = getChainAssetsList(chain) const whitelistPath = getChainWhitelistPath(chain) const blacklistPath = getChainBlacklistPath(chain) @@ -70,6 +72,19 @@ function formatValidators() { }) } +function formatInfo() { + ethSidechains.forEach(chain => { + const chainAssets = getChainAssetsList(chain) + chainAssets.forEach(address => { + if (isChainAssetInfoExistSync(chain, address)) { + const chainAssetInfoPath = getChainAssetInfoPath(chain, address) + const currentAssetInfo = JSON.parse(readFileSync(chainAssetInfoPath)) + fs.writeFileSync(chainAssetInfoPath, JSON.stringify(currentAssetInfo, null, 4)) + } + }) + }) +} + function getRemovedAddressesFromAssets(assets: string[], whiteList: string[]): string[] { const mappedAssets = mapList(assets) const removed = whiteList.filter(a => !mappedAssets.hasOwnProperty(a)) diff --git a/src/test/helpers.ts b/src/test/helpers.ts index efa9e8eab..1f054d765 100644 --- a/src/test/helpers.ts +++ b/src/test/helpers.ts @@ -7,6 +7,7 @@ const web3 = new Web3('ws://localhost:8546'); import { CoinTypeUtils, CoinType } from "@trustwallet/types"; const sizeOf = require("image-size"); const { execSync } = require('child_process'); +import { AssetInfo } from "../../src/test/models"; export const getChainName = (id: CoinType): string => CoinTypeUtils.id(id) // 60 => ethereum export const Binance = getChainName(CoinType.binance) @@ -57,6 +58,7 @@ export const maxLogoHeight = 512 export const getChainAssetPath = (chain: string, address: string) => `${getChainAssetsPath(chain)}/${address}` export const getChainAssetLogoPath = (chain: string, address: string) => `${getChainAssetsPath(chain)}/${address}/${logo}` export const getChainAssetFilesList = (chain: string, address: string) => readDirSync(getChainAssetPath(chain, address)) +export const getChainAssetsList = (chain: string): string[] => readDirSync(getChainAssetsPath(chain)) export const getChainValidatorsPath = (chain: string): string => `${chainsFolderPath}/${chain}/validators` export const getChainValidatorsAssets = (chain: string): string[] => readDirSync(getChainValidatorsAssetsPath(chain)) export const getChainValidatorsListPath = (chain: string): string => `${(getChainValidatorsPath(chain))}/list.${jsonExtension}` @@ -83,6 +85,7 @@ export const isPathExistsSync = (path: string): boolean => fs.existsSync(path) export const isChainWhitelistExistSync = (chain: string): boolean => isPathExistsSync(getChainWhitelistPath(chain)) export const isChainBlacklistExistSync = (chain: string): boolean => isPathExistsSync(getChainBlacklistPath(chain)) export const isChainInfoExistSync = (chain: string): boolean => isPathExistsSync(getChainInfoPath(chain)) +export const isChainAssetInfoExistSync = (chain: string, address: string) => isPathExistsSync(getChainAssetInfoPath(chain, address)) export const readFileSync = (path: string) => fs.readFileSync(path, 'utf8') export const writeFileSync = (path: string, str: string) => fs.writeFileSync(path, str) @@ -90,7 +93,7 @@ export const isLowerCase = (str: string): boolean => str.toLowerCase() === str export const isUpperCase = (str: string): boolean => str.toUpperCase() === str export const isChecksum = (address: string): boolean => web3.utils.checkAddressChecksum(address) export const toChecksum = (address: string): string => web3.utils.toChecksumAddress(address) -export const getBinanceBEP2Symbols = async () => axios.get(`https://dex-atlantic.binance.org/api/v1/tokens?limit=1000`).then(res => res.data.map(({symbol}) => symbol)) +export const getBinanceBEP2Symbols = async () => axios.get(`https://dex-atlantic.binance.org/api/v1/tokens?limit=1000`).then(res => res.data.map(({ symbol }) => symbol)) export const getFileName = (fileName: string): string => path.basename(fileName, path.extname(fileName)) export const getFileExt = (name: string): string => name.slice((Math.max(0, name.lastIndexOf(".")) || Infinity) + 1) @@ -204,6 +207,30 @@ export const isValidatorHasAllKeys = (val: ValidatorModel): boolean => { && typeof val.website === "string" } +export function isAssetInfoOK(chain: string, address: string): boolean { + if (isChainAssetInfoExistSync(chain, address)) { + const assetInfoPath = getChainAssetInfoPath(chain, address) + const isInfoOK = isValidJSON(assetInfoPath) + if (isInfoOK && isAssetInfoHasAllKeys(assetInfoPath)) { + return true + } + + return false + } + return true +} + +export function isAssetInfoHasAllKeys(path: string): boolean { + const info: AssetInfo = JSON.parse(readFileSync(path)) + + const isKeysCorrentType = typeof info.explorer === "string" && info.explorer != "" + && typeof info.name === "string" && info.name != "" + && typeof info.website === "string" + && typeof info.short_description === "string" + + return isKeysCorrentType +} + export const rootDirAllowedFiles = [ ".github", "blockchains", diff --git a/src/test/index.test.ts b/src/test/index.test.ts index 0078ad9ac..2016706c2 100644 --- a/src/test/index.test.ts +++ b/src/test/index.test.ts @@ -1,41 +1,43 @@ const eztz = require('eztz-lib') import { - Binance, Cosmos, Tezos, Tron, IoTeX, Waves, - ethSidechains, + Binance, Cosmos, Tezos, Tron, IoTeX, Waves, Kava, Terra, + assetFolderAllowedFiles, chainsFolderPath, - pricingFolderPath, - getChainLogoPath, - getChainAssetsPath, + ethSidechains, + findFiles, + getBinanceBEP2Symbols, getChainAssetLogoPath, + getChainAssetPath, + getChainAssetsPath, + getChainBlacklistPath, + getChainLogoPath, + getChainValidatorAssetLogoPath, getChainValidatorsAssets, getChainValidatorsListPath, - getChainValidatorAssetLogoPath, - readDirSync, - isPathExistsSync, - readFileSync, - isLowerCase, - isChecksum, - isPathDir, - getBinanceBEP2Symbols, - isTRC10, isTRC20, isWavesAddress, isSolanaAddress, - isLogoOK, getChainWhitelistPath, - getChainBlacklistPath, - mapList, - findFiles, + getChainAssetsList, + isChecksum, + isChainAssetInfoExistSync, + isLogoOK, + isLowerCase, + isPathDir, + isPathExistsSync, + isTRC10, isTRC20, isWavesAddress, isValidJSON, + isAssetInfoOK, isValidatorHasAllKeys, - getChainAssetPath, + mapList, + pricingFolderPath, + readDirSync, + readFileSync, rootDirAllowedFiles, - assetFolderAllowedFiles, stakingChains, - Kava, - Terra, Solana } from "./helpers" import { ValidatorModel } from "./models"; import { getHandle } from "../../script/gen_info"; + enum TickerType { Token = "token", Coin = "coin" @@ -88,24 +90,28 @@ describe(`Test "blockchains" folder`, () => { describe("Check Ethereum side-chain folders", () => { ethSidechains.forEach(chain => { test(`Test chain ${chain} folder`, () => { - const assetsPath = getChainAssetsPath(chain) - readDirSync(assetsPath).forEach(addr => { - const assetPath = getChainAssetPath(chain, addr) + getChainAssetsList(chain).forEach(address => { + const assetPath = getChainAssetPath(chain, address) expect(isPathDir(assetPath), `Expect directory at path: ${assetPath}`).toBe(true) - const checksum = isChecksum(addr) + const checksum = isChecksum(address) expect(checksum, `Expect asset at path ${assetPath} in checksum`).toBe(true) - const lowercase = isLowerCase(addr) + const lowercase = isLowerCase(address) if (lowercase) { - expect(checksum, `Lowercase address ${addr} on chain ${chain} should be in checksum`).toBe(true) + expect(checksum, `Lowercase address ${address} on chain ${chain} should be in checksum`).toBe(true) } - const assetLogoPath = getChainAssetLogoPath(chain, addr) + const assetLogoPath = getChainAssetLogoPath(chain, address) expect(isPathExistsSync(assetLogoPath), `Missing file at path "${assetLogoPath}"`).toBe(true) + const [isOk, msg] = isLogoOK(assetLogoPath) expect(isOk, msg).toBe(true) + + if (isChainAssetInfoExistSync(chain, address)) { + expect(isAssetInfoOK(chain, address), `Asset file info at path ${assetPath} is not OK`).toBe(true) + } }) }) }) @@ -232,13 +238,13 @@ function testWavesValidatorsAssets(assets: string[]) { }) } -function testSolanaValidatorsAssets(assets: string[]) { - test("Solana assets must have correct format", () => { - assets.forEach(addr => { - expect(isSolanaAddress(addr), `Address ${addr} should be Solana formated`).toBe(true) - }) - }) -} +// function testSolanaValidatorsAssets(assets: string[]) { +// test("Solana assets must have correct format", () => { +// assets.forEach(addr => { +// expect(isSolanaAddress(addr), `Address ${addr} should be Solana formated`).toBe(true) +// }) +// }) +// } function testCosmosValidatorsAddress(assets: string[]) { test("Cosmos assets must have correct format", () => { diff --git a/src/test/models.ts b/src/test/models.ts index 712d64852..0dd2f8958 100644 --- a/src/test/models.ts +++ b/src/test/models.ts @@ -5,7 +5,15 @@ export interface ValidatorModel { website: string, } -export interface InfoList { +// Minimal property requirements for asset info file +export interface AssetInfo { + explorer: string; + name: string; + short_description: string; + website: string; +} + +export interface CoinInfoList { name: string; website: string; source_code: string;