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",
|
||||
"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",
|
||||
|
|
@ -20,4 +19,3 @@
|
|||
],
|
||||
"explorer": "https://etherscan.io/token/0x0D24e4A32B174ff6777059D4fD6bF8CFE031014b"
|
||||
}
|
||||
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 7.0 KiB |
|
After Width: | Height: | Size: 6.2 KiB |
|
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 |
|
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",
|
||||
|
|
|
|||
|
|
@ -2,11 +2,5 @@
|
|||
"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"
|
||||
"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": "REBITCOIN",
|
||||
"Symbol": "RBTC",
|
||||
"name": "REBITCOIN",
|
||||
"website": "",
|
||||
"short_description": "REBITCOIN",
|
||||
"explorer": "https://etherscan.io/token/0x7f65BE7FAd0c22813e51746E7e8f13a20bAa9411"
|
||||
}
|
||||
|
|
@ -2,11 +2,5 @@
|
|||
"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"
|
||||
"explorer": "https://etherscan.io/token/0x861d899E74eC0e84fa8A15Ba58088Bb3BACcb6FA"
|
||||
}
|
||||
|
Before Width: | Height: | Size: 43 KiB |
|
|
@ -1,5 +1,6 @@
|
|||
{
|
||||
"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"
|
||||
}
|
||||
|
|
@ -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"
|
||||
}
|
||||
|
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",
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
||||
|
|
@ -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;
|
||||
|
|
|
|||