Format asset info.json + add test to check. Daily update.
|
@ -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"
|
||||
}
|
|
@ -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"
|
||||
}
|
|
@ -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"
|
||||
}
|
||||
|
||||
}
|
Before Width: | Height: | Size: 7.0 KiB |
After Width: | Height: | Size: 6.2 KiB |
|
@ -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"
|
||||
}
|
After Width: | Height: | Size: 7.3 KiB |
After Width: | Height: | Size: 3.4 KiB |
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
|
@ -18,4 +18,4 @@
|
|||
"handle": "Polar berry"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 5.6 KiB |
|
@ -4,6 +4,7 @@
|
|||
"source_code": "https://github.com/blocksquare",
|
||||
"short_description": "Increase value and liquidity of real estate properties in your portfolio.",
|
||||
"description": "Increase value and liquidity of real estate properties in your portfolio.",
|
||||
"explorer": "https://etherscan.io/address/0x509a38b7a1cc0dcd83aa9d06214663d9ec7c7f4a",
|
||||
"socials": [
|
||||
{
|
||||
"name": "Twitter",
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Ltconlinemarkets",
|
||||
"website": "https://ltconlinemarkets.com/Token/",
|
||||
"short_description": "LOM is a collaborative and decentralised solution for the globalsourcing and problems.I",
|
||||
"explorer": "https://etherscan.io/address/0x64f64a26873ffbd11188679fb85fe00b6a2dde27"
|
||||
{
|
||||
"name": "Ltconlinemarkets",
|
||||
"website": "https://ltconlinemarkets.com/Token/",
|
||||
"short_description": "LOM is a collaborative and decentralised solution for the globalsourcing and problems.I",
|
||||
"explorer": "https://etherscan.io/address/0x64f64a26873ffbd11188679fb85fe00b6a2dde27"
|
||||
}
|
|
@ -1,12 +1,6 @@
|
|||
{
|
||||
"name": "World Wide Web Coin (WWW)",
|
||||
"website": "https://norisk.trade",
|
||||
"short_description": "WWW is a Stable Coin which want to sell Internet throughout the world.Backed stablecoins are subject to the same volatility and risk associated with the backing asset. If the backed stablecoin is backed in a decentralized manner, then they are relatively safe from predation, but if there is a central vault, they may be robbed, of suffer loss of confidence.",
|
||||
"explorers": [
|
||||
{
|
||||
"name": "Etherscan",
|
||||
"url": "https://etherscan.io/address/0x6a0ae448da83d73b291a199b798d13bb2e7d664d"
|
||||
}
|
||||
],
|
||||
"data_source": "crowd"
|
||||
{
|
||||
"name": "World Wide Web Coin (WWW)",
|
||||
"website": "https://norisk.trade",
|
||||
"short_description": "WWW is a Stable Coin which want to sell Internet throughout the world.Backed stablecoins are subject to the same volatility and risk associated with the backing asset. If the backed stablecoin is backed in a decentralized manner, then they are relatively safe from predation, but if there is a central vault, they may be robbed, of suffer loss of confidence.",
|
||||
"explorer": "https://etherscan.io/address/0x6a0ae448da83d73b291a199b798d13bb2e7d664d"
|
||||
}
|
After Width: | Height: | Size: 5.9 KiB |
|
@ -2,11 +2,5 @@
|
|||
"name": "NaGa",
|
||||
"website": "https://nagatrade.com",
|
||||
"short_description": "Binary options trading platform",
|
||||
"explorers": [
|
||||
{
|
||||
"name": "Etherscan",
|
||||
"url": "https://etherscan.io/token/0x73145e8603c71fffdc4e37e6957a6c55db00ed23"
|
||||
}
|
||||
],
|
||||
"data_source": "crowd"
|
||||
}
|
||||
"explorer": "https://etherscan.io/token/0x73145e8603c71fffdc4e37e6957a6c55db00ed23"
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "OTFund",
|
||||
"website": "https://otfund.io/",
|
||||
"short_description": "OTFUND is the first open-end fund plaform integrates BLOCKCHAIN on DAPP GAME, DIGITAL LOTTERY, DIGITAL TRADING, GAME ONLINE, BLOCKCHAIN ACADEMY, E-COMMERCE SHARING ECONOMY which is officially launched in October.",
|
||||
"explorer": "https://etherscan.io/token/0x75A93C11dFF32A4312057714257758B113a0F512"
|
||||
}
|
||||
"name": "OTFund",
|
||||
"website": "https://otfund.io/",
|
||||
"short_description": "OTFUND is the first open-end fund plaform integrates BLOCKCHAIN on DAPP GAME, DIGITAL LOTTERY, DIGITAL TRADING, GAME ONLINE, BLOCKCHAIN ACADEMY, E-COMMERCE SHARING ECONOMY which is officially launched in October.",
|
||||
"explorer": "https://etherscan.io/token/0x75A93C11dFF32A4312057714257758B113a0F512"
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"Name": "REBITCOIN",
|
||||
"Symbol": "RBTC",
|
||||
"name": "REBITCOIN",
|
||||
"website": "",
|
||||
"short_description": "REBITCOIN",
|
||||
"explorer": "https://etherscan.io/token/0x7f65BE7FAd0c22813e51746E7e8f13a20bAa9411"
|
||||
}
|
||||
}
|
|
@ -1,12 +1,6 @@
|
|||
{
|
||||
"name": "Tether DeFi (USDD)",
|
||||
"website": "https://tetherdefi.com",
|
||||
"short_description": "Tether DeFi (USDD) is called a stablecoin because it was originally designed to always be worth $1.00, maintaining $1.00 in reserves for each tether issued. Nevertheless, Tether DeFi (USDD) Limited states that owners of tethers have no contractual right, other legal claims, or guarantee that tethers will be redeemed or exchanged for dollars.",
|
||||
"explorers": [
|
||||
{
|
||||
"name": "Etherscan",
|
||||
"url": "https://etherscan.io/token/0x861d899E74eC0e84fa8A15Ba58088Bb3BACcb6FA"
|
||||
}
|
||||
],
|
||||
"data_source": "crowd"
|
||||
{
|
||||
"name": "Tether DeFi (USDD)",
|
||||
"website": "https://tetherdefi.com",
|
||||
"short_description": "Tether DeFi (USDD) is called a stablecoin because it was originally designed to always be worth $1.00, maintaining $1.00 in reserves for each tether issued. Nevertheless, Tether DeFi (USDD) Limited states that owners of tethers have no contractual right, other legal claims, or guarantee that tethers will be redeemed or exchanged for dollars.",
|
||||
"explorer": "https://etherscan.io/token/0x861d899E74eC0e84fa8A15Ba58088Bb3BACcb6FA"
|
||||
}
|
Before Width: | Height: | Size: 43 KiB |
|
@ -3,4 +3,4 @@
|
|||
"website": "https://www.mtpelerin.com",
|
||||
"short_description": "Mt Pelerin company shares issued on blockchain and recognized as shares providing the same level of protection conferred by Swiss law",
|
||||
"explorer": "https://etherscan.io/token/0x96c645d3d3706f793ef52c19bbace441900ed47d"
|
||||
}
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "CryptoBRL",
|
||||
"website": "https://cryptobrl.com",
|
||||
"short_description": "The CryptoBRL is a stablecoin pegged one for one to the Brazilian Real. It's supported and adopted by a consortium with several companies from Brazilian cryptocurrency market. Every token is backed by traditional currency, the reserve holdings are published and subject to 'distributed audits', from the companies in the consortium and other important players from the crypto-market.",
|
||||
"explorer": "https://etherscan.io/token/0xa6fa6531acdf1f9f96eddd66a0f9481e35c2e42a"
|
||||
{
|
||||
"name": "CryptoBRL",
|
||||
"website": "https://cryptobrl.com",
|
||||
"short_description": "The CryptoBRL is a stablecoin pegged one for one to the Brazilian Real. It's supported and adopted by a consortium with several companies from Brazilian cryptocurrency market. Every token is backed by traditional currency, the reserve holdings are published and subject to 'distributed audits', from the companies in the consortium and other important players from the crypto-market.",
|
||||
"explorer": "https://etherscan.io/token/0xa6fa6531acdf1f9f96eddd66a0f9481e35c2e42a"
|
||||
}
|
|
@ -1,5 +1,6 @@
|
|||
{
|
||||
"name": "CRYPTOASH Token",
|
||||
"short_description": "CRYPTOASH Token (CryptASH) is an ERC20 based token, it's an open source unlicesed token created by Telegram crypto community with love on Ethereum platform.",
|
||||
"explorer": "https://etherscan.io/token/0xb2ee225350337d17f5a5ea037a0f0b6172df5a4a"
|
||||
{
|
||||
"name": "CRYPTOASH Token",
|
||||
"website": "",
|
||||
"short_description": "CRYPTOASH Token (CryptASH) is an ERC20 based token, it's an open source unlicesed token created by Telegram crypto community with love on Ethereum platform.",
|
||||
"explorer": "https://etherscan.io/token/0xb2ee225350337d17f5a5ea037a0f0b6172df5a4a"
|
||||
}
|
|
@ -1,13 +1,13 @@
|
|||
{
|
||||
"name": "USDX",
|
||||
"description": "A fast way to transfer money globally in secured digital transactions.",
|
||||
"short_description": "A fast way to transfer money globally in secured digital transactions.",
|
||||
"website": "",
|
||||
"socials": [
|
||||
{
|
||||
"name": "Twitter",
|
||||
"url": "https://twitter.com/coinusdx",
|
||||
"handle": "coinusdx"
|
||||
}
|
||||
|
||||
],
|
||||
"explorer": "https://etherscan.io/token/0xbec4a69d6a5fbcb2303c13d24ea1a51a6f19bd12"
|
||||
}
|
|
@ -3,4 +3,4 @@
|
|||
"website": "https://protonchain.com",
|
||||
"short_description": "Proton is a new public blockchain and dApp platform designed for both consumer applications and P2P payments. It is built around a secure identity and financial settlements layer that allows users to directly link real identity and fiat accounts, pull funds and use crypto seamlessly.",
|
||||
"explorer": "https://etherscan.io/token/0xD7EFB00d12C2c13131FD319336Fdf952525dA2af"
|
||||
}
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "OxyCoin",
|
||||
"symbol": "OXY",
|
||||
"symbol": "OXY",
|
||||
"website": "https://www.oxy-coin.com",
|
||||
"short_description": "OxyCoin (OXY) is an ERC20 Token that supplied 244,140,625,000,000,000,000 coins",
|
||||
"explorer": "https://etherscan.io/token/0xd83a162d4808c370a1445646e64cc4861eb60b92"
|
||||
}
|
||||
}
|
|
@ -1,5 +1,6 @@
|
|||
{
|
||||
"name": "BRO",
|
||||
"short_description": "BROCoin is a friend token.",
|
||||
"website": "",
|
||||
"explorer": "https://etherscan.io/token/0xF41804cf0720eca53c7297Eb3BF2B61465a9DBbe"
|
||||
}
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"Name": "REBITCOIN",
|
||||
"Symbol": "RBTC",
|
||||
"name": "REBITCOIN",
|
||||
"website": "",
|
||||
"short_description": "REBITCOIN token.",
|
||||
"explorer": "https://etherscan.io/token/0xae690cf07c85bfb2de29ab32080c0ea182ae82b5"
|
||||
}
|
||||
}
|
|
@ -1,20 +1,20 @@
|
|||
{
|
||||
"name": "Azuma coin",
|
||||
"website": "https://azumacoin.io/",
|
||||
"white_paper": "https://www.azumacoin.io/static/Azuma_WP_Sep17-2b944767e8ac9abe89bd3ae0fdf6cfa1.pdf",
|
||||
"short_description": "Azuma Games is a crypto game development company striving to integrate AAA graphics, exciting game-play, and crypto rewards. Azuma Coin is our native token.",
|
||||
"description": "Azuma Games is a crypto game development company striving to integrate AAA graphics, exciting game-play, and crypto rewards. Azuma Coin is our native token.",
|
||||
"socials": [
|
||||
{
|
||||
"name": "Twitter",
|
||||
"url": "https://twitter.com/gamesazuma",
|
||||
"handle": "GamesAzuma"
|
||||
},
|
||||
{
|
||||
"name": "Telegram",
|
||||
"url": "https://t.me/azumagames",
|
||||
"handle": "AzumaGames"
|
||||
}
|
||||
],
|
||||
"explorer": "https://etherscan.io/token/0xd26a9c3437f7d121098c8c05c7413f5cc70bb070"
|
||||
}
|
||||
{
|
||||
"name": "Azuma coin",
|
||||
"website": "https://azumacoin.io/",
|
||||
"white_paper": "https://www.azumacoin.io/static/Azuma_WP_Sep17-2b944767e8ac9abe89bd3ae0fdf6cfa1.pdf",
|
||||
"short_description": "Azuma Games is a crypto game development company striving to integrate AAA graphics, exciting game-play, and crypto rewards. Azuma Coin is our native token.",
|
||||
"description": "Azuma Games is a crypto game development company striving to integrate AAA graphics, exciting game-play, and crypto rewards. Azuma Coin is our native token.",
|
||||
"socials": [
|
||||
{
|
||||
"name": "Twitter",
|
||||
"url": "https://twitter.com/gamesazuma",
|
||||
"handle": "GamesAzuma"
|
||||
},
|
||||
{
|
||||
"name": "Telegram",
|
||||
"url": "https://t.me/azumagames",
|
||||
"handle": "AzumaGames"
|
||||
}
|
||||
],
|
||||
"explorer": "https://etherscan.io/token/0xd26a9c3437f7d121098c8c05c7413f5cc70bb070"
|
||||
}
|
After Width: | Height: | Size: 6.2 KiB |
|
@ -160,6 +160,7 @@
|
|||
"0x0A149deE25eE0D8C9BbAF99620c4Cb94B606bcdE",
|
||||
"0x0A2e35eEc795c1e758FbF885852CA4cC47B36002",
|
||||
"0x0A2eA71d943BF917b410593194595e1f48d40e54",
|
||||
"0x0a3349B9d99Fa76F08Ac664d5e98c3A2bC43Adc7",
|
||||
"0x0a3e99cF6a1ff8bEBbCA072CD5F203bCC25F5da6",
|
||||
"0x0A4F13087cc27f2A9A437a579AC48761946eac64",
|
||||
"0x0A8F477588C7d6d91247B207b775d3Fce0013425",
|
||||
|
@ -345,6 +346,7 @@
|
|||
"0x1866c6907E70eB176109363492B95e3617b4A195",
|
||||
"0x186963Cae27017959F012Aff82aaAf528C0C5f5a",
|
||||
"0x18697CF1A26CfD939D68B58EDDc21284bb2f84BE",
|
||||
"0x187C4B0e3819017a5cf07af81A4E2b16166aAbc6",
|
||||
"0x1880744F57aa935f9155675730D17E43B9B624e4",
|
||||
"0x188A7c473D94F5c5ed21Bc2E820CF51934b40388",
|
||||
"0x18A753C76633351143b7F69CE8fF00Ec22BCdBBb",
|
||||
|
@ -483,6 +485,7 @@
|
|||
"0x211893cEf35F6650337CFe81A32B52F214BC5f83",
|
||||
"0x212936750AeDd9715aE981dCb6C5c2a72B86773B",
|
||||
"0x2135109f53d03CC782058eaDEe69C0B255D000F8",
|
||||
"0x2144DF04A44086fCf28290cF050A3F038A87f049",
|
||||
"0x21450F382a5C5C60869339aFb308154629A687De",
|
||||
"0x2155d93d837B35D0e6ADDbEaf3e907e2B0cB65bB",
|
||||
"0x218d9C723464CD066345e004B282476a1995924B",
|
||||
|
@ -721,6 +724,7 @@
|
|||
"0x332976B93405b3205A67cE9a889b03183B705B74",
|
||||
"0x3347521c33BCb5F60A03bB8505A2aD7693342a77",
|
||||
"0x338c8A4fF27F1d03165c037F762C598f08176c6C",
|
||||
"0x339A1D6D186098B47ede6c67429aEC9D71EE4bBB",
|
||||
"0x33C8A345830636556160C2ebc3AbB90be2e1252b",
|
||||
"0x33EE42B6025f10A71c883fFb298655fB22C9C825",
|
||||
"0x340716f8428e9A548b86ac9995621fD1e2e9d0A1",
|
||||
|
@ -1643,6 +1647,7 @@
|
|||
"0x72ad1D9c892d648B39Ad54A4F00ba4EaF1413620",
|
||||
"0x72B4d10e40418a658684F34a58A983bEcb2e4A30",
|
||||
"0x72cBAe31BC03D282BB26595fA9C0c2918A4C0CC7",
|
||||
"0x72dD9Ec1326f5359e42f1F8e020bFc3F3de59940",
|
||||
"0x72E42Cbed7b53A79bc528Ae4Ca37369182b6832b",
|
||||
"0x72F18Fe8617504AeB54D9D55A39547F4f91dA2ea",
|
||||
"0x730b306c75A1A0A50bF05b397Be377C2Af341608",
|
||||
|
@ -1764,6 +1769,7 @@
|
|||
"0x7a50cbe52ad327fF7B2692d5575260202EdcEa1E",
|
||||
"0x7a5DaB48EC20725c226DF4A1Df7f151834E1D53e",
|
||||
"0x7A8141390155a6Ed41E3437029268bDADf3852Df",
|
||||
"0x7a87c17c7C9fEAf32db3d944Ec1c2353C082D3E6",
|
||||
"0x7A8ffbEdAe7CE168819fAAdEE77333f96F88a763",
|
||||
"0x7aA4b6272f22755Dfbc00Dc8342046cF5F90Bd0b",
|
||||
"0x7AA90aCD5D6e86000d88AD9B180215FAeB480663",
|
||||
|
@ -2045,6 +2051,7 @@
|
|||
"0x8d604EC183903dcd52A3aF17dcc52bdF1CD5bc24",
|
||||
"0x8D6B9ef7A8f7D7959Bf3eF50FbC7Be0766E4070a",
|
||||
"0x8d7dd7B604b4e0A8Dd3Cc343522cAA2Aa426e6E7",
|
||||
"0x8d8AbB4Dc065BBD45b7Ddb281DdF17e94d66b7dC",
|
||||
"0x8D8b7FDf074AB27DBe6dB9a9028cEE5867CF39f6",
|
||||
"0x8D9588C080e7BbF2c0aB00337844F252F851bF85",
|
||||
"0x8dc3be37a1D83A174A4d417980BCB455e347BA65",
|
||||
|
@ -2066,6 +2073,7 @@
|
|||
"0x8f5f964F3B38282e6A3d16B5a14DA0fa1b1c4A3B",
|
||||
"0x8F6a88E38B6Bb281BE548AcD5b6aD546C433C3D5",
|
||||
"0x8F941cdDfbe9bb155F284E771270985a1fEa98f3",
|
||||
"0x8F9bfe5b6A5C3fEa8c64ad41a5Cf6f60Ec4aa47c",
|
||||
"0x8fA51B94d32D138aaa44EE43A6F9e5e2868aEe9f",
|
||||
"0x8FAd0E0813D549f72db329e3b34649DdC76acDdA",
|
||||
"0x8fae5fE2b7ADc264B1Fb55f77b553Af480AAD185",
|
||||
|
@ -2234,6 +2242,7 @@
|
|||
"0x99ef076804ce6076Dd98205A9417C50D728Bc1f6",
|
||||
"0x9a1F116665C6625C3AE024ebfEcEDF4Aac061814",
|
||||
"0x9A2B38227b28ddd7d683F1801DD43444C090867b",
|
||||
"0x9a5CFE95919e86308737059076784dB1b1f8Fc28",
|
||||
"0x9a88c80aa2F73F4B9687CaD5E076A225bc43EcDf",
|
||||
"0x9A9dbffF8923d43d770566fAe1e39b34Ba9a1C35",
|
||||
"0x9Aa004F140B8358B8593F9379CD323d1043b97e5",
|
||||
|
@ -2523,6 +2532,7 @@
|
|||
"0xAE564767D77D825d645148858FCcaACab4032f2a",
|
||||
"0xAe611aC177dD1D253482D437E4cBb3ee6010251C",
|
||||
"0xaE6E071De3B277952b56CB7fc1b5C7cB02D5B4a9",
|
||||
"0xae79Cf9362b289036797828044fA2e541762b394",
|
||||
"0xaE8bf6E600C6833182Ba2e1d90615d0eD6dB398f",
|
||||
"0xAE8ca95A969f9738Dfbdb3957647c735e436Ff23",
|
||||
"0xae90e0F7F3f2191B17b1816dFA8C5Ce8e049DC96",
|
||||
|
@ -2548,6 +2558,7 @@
|
|||
"0xaF7D37EFb8fE7198Ed55Cb5254EF0B357DB6049F",
|
||||
"0xAfd614849563975b249e65551Cd2e8f53B410c80",
|
||||
"0xaFE8BD57DEC343279Ec0f628813DAF2DF18e0A70",
|
||||
"0xb00707bF77c74C3f1CE899B230b9f0ACDD7FE6e2",
|
||||
"0xb0083C29f9Aa3a04cd60d61e5ffA1C7297015D31",
|
||||
"0xB0114bbDCe17e0AF91b2Be32916a1e236cf6034F",
|
||||
"0xb0192a32D80e9CfBe8b054664968A6B61de56E57",
|
||||
|
@ -2810,6 +2821,7 @@
|
|||
"0xC0eB2d33B7405F1337B18cdeA06E62AD6564D1d6",
|
||||
"0xc0F2c2bC8C066cA7B218F781A6741ba6b50FF5D8",
|
||||
"0xc1013ACD27091812F32b59E1D28F08Ad502dAC92",
|
||||
"0xC11135Fbdd294b88Ba50bD7c34D072cbbA0B95f3",
|
||||
"0xC141140E34Ebf78921FE4F721fB89A1f360dF83C",
|
||||
"0xC152537E5AC59De776Ea2B50FfC53A61DeCe0e16",
|
||||
"0xc161A7c391BE6f0B1fDc4192a11560bf8d3066f2",
|
||||
|
@ -2876,6 +2888,7 @@
|
|||
"0xc51c6f6A9692F12D6F611ACdd74eA9273C1e32fE",
|
||||
"0xC54a73fe64Cebc165637381639e8578e7e7000bc",
|
||||
"0xC552A1c458002b5C13f76aC08d06Fe0A6C56C022",
|
||||
"0xc55aBAa80EC522c07b3df6F8Abb6438d3a23Aa45",
|
||||
"0xc563b7d10c04C1E1FfccbFA31cB3D67b9698Aa8A",
|
||||
"0xc569b368D2F6Ce6aE819CaDDEDFd95dCe3390d51",
|
||||
"0xc5719917b5Dc935CdfC26FeC8F3a64b01f6DC220",
|
||||
|
@ -2903,6 +2916,7 @@
|
|||
"0xC6a6fc4BdB74E68AeC4E90bc344244a69b41BdeF",
|
||||
"0xC6EebD4a45a8Ff06C7e26365ddE2C0DfC488da36",
|
||||
"0xC6F2e513cf0930F890C4aBD265Fa444262958732",
|
||||
"0xc6fA78cF7B830024DC2234b25a8C0c2079bdFCD3",
|
||||
"0xc6ff88aeDBEbD082505C37e78d07967bE30FF8a5",
|
||||
"0xc6ffD2c7A0ed8FD28b65bE58F4129D176E1a991D",
|
||||
"0xc7016d35491e7639A86bBb5a9bdFdD052522E49c",
|
||||
|
@ -2946,6 +2960,7 @@
|
|||
"0xC9775Bcd7084a0892aC46eE81D6D8d8D1BadB39C",
|
||||
"0xc9795e6f22F5e10Bbb68603929B8C93293f6a567",
|
||||
"0xc99004e6a71E8f982A71adF54F456c9D1dbE755e",
|
||||
"0xC9A1757A52F2E87A2144c8b8Ec9CB075C8b50B35",
|
||||
"0xc9A954C5A302C45D87CC07efb1259Fb3DaD99ffC",
|
||||
"0xC9aEf2B4F0Ca7cBb9a8BeB1b7618Ed33978060B0",
|
||||
"0xC9b59D99Bc30B840C9F743f9233D45040342b5d0",
|
||||
|
@ -3120,6 +3135,7 @@
|
|||
"0xD58412DdB3A0A036aaB68DcfEd34B01C554FfC0d",
|
||||
"0xD5Bb0bFE5fcE8434B4f56cf7cD4109305A52fbBB",
|
||||
"0xD5bcD95f75cE7E1c567dea3b4BC45fA519713024",
|
||||
"0xd5dad1DB7F112037c0c6Cf0792dc2a7866Bfd136",
|
||||
"0xD5F80394F854571Af04B7c823fAfA8E804bA673f",
|
||||
"0xd6076EFe1E577Deec21afab6eD383b47E9D8DEc6",
|
||||
"0xd6122c4b53738Db5BB3b1f526d707836CE6C0699",
|
||||
|
@ -3689,6 +3705,7 @@
|
|||
"0xFC16EDB70ca7F8A0C2D0571BCf59dF8Ad3E49d82",
|
||||
"0xfC310e8b76BB01d94fBBBC6c808cC5bCCEC4673c",
|
||||
"0xFc364253C4485b5f5cB57E3B10CB051D5d37540b",
|
||||
"0xFC3D514AC7ec6371A5c389c5A9D4a69A6736C0AE",
|
||||
"0xFC513B192a0aB1abcF66E2844511f1BeA01ceB02",
|
||||
"0xFC5ac566CAD80b5C117eE9b896c80476973c9F00",
|
||||
"0xfC80960B59e9DFa70D192FD3689B5Fb8D80a7485",
|
||||
|
|
|
@ -469,7 +469,6 @@
|
|||
"0x186a33d4dBcd700086A26188DcB74E69bE463665",
|
||||
"0x1876c969027b4A4f95937e93E0Db2Ac2dE152009",
|
||||
"0x187abED6d17529E921aed5Dda458389e3d1c594b",
|
||||
"0x187C4B0e3819017a5cf07af81A4E2b16166aAbc6",
|
||||
"0x187D1018E8ef879BE4194d6eD7590987463eAD85",
|
||||
"0x18C525cce3ad9A48D82F91B874754be78E9d0F85",
|
||||
"0x18d3Adac07900c2507461749BE70543116C73594",
|
||||
|
@ -503,6 +502,7 @@
|
|||
"0x1A14b6dEB14Ff8eA9c101262A200bA1CEE136297",
|
||||
"0x1a2277C83930b7a64C3e3D5544Eaa8C4f946B1B7",
|
||||
"0x1a2d7C2b22a0b6Ce314dCbC30aC236303303defA",
|
||||
"0x1A3496C18d558bd9C6C8f609E1B129f67AB08163",
|
||||
"0x1A4743Cf1af4C289351390A2B3fe7c13D2F7C235",
|
||||
"0x1A4E76811D9C319A953EADa36f1DeF25156C8D93",
|
||||
"0x1A5F9352Af8aF974bFC03399e3767DF6370d82e4",
|
||||
|
@ -907,6 +907,7 @@
|
|||
"0x2d3B86234A16a1D558945c6f9C5eb2443275A4f2",
|
||||
"0x2D3E7D4870a51b918919E7B851FE19983E4c38d5",
|
||||
"0x2D476A9126D2D4135fB310aCF029F9aAcD4f85a2",
|
||||
"0x2d71983E810B9e95258966B9c164C4d61a829bA9",
|
||||
"0x2D8c4F0a1074F9895581b7aa509Bc361fe01F01b",
|
||||
"0x2d9765a94FF22e0CA3AfC3E3F4B116dE2b67582a",
|
||||
"0x2Da95f7e0093CE7DC9D9BA5f47b655108754B342",
|
||||
|
@ -929,6 +930,7 @@
|
|||
"0x2ecB13A8c458c379c4d9a7259e202De03c8F3D19",
|
||||
"0x2Ed07A2fCaEDe25871c4814e1361fc20353F40B3",
|
||||
"0x2Ef27BF41236bD859a95209e17a43Fbd26851f92",
|
||||
"0x2ef52Ed7De8c5ce03a4eF0efbe9B7450F2D7Edc9",
|
||||
"0x2F141Ce366a2462f02cEA3D12CF93E4DCa49e4Fd",
|
||||
"0x2f44A61c7d404CFc8eCb622bBBb130e56Ba786D9",
|
||||
"0x2f5e2c9002C058c063d21A06B6cabb50950130c8",
|
||||
|
@ -1021,6 +1023,7 @@
|
|||
"0x33DCd369d697132dE252884336225DE31fB474b2",
|
||||
"0x33f90Dee07c6E8B9682dD20F73E6C358B2ED0f03",
|
||||
"0x340D2bdE5Eb28c1eed91B2f790723E3B160613B7",
|
||||
"0x340eF83Ec8560892168D4062720F030460468656",
|
||||
"0x341139ab9D4b7b1e6c76801aEB0da3e23E4C453e",
|
||||
"0x3414BEC8aC9b323008b511De2E91d979183B46f5",
|
||||
"0x34364BEe11607b1963d66BCA665FDE93fCA666a8",
|
||||
|
@ -1148,6 +1151,7 @@
|
|||
"0x3AFA1902b1f8a802aBC18e5aD982D1bCd34AfE22",
|
||||
"0x3afe25a2739B5C2E08CFec439F9621D91Ff7FBFb",
|
||||
"0x3aFe47A46289B8eE2597ef8d8Ce7BEbF0f64172E",
|
||||
"0x3aFfCCa64c2A6f4e3B6Bd9c64CD2C969EFd1ECBe",
|
||||
"0x3b16fB80Ab6Ac8562203F3913f58ee0c4DFc08B8",
|
||||
"0x3b2f94C251c2CCcB7ad16a68F040A220CC2bDD72",
|
||||
"0x3B3f859ab4CebB73c3043b99c33719052265E1E7",
|
||||
|
@ -1481,6 +1485,7 @@
|
|||
"0x4c4c62A08eb49404aB85f3b4A0d6560488f2E216",
|
||||
"0x4c5601164e2048a4154DE91Fa5e0B07E626CaB7F",
|
||||
"0x4C596Bd86789D5347319E15Aedaf740b3D34aB91",
|
||||
"0x4C6584dDCdFaB7110c7b1bE47749Bde8edc9c0c9",
|
||||
"0x4C791117248aBfE101b604F5269FFD9bE794467D",
|
||||
"0x4C7Bc4D7c5e2eD2F14f8722b7Ded6c615d578C1e",
|
||||
"0x4cA16BF196440310d6dBe693758210Ca1338e011",
|
||||
|
@ -2074,6 +2079,7 @@
|
|||
"0x6B2bAB5E4b9Bc9592636c16bC4e5e07eF076cD6d",
|
||||
"0x6b414584f7DD3750a0D61b4b8692242A7dEBee06",
|
||||
"0x6b4689E4514957699eDeB2Ee91C947F18E439806",
|
||||
"0x6b74Dd5d01f8320081247F5CF1F7a48324700Db6",
|
||||
"0x6b9F1F092E0B10015a4391A80cD3E6B6cefD1728",
|
||||
"0x6Ba460AB75Cd2c56343b3517ffeBA60748654D26",
|
||||
"0x6baf7FcEA90B0968dc5eD7B8dCB76C986637Ff55",
|
||||
|
@ -2702,7 +2708,6 @@
|
|||
"0x8f7b0B40E27E357540F90f187d90CE06366aC5A5",
|
||||
"0x8f8221aFbB33998d8584A2B05749bA73c37a938a",
|
||||
"0x8F8e787989BC652eeA01A6C88a19f0f379BDF4FD",
|
||||
"0x8F9bfe5b6A5C3fEa8c64ad41a5Cf6f60Ec4aa47c",
|
||||
"0x8fa1323590032461997eEb4E1b3F918C186b7843",
|
||||
"0x8fa1a491f55D93bD40ff023956261f2fB5047297",
|
||||
"0x8FAF0be1465B9bE70eE73d9123B2A1fDD9F2AAe4",
|
||||
|
@ -3902,6 +3907,7 @@
|
|||
"0xd30581895B8320c356aFc6f80B07dfB468a65b69",
|
||||
"0xd30a2e9347Ad48Ea208ee563a9CdfD80E962a727",
|
||||
"0xd31695a1d35E489252CE57b129FD4b1B05E6AcaC",
|
||||
"0xd321Ca7Cd7A233483b8CD5a11a89E9337e70Df84",
|
||||
"0xd340Bc93d2cf0df662347E6D72eaf6174C613A3C",
|
||||
"0xd341d1680Eeee3255b8C4c75bCCE7EB57f144dAe",
|
||||
"0xd3516ecB852037a33bAD2372D52b638D6D534516",
|
||||
|
@ -3944,7 +3950,6 @@
|
|||
"0xD581D38a7303b6DeA5828906acFDe416EE85dEE0",
|
||||
"0xD59f53256AdDf282aa1D5e19f934738dDC06c5cF",
|
||||
"0xd5Cfa997a1052464e4B9Af462f9D5facE9b1f730",
|
||||
"0xd5dad1DB7F112037c0c6Cf0792dc2a7866Bfd136",
|
||||
"0xD5DE9AAE27C94AE7c20bE926D193289B5f41EA8A",
|
||||
"0xD5E38d2Ef4aD5e38942E6234e2CEC0dac38E124A",
|
||||
"0xd5f788ca0de8f17cBDe1D1E35aA8F005A87fa00b",
|
||||
|
|
|
@ -41,4 +41,4 @@
|
|||
"description": "Trusted and secured validator, KAVA Russian community manager",
|
||||
"website": "https://stake.novy.pw"
|
||||
}
|
||||
]
|
||||
]
|
|
@ -408,6 +408,11 @@
|
|||
"token_id": "0x4DF812F6064def1e5e029f1ca858777CC98D2D81",
|
||||
"id": 895
|
||||
},
|
||||
{
|
||||
"coin": 55,
|
||||
"type": "coin",
|
||||
"id": 911
|
||||
},
|
||||
{
|
||||
"coin": 36,
|
||||
"type": "coin",
|
||||
|
@ -1857,7 +1862,7 @@
|
|||
{
|
||||
"coin": 60,
|
||||
"type": "token",
|
||||
"token_id": "0x48f775EFBE4F5EcE6e0DF2f7b5932dF56823B990",
|
||||
"token_id": "0x2ef52Ed7De8c5ce03a4eF0efbe9B7450F2D7Edc9",
|
||||
"id": 2135
|
||||
},
|
||||
{
|
||||
|
@ -6480,7 +6485,7 @@
|
|||
{
|
||||
"coin": 60,
|
||||
"type": "token",
|
||||
"token_id": "0xd5dad1DB7F112037c0c6Cf0792dc2a7866Bfd136",
|
||||
"token_id": "0x340eF83Ec8560892168D4062720F030460468656",
|
||||
"id": 3589
|
||||
},
|
||||
{
|
||||
|
@ -7633,7 +7638,7 @@
|
|||
{
|
||||
"coin": 60,
|
||||
"type": "token",
|
||||
"token_id": "0x187C4B0e3819017a5cf07af81A4E2b16166aAbc6",
|
||||
"token_id": "0x2d71983E810B9e95258966B9c164C4d61a829bA9",
|
||||
"id": 3886
|
||||
},
|
||||
{
|
||||
|
@ -9388,7 +9393,7 @@
|
|||
{
|
||||
"coin": 60,
|
||||
"type": "token",
|
||||
"token_id": "0x8F9bfe5b6A5C3fEa8c64ad41a5Cf6f60Ec4aa47c",
|
||||
"token_id": "0x810908B285f85Af668F6348cD8B26D76B3EC12e1",
|
||||
"id": 4797
|
||||
},
|
||||
{
|
||||
|
@ -9903,6 +9908,12 @@
|
|||
"token_id": "0x6E5a43DB10b04701385A34afb670E404bC7Ea597",
|
||||
"id": 5072
|
||||
},
|
||||
{
|
||||
"coin": 60,
|
||||
"type": "token",
|
||||
"token_id": "0x6b74Dd5d01f8320081247F5CF1F7a48324700Db6",
|
||||
"id": 5074
|
||||
},
|
||||
{
|
||||
"coin": 60,
|
||||
"type": "token",
|
||||
|
@ -10371,6 +10382,12 @@
|
|||
"token_id": "0x08Aa0ed0040736dd28d4c8B16Ab453b368248d19",
|
||||
"id": 5363
|
||||
},
|
||||
{
|
||||
"coin": 60,
|
||||
"type": "token",
|
||||
"token_id": "0x916885426255235DA7a0BD90447986c00675f9EC",
|
||||
"id": 5366
|
||||
},
|
||||
{
|
||||
"coin": 60,
|
||||
"type": "token",
|
||||
|
@ -10496,6 +10513,12 @@
|
|||
"token_id": "0x24FB4C36a83cbDbCd670856406f622E09A643d4d",
|
||||
"id": 5422
|
||||
},
|
||||
{
|
||||
"coin": 60,
|
||||
"type": "token",
|
||||
"token_id": "0x3aFfCCa64c2A6f4e3B6Bd9c64CD2C969EFd1ECBe",
|
||||
"id": 5423
|
||||
},
|
||||
{
|
||||
"coin": 60,
|
||||
"type": "token",
|
||||
|
@ -10507,5 +10530,22 @@
|
|||
"type": "token",
|
||||
"token_id": "0x27201232579491Ce9b116Ac6F37D354Cc723A2f3",
|
||||
"id": 5425
|
||||
},
|
||||
{
|
||||
"coin": 501,
|
||||
"type": "coin",
|
||||
"id": 5426
|
||||
},
|
||||
{
|
||||
"coin": 60,
|
||||
"type": "token",
|
||||
"token_id": "0xd321Ca7Cd7A233483b8CD5a11a89E9337e70Df84",
|
||||
"id": 5428
|
||||
},
|
||||
{
|
||||
"coin": 60,
|
||||
"type": "token",
|
||||
"token_id": "0x1A3496C18d558bd9C6C8f609E1B129f67AB08163",
|
||||
"id": 5429
|
||||
}
|
||||
]
|
|
@ -11,9 +11,9 @@ import {
|
|||
getChainAssetsPath,
|
||||
isPathExistsSync
|
||||
} from "../src/test/helpers"
|
||||
import { InfoList } from "../src/test/models";
|
||||
import { CoinInfoList } from "../src/test/models";
|
||||
|
||||
const dafaultInfoTemplate: InfoList =
|
||||
const dafaultInfoTemplate: CoinInfoList =
|
||||
{
|
||||
"name": "",
|
||||
"website": "",
|
||||
|
@ -80,6 +80,6 @@ export function getHandle(url: string): string {
|
|||
return url.slice(url.lastIndexOf("/") + 1, url.length)
|
||||
}
|
||||
|
||||
function writeToInfo(path: string, info: InfoList) {
|
||||
function writeToInfo(path: string, info: CoinInfoList) {
|
||||
writeFileSync(path, JSON.stringify(info, null, 4))
|
||||
}
|
|
@ -3,28 +3,30 @@ import { getOpenseaCollectionAddresses } from "./opesea_contrats"
|
|||
|
||||
import {
|
||||
Ethereum, Terra, Tron,
|
||||
getChainAssetsPath,
|
||||
getChainAssetInfoPath,
|
||||
getChainAssetsList,
|
||||
ethSidechains,
|
||||
readDirSync,
|
||||
readFileSync,
|
||||
isChainWhitelistExistSync,
|
||||
isChainBlacklistExistSync,
|
||||
getChainWhitelistPath,
|
||||
getChainBlacklistPath,
|
||||
getChainValidatorsListPath,
|
||||
writeFileSync,
|
||||
sortDesc,
|
||||
getChainWhitelistPath,
|
||||
getUnique,
|
||||
isChainAssetInfoExistSync,
|
||||
isChainBlacklistExistSync,
|
||||
isChainWhitelistExistSync,
|
||||
mapList,
|
||||
stakingChains
|
||||
readFileSync,
|
||||
sortDesc,
|
||||
stakingChains,
|
||||
writeFileSync,
|
||||
} from '../src/test/helpers'
|
||||
|
||||
formatWhiteBlackList()
|
||||
formatValidators()
|
||||
formatInfo()
|
||||
|
||||
function formatWhiteBlackList() {
|
||||
ethSidechains.concat(Tron, Terra).forEach(async chain => {
|
||||
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))
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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", () => {
|
||||
|
|
|
@ -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;
|
||||
|
|