major updgrade

Signed-off-by: Kenneth Reitz <me@kennethreitz.org>
This commit is contained in:
2017-08-24 23:31:33 -04:00
parent c7ccb986bc
commit dcf0efccb7
4 changed files with 270 additions and 204 deletions
+4
View File
@@ -8,3 +8,7 @@ records = "*"
psycopg2 = "*"
maya = "*"
flask-sslify = "*"
pyquery = "*"
pandas = "*"
html5lib = "*"
bs4 = "*"
+68
View File
@@ -0,0 +1,68 @@
import pandas
import requests
from pyquery import PyQuery as pq
import time
from collections import OrderedDict
url = 'https://coinmarketcap.com/currencies/views/all/'
session = requests.Session()
class MWT(object):
"""Memoize With Timeout"""
_caches = {}
_timeouts = {}
def __init__(self, timeout=2):
self.timeout = timeout
def collect(self):
"""Clear cache of results which have timed out"""
for func in self._caches:
cache = {}
for key in self._caches[func]:
if (time.time() - self._caches[func][key][1]) < self._timeouts[func]:
cache[key] = self._caches[func][key]
self._caches[func] = cache
def __call__(self, f):
self.cache = self._caches[f] = {}
self._timeouts[f] = self.timeout
def func(*args, **kwargs):
kw = sorted(kwargs.items())
key = (args, tuple(kw))
try:
v = self.cache[key]
if (time.time() - v[1]) > self.timeout:
raise KeyError
except KeyError:
v = self.cache[key] = f(*args, **kwargs), time.time()
return v[0]
func.func_name = f.__name__
return func
@MWT(timeout=300)
def get_coins():
coins_db = OrderedDict()
r = session.get(url)
html = pq(pq(r.content)('table')[0]).html()
df = pandas.read_html("<table>{}</table>".format(html))
df = pandas.concat(df)
for row in df.itertuples():
rank = int(row[1])
name = row[2]
ticker = row[3].lower()
usd = float(row[5][1:].replace(',', ''))
coins_db.update({ticker: {'rank': rank, 'name': name, 'ticker': ticker, 'usd': usd}})
return coins_db
+27 -204
View File
@@ -1,5 +1,8 @@
import os
from scraper import get_coins
from wallets import wallets
from flask import Flask, jsonify, render_template, request
from flask_sslify import SSLify
@@ -7,11 +10,6 @@ import maya
import requests
import records
session = requests.Session()
MARKETCAP_ALL_URL = 'https://coinmarketcap-nexuist.rhcloud.com/api/all'
MARKETCAP_COIN_TEMPLATE = 'https://coinmarketcap-nexuist.rhcloud.com/api/{ticker}'
API_KEYS = os.environ.get('API_KEYS', '').split(':')
db = records.Database()
@@ -28,51 +26,46 @@ class Coin():
self.update()
def _get(self):
url = MARKETCAP_COIN_TEMPLATE.format(ticker=self.ticker)
r = session.get(url)
return r.json()
def update(self):
j = self._get()
coins = get_coins()
print(f'Fetching data on {self.ticker}')
try:
self.name = j['name']
self.rank = j['position']
self._value = j['price']['usd']
self.name = coins[self.ticker]['name']
self.rank = coins[self.ticker]['rank']
self._usd = coins[self.ticker]['usd']
# self._btc = j['price']['btc']
except KeyError:
print(j)
@property
def usd(self):
return self._value
return self._usd
@property
def btc(self):
coins = get_coins()
rate = coins['btc']['usd']
return float(self.usd / rate)
def value(self, coin):
"""Example: BTC -> ETH"""
return (self.usd / Coin(coin).usd)
return (self.btc / Coin(coin).btc)
def __repr__(self):
return f'<Coin ticker={self.ticker!r}>'
def get_coins():
r = session.get(MARKETCAP_ALL_URL)
return [k for k in r.json().keys()]
def get_coin(ticker):
return Coin(ticker)
all_coins = get_coins()
print(get_coin('btc').value('eth'))
app = Flask(__name__)
app.debug = True
sslify = SSLify(app)
@app.route('/')
# @common.cache.cached(timeout=50)
def hello():
lbc = get_coin('lbc')
@@ -80,197 +73,28 @@ def hello():
lbc_sc = get_exchange('lbc', 'sc')
lbc_42_sc = get_exchange_value('lbc', 'sc', 42.01)
return render_template('index.html', lbc=lbc, lbc_42=lbc_42, lbc_sc=lbc_sc, lbc_42_sc=lbc_42_sc, coins=all_coins)
return render_template('index.html', lbc=lbc, lbc_42=lbc_42, lbc_sc=lbc_sc, lbc_42_sc=lbc_42_sc, coins=get_coins().keys())
@app.route('/thanks')
def thanks():
return jsonify(wallets={
'btc': '1PYZH8SCXQF7c2qgpsQ8kDgKixXeYvVsKv',
'ltc': 'LXPtxt68njDdTBdu1ZvHUbARhHsPm9T3Zq',
'doge': 'DRDjoTo3zg64QHpq3xgrVVJnerLAvVzMbc',
'vtc': 'VvNd9XoYKavHagE6VkLNPeAazFmpgMZgQ5',
'ppc': 'PMQWpq15QxT4dR6h6NrvrJMNtehcmRVxYW',
'ftc': '6zDLXZmoNBdz87ZMvtK2JF7C3NRuKu2nVr',
'rdd': 'RudBYrzAQeYmDXHhMXs7hPsYJc7n1C7Trt',
'dash': 'XvtKBmKUhiEPQyEgNxvSRt9hyHBCN8Mia7',
'pot': 'PTjS6cpqGoUUbEKyUWMqHk92ymvXMi84Ti',
'blk': 'BKNihHBXHy24q7wWM6A45xnDWTvcKrcmXN',
'emc2': 'EbMSP6TnLgfiJEnL1SUf4N8tjSHsY2L8zA',
'xmy': 'MQPjf1pCpKQDVabTXe3do4JTQ9A81oJyHp',
'aur': 'AVdVKHAvQij7QWmZ8p8P3qArK1eunrUukK',
'gld': 'E6UVrbrd4VnvspMuDqDw7FfMhGAqj26dZE',
'fair': 'fVkBYTPiQpcWCmFGSTtxhug2yW2nDZw6x7',
'slr': '8WUGQdSjo6XikocLF54KfHfBJ2HQqwtE3t',
'ptc': 'LJ7NefEUuJ9DC8qneEW2541p5iJzxNMqyQ',
'grs': 'FZg2ceLVCRFaV48C1BViKd1ersC9pxcHeb',
'nlg': 'GTEBkz4H73YJgTNhAVtwvwZwUgTsEezVjR',
'xwc': 'WXiGQuL7YNhDj93GMdRWJK3gdPMJfQWB8e',
'mona': 'MSE8zn8b7tdHnCL45em7nes5BtTQfPuSwc',
'enrg': 'eBzzqNtRCsxYLDyKkBT4CSiu2c6hFK8N5X',
'rby': 'RRcRzBTcz8HhfNncH9rbKM1hppwMB4EpPj',
'thc': 'HMemWrgjEfmgutjkM7C2zMqgpj97SJtW7g',
'erc': 'EWeL8eYZRJJZnMFrwMvhidxJsXDcfsELgL',
'vrc': 'VUmKQQdfVdsNfSzGtWZddWnv1gD1VuYPSa',
'cure': 'BE1rrjqnMPXnLbsTXdbhe13wuRRN1q5qTy',
'cloak': 'BtMtdrXRWBw6YMfSsxtkBiRP1wYeFH2Xrk',
'bsd': 'iPcwLWBxp2BYfDCyGYbvHbjRCzGL7rjE2U',
'start': 'sdvC9GSopsBmJ8VtVmNxKf1xwcGtY9bzwz',
'kore': 'K8iJwoL5ojPWw2kjhnWJrNwm1rsoWewErb',
'trust': 'TUFooWK6jqDYHKUggZyREvPAeK6nhSYHAX',
'nav': 'NUBRSjHJ8h52bqF2d2U4iXzEF3v6fgskw4',
'xst': 'S6L8FQGNLhpGEhcZzt4YMYNHq1H98QKkmK',
'btcd': 'RCJPmNM6BaNBTiomfJ83c2hEjMpnLjFghe',
'via': 'Vcd9Be6s1NePuci1LvC16K21kBytYmRf1t',
'uno': 'uZsGhq6VfNpYPUtNqg9fdushmsuc6B9GMA',
'pink': '2EjF3ACSNJqudSKZaEeSHvkGqVFg4JtUSA',
'ioc': 'iZmhHdNtPGfEVwswTkaLEDEuxrHQFDGD77',
'cann': 'CemM7gxYYJK9weV6Ed8sw4B7fvPQgY8hfW',
'sys': 'SUNH2SNQqaZvxqqPvuQcBVNdZshPRq2ZTv',
'neos': 'NTM232LiTUz8tgXmAWg8TxbrKtcAkDW9Mr',
'dgb': 'DA2eLVocFESdqVETtgVLP6k1m319o4g4Yq',
'excl': 'EPdycUjUzcYvFFGvTPC8z9NriZ8EgxLL7P',
'dope': 'D6NTRES89hzLNYx55AEuqWuAs8rUsR3sVc',
'block': 'Ba3yDhGLkiqN28YXoMYgBPuSjKht4a2ZGK',
'aby': 'AMbFZwYzjMJHtjJL3fHti2k2JtpfqrX7Ud',
'byc': 'BGD2TfaNbN6wq6CZXHMG9fSEWdniVZhJzn',
'blitz': 'oWZsQvU3T9FU25FdmRnAousz5CpzXjd6Eg',
'bay': 'BFDi3ZSZorDPX17iYrmhRFRSQK5DniqG4v',
'spr': 'SYeuSdejAg8jbhrC6pYmwMMPn99egVmyaP',
'vtr': 'xr14J4LzdL4jYfRNpP5WdPjtq5dC2YNXiZA27ZayWqC87o4B4UwibZFWr6U5B3B3T7gdjfCqsN5c3btYhFSzBCf2fDL9Bvj1LAPqYQ',
'game': 'GMn4k4jXVDjVbSMCWabNguczwADkQxnnRu',
'nxs': '2RQbTTGVYJB1qkghsoZunueS71EPfc6KfCbhJqXveLJFCCK4U35',
'bitb': '2UjoiH7RmYhvdzJRGXAt5SVeP1iw9MP3Ka',
'xvg': 'DAtQMkVj14Vs4jUww8EcnurUGz1c92pBV9',
'geo': 'GR7Zj1EsHWc7M3KU5BDhTCSx4y9QR9nEEo',
'flo': 'FMSEzFyS9dWhb69ch72VF1ETePnXnb2qxY',
'nbt': 'BBijzpMJo92pT4dp1NxwGXY1kBJGxz1QJr',
'grc': 'S1t5Jr2WwxZSeSNn8p5RkAAycHa2ZraShi',
'mue': '7bSsG2TBa4645qitQsfBPj9Gp7ZW8QTa87',
'xvc': 'VpYaBkNXNCtYg3HTP7onhdvhTqtvGBwBCo',
'clam': 'xVJ7ySQNPfN3XKmAykTYapuZzZun23xsr5',
'dmd': 'dGRJXSHNiF9SoAatLeuoKYxmCbKJ8aXkga',
'gam': 'GSqe2k3G2EQQy3QNPwGyyyW33m7eEr6Df6',
'sphr': 'BPpGQCDR63NcN6Po9Lvo2D8nqQbhpiSHcE',
'ok': 'PGuDs5iu3sEaeAr1kMnMSwNCwJW2xUMTwA',
'snrg': 'SYkCDBer4Kap91ftY4cdDfrjnTh3nRvNqk',
'pkb': 'PLvXxUE6NrJqvoP1imR8sS23hDCmXoWcxz',
'cpc': 'CYWUbfBTAVW9H4zAPRe6yckWWBVRXaznT1',
'eth': '0xcf4c939ccae5c0ecc8b63505cce1513e5ef0d567',
'gcr': 'GRxryTQ43RET8xfzm38L42wYchim9H3cHf',
'tx': 'TixtGQBFrzfFH5Z1ouKjM4UDGqkKXcyw8p',
'exp': '0xbc4ee321e752cdd8ca54e4405de71c5f4f5b5f24',
'infx': 'iBJzRkcQk6coYUE4UFFDzvfi8Y1URMzyyA',
'omni': '15rebjRT6mESSbHU9yyLTh8oADdC4x4RWg',
'usdt': '1Ne3DYc5tJSAjS3rwqDt3GSN1FYMrHLPWr',
'amp': '13f3KoRoFD5iJw1zdQBw5Hum5EYRs9pB3x',
'agrs': '16EPWtBErUnT6fEsKmJfB4gxnJx5qndMCJ',
'bta': 'BJD3NHuuiibB85FrxYULSHTgJmye25PRKF',
'club': 'Ce9MJXxjasVSbVPntihwote3SjMbfqnvDJ',
'vox': 'VV5QjvbWFC9rvWtLyxMvsJDT1FFk9jgbWa',
'emc': 'EgPN6YhGXqgTL7np3UtAM2UReMs7eWVD8K',
'fct': 'FA3EuMt78kTLHdJsfS65r15xE4acVRtARBfUnKTqfMmGUyTzcNtP',
'maid': '1gUbRQjyQX2uJkezY8WY7KSEGGEmD9Zme',
'egc': 'EZYWa2KKhzUstJnTZG1SA8zp7stiyrt2Up',
'sls': 'SZVpV5LtN9WXdafou3BoHsacDhMcmCjUzr',
'rads': 'XcML29TJXQihsV5JmphEVbTPcS6xPkcZFj',
'dcr': 'DsUcYM48ZravjWaLCoeAxYQvTcNigqYaQVf',
'safex': '1jTMyxf2iP9NxNzMDAZVhQVQskj7zvDj9',
'pivx': 'DU6uyNH7E5VPse3hh4RZr4A12VQtM2E3Ue',
'meme': 'PCXXZ3NKQUMA26GsX5cjozE48yvM5uUnrR',
'2give': 'GpG7ygLvdd3GKsbAUvPRZbMR8GtXa7JizS',
'lsk': '3548326455915242856L',
'pdc': '12ZeM7mrPnZBM5rZWXh9QpNbe6eSTykxCr',
'dgd': '0x7e7cec0a54cbda02b44e6c24a298b2d89b8f3c31',
'brk': 'brfTVJS9JGtNX8prmKQBaQtWbtj1b1WJB7X',
'waves': '3P6H2V28Zzs9qX3U86Rs5hzTFkcCJrbDJEm',
'lbc': 'bVQKmE9tkLHxkjnu97SSe8eQHT9q4c69Zb',
'brx': 'bxVriVBdAZ1jXkKFvBAA3zQkS819kZFqWVd',
'etc': '0xb52c0534da8d758943e8604916b6be70071bc6d3',
'strat': 'Sf8iKKeaAFRX772JA5TWXDwZMJZkJNwmSZ',
'unb': '13izqwELn1jTt1j7umfoJKUPRUBBPmwpHv',
'ebst': 'e91xYCEFKh2J2VogvUraooeCFUUcCbrUnM',
'vrm': 'VXYWrM5h6YE7pU1zPjFpXYcGVoYnLAETyK',
'xaur': '0x1253295779080ec136551724a27143e4470073a2',
'seq': 'Se8Eg7u1k6izqAW3nmKAwuBewiJu1G2fbD',
'sngls': '0x6f4f433ff62347998785e4ed30f3048a2281fd98',
'rep': '0x16169642de5a4c43a5f3bcbc5eea36ca767ecc4d',
'shift': '3548326455915242856S',
'xzc': 'a3vmJpgzqDu4Yg6FPt9uj27m3sBAbMwtRs',
'neo': 'AG2dY41SYEMmZLLy5dS1gNwHkWEAshE3ft',
'zec': 't1fnCgLKXy7Q1ovFD5obWcH1Vmpp6ivVhJu',
'zcl': 't1bHV2hFD8mVoVH2S7KVSfAmdTX615xXGgy',
'iop': 'pEP4niYzA8eiPUfCcy5pnPxoETu7zx6n4G',
'ubq': '0x98b3ffb0a988308304b32077ba31e5b300be1567',
'hkg': '0x1567685a30ee1d1ace1f1e6291b727b1e2ca5eea',
'sib': 'Sicrwdsg9mVMCACVJJq23RfqSXiNfH7H2f',
'ion': 'ia2ts12ZrprJ9GjsuJChY1HmzeFnwy6k5x',
'lmc': 'LZFKYiQRjX3zLaBRMTzF6kaRReoAqsTGgX',
'qwark': '0xe4f1f6665f68489f6ff512194553918df13a1ae6',
'crw': '12rCC2LwBBuue46KELC9zE9H75Tq9ff492',
'swt': '0xaef9799c36cc1459d7876b56383a4a2107bc4b66',
'time': '0x1ddcfde92c5c82f5fc919b69478ce65db5446483',
'mln': '0x8c1d250c58133ff94b224390c3137d8dc4bf02bc',
'tks': '3PESLYrs1s5sNYGBHD8bZnqWvB3pW3BMcWd',
'ark': 'AJrDLieoPW46gg3XRANt3J8emDFdQPDUmq',
'music': '0x9248334cf30082b5e301bef6fa29642c3170e2e4',
'incnt': '3PEuNUJZpE4mjqhHZDCmisGabd4g1qzAeve',
'gbyte': 'RYLB7TCEBR4WK3ZEBMGOSLHOPU2COVMZ',
'gnt': '0x7da2d058575c81a0b5658878a3b3efed0de142d4',
'nxc': '0x06e1d5c1e7dded4b9e32f45845e1d352c0cf8bc5',
'edg': '0xdc8e6d7de95fb75774f2b3be2d03efd29d9242e8',
'lgd': '0xce7591232523f66b14189c4cec4679e3ab7b3d8e',
'trst': '0xa60ff29d26d373a88afbe74f6dbcab3aeca677e6',
'wings': '0xb4466e1575882d28388820a719516d1dff412961',
'rlc': '0xab916ef71e19c56c98de93d0dba99469b1283db1',
'bcc': '1LVojXegSH5EhrNQncWfxg7ErVh4N9HCAL',
'qtum': '0x1646d7c096047756ab0b1cb636cf5dd5d36959d2',
'part': 'Ph9oGH1vwtsFTHmAwYh3iS9J1vcVhoLXFk',
'cvc': '0x584827cad4a2cb47582ebd5a5ee6e4fd5ea63255',
'omg': '0xef24cccdad02b96e8bd3c68757c1aab5547ecda7',
'adx': '0x36f8b284fa87405389e672d74898d0bf2930a5d9',
'storj': '0x05feda4008e2d9253bc339332a29a5a862c8c5d2',
'mtl': '0x7b610ddc59fd76c1e8a23ff69904e5d4898bbf78',
'pay': '0x3a957df561559587b43eb77b4266c8f0063ec948',
'fun': '0xd9a996f367802920aa7bb5bce48de183f45eeb54',
'adt': '0x7853d58160a73d538e89278bb036d2b80e00c351',
'mco': '0xf3959d90b9b880ee29e62f1210a37fe9b54ce0c1',
'snt': '0x3f6526ddd2e452ca6f93033653f0f39ace19f71e',
'nmr': '0xcb83ccdd55939de0653b455d7aebf21982357320',
'bnt': '0x3363f5a728901533511427d27f3151fe9df152a0',
'cfi': '0xa27c5edf5d5ca32a3f3926f7d46d4dcbea43241d',
'myst': '0x9dfe066e10215254e7e62c86a30fd0aea1884be3',
'ptoy': '0x5bc546675be2ea8b3a56eab0161e7f8c6615930a',
'crb': '0x3e12bb90fffebdab71dffca9557a81587d32862f',
'qrl': '0x7e4b07296fc5a54031ca133b98546d350c0cd293',
'1st': '0x919865c75dd7949fb061e7a2102290b79e4d9150',
'bat': '0x04db9cf3de9183f8e5d5b7609c5793e4448c9bf6',
'sc': '6197b45062c2d75d8d94d7c7fe4a6530cc6fe6422e0edd9f285d237646b2392541c03005947d',
'zen': 'znmGXVrq1UcF3r59C8V75t6zqFkmqMzC4YY',
'ant': '0xd54c9c210d286e5bae0e5f59ca8817e9dc2378de',
'hmq': '0x0c3a58dc40e933b2031d0cbfe08cf0738f55a17d',
'tkn': '0x5a020b51b748b21274078e42b10a7eb3988e89e1',
'apx': '0x2c4588d7d92700966fc6101af9b1af4181ab5358',
'lun': '0x12c38554537d9677aef623cf7bd9b9460d51045b',
'gup': '0xf4b6b5fce73e455e93f80190b7f7e5999864a3de',
'gno': '0x8e2118d168713e639b624851958cc5fa46ebce2a',
'rlc': '0xab916ef71e19c56c98de93d0dba99469b1283db1'
}, note='Your donations are greatly appreciated!')
return jsonify(wallets=wallets, note='Your donations are greatly appreciated!')
@app.route('/coins')
def coins():
return jsonify(coins=all_coins)
def all_coins():
return jsonify(coins=[k for k in get_coins().keys()])
@app.route('/<coin>')
def get_coin(coin):
c = Coin(coin)
return jsonify(coin={
'name': c.name,
'ticker': c.ticker,
'rank': c.rank,
'value': c.usd,
'value.currency': 'USD'
'usd': c.usd,
'btc': c.btc
})
@@ -278,8 +102,7 @@ def get_coin(coin):
def get_value(coin, n):
c = Coin(coin)
return jsonify(coin={
'value': c.usd * n,
'value.currency': 'USD',
'usd': c.usd * n,
'exchange_rate': c.usd
})
+171
View File
@@ -0,0 +1,171 @@
wallets = {
'btc': '1PYZH8SCXQF7c2qgpsQ8kDgKixXeYvVsKv',
'ltc': 'LXPtxt68njDdTBdu1ZvHUbARhHsPm9T3Zq',
'doge': 'DRDjoTo3zg64QHpq3xgrVVJnerLAvVzMbc',
'vtc': 'VvNd9XoYKavHagE6VkLNPeAazFmpgMZgQ5',
'ppc': 'PMQWpq15QxT4dR6h6NrvrJMNtehcmRVxYW',
'ftc': '6zDLXZmoNBdz87ZMvtK2JF7C3NRuKu2nVr',
'rdd': 'RudBYrzAQeYmDXHhMXs7hPsYJc7n1C7Trt',
'dash': 'XvtKBmKUhiEPQyEgNxvSRt9hyHBCN8Mia7',
'pot': 'PTjS6cpqGoUUbEKyUWMqHk92ymvXMi84Ti',
'blk': 'BKNihHBXHy24q7wWM6A45xnDWTvcKrcmXN',
'emc2': 'EbMSP6TnLgfiJEnL1SUf4N8tjSHsY2L8zA',
'xmy': 'MQPjf1pCpKQDVabTXe3do4JTQ9A81oJyHp',
'aur': 'AVdVKHAvQij7QWmZ8p8P3qArK1eunrUukK',
'gld': 'E6UVrbrd4VnvspMuDqDw7FfMhGAqj26dZE',
'fair': 'fVkBYTPiQpcWCmFGSTtxhug2yW2nDZw6x7',
'slr': '8WUGQdSjo6XikocLF54KfHfBJ2HQqwtE3t',
'ptc': 'LJ7NefEUuJ9DC8qneEW2541p5iJzxNMqyQ',
'grs': 'FZg2ceLVCRFaV48C1BViKd1ersC9pxcHeb',
'nlg': 'GTEBkz4H73YJgTNhAVtwvwZwUgTsEezVjR',
'xwc': 'WXiGQuL7YNhDj93GMdRWJK3gdPMJfQWB8e',
'mona': 'MSE8zn8b7tdHnCL45em7nes5BtTQfPuSwc',
'enrg': 'eBzzqNtRCsxYLDyKkBT4CSiu2c6hFK8N5X',
'rby': 'RRcRzBTcz8HhfNncH9rbKM1hppwMB4EpPj',
'thc': 'HMemWrgjEfmgutjkM7C2zMqgpj97SJtW7g',
'erc': 'EWeL8eYZRJJZnMFrwMvhidxJsXDcfsELgL',
'vrc': 'VUmKQQdfVdsNfSzGtWZddWnv1gD1VuYPSa',
'cure': 'BE1rrjqnMPXnLbsTXdbhe13wuRRN1q5qTy',
'cloak': 'BtMtdrXRWBw6YMfSsxtkBiRP1wYeFH2Xrk',
'bsd': 'iPcwLWBxp2BYfDCyGYbvHbjRCzGL7rjE2U',
'start': 'sdvC9GSopsBmJ8VtVmNxKf1xwcGtY9bzwz',
'kore': 'K8iJwoL5ojPWw2kjhnWJrNwm1rsoWewErb',
'trust': 'TUFooWK6jqDYHKUggZyREvPAeK6nhSYHAX',
'nav': 'NUBRSjHJ8h52bqF2d2U4iXzEF3v6fgskw4',
'xst': 'S6L8FQGNLhpGEhcZzt4YMYNHq1H98QKkmK',
'btcd': 'RCJPmNM6BaNBTiomfJ83c2hEjMpnLjFghe',
'via': 'Vcd9Be6s1NePuci1LvC16K21kBytYmRf1t',
'uno': 'uZsGhq6VfNpYPUtNqg9fdushmsuc6B9GMA',
'pink': '2EjF3ACSNJqudSKZaEeSHvkGqVFg4JtUSA',
'ioc': 'iZmhHdNtPGfEVwswTkaLEDEuxrHQFDGD77',
'cann': 'CemM7gxYYJK9weV6Ed8sw4B7fvPQgY8hfW',
'sys': 'SUNH2SNQqaZvxqqPvuQcBVNdZshPRq2ZTv',
'neos': 'NTM232LiTUz8tgXmAWg8TxbrKtcAkDW9Mr',
'dgb': 'DA2eLVocFESdqVETtgVLP6k1m319o4g4Yq',
'excl': 'EPdycUjUzcYvFFGvTPC8z9NriZ8EgxLL7P',
'dope': 'D6NTRES89hzLNYx55AEuqWuAs8rUsR3sVc',
'block': 'Ba3yDhGLkiqN28YXoMYgBPuSjKht4a2ZGK',
'aby': 'AMbFZwYzjMJHtjJL3fHti2k2JtpfqrX7Ud',
'byc': 'BGD2TfaNbN6wq6CZXHMG9fSEWdniVZhJzn',
'blitz': 'oWZsQvU3T9FU25FdmRnAousz5CpzXjd6Eg',
'bay': 'BFDi3ZSZorDPX17iYrmhRFRSQK5DniqG4v',
'spr': 'SYeuSdejAg8jbhrC6pYmwMMPn99egVmyaP',
'vtr': 'xr14J4LzdL4jYfRNpP5WdPjtq5dC2YNXiZA27ZayWqC87o4B4UwibZFWr6U5B3B3T7gdjfCqsN5c3btYhFSzBCf2fDL9Bvj1LAPqYQ',
'game': 'GMn4k4jXVDjVbSMCWabNguczwADkQxnnRu',
'nxs': '2RQbTTGVYJB1qkghsoZunueS71EPfc6KfCbhJqXveLJFCCK4U35',
'bitb': '2UjoiH7RmYhvdzJRGXAt5SVeP1iw9MP3Ka',
'xvg': 'DAtQMkVj14Vs4jUww8EcnurUGz1c92pBV9',
'geo': 'GR7Zj1EsHWc7M3KU5BDhTCSx4y9QR9nEEo',
'flo': 'FMSEzFyS9dWhb69ch72VF1ETePnXnb2qxY',
'nbt': 'BBijzpMJo92pT4dp1NxwGXY1kBJGxz1QJr',
'grc': 'S1t5Jr2WwxZSeSNn8p5RkAAycHa2ZraShi',
'mue': '7bSsG2TBa4645qitQsfBPj9Gp7ZW8QTa87',
'xvc': 'VpYaBkNXNCtYg3HTP7onhdvhTqtvGBwBCo',
'clam': 'xVJ7ySQNPfN3XKmAykTYapuZzZun23xsr5',
'dmd': 'dGRJXSHNiF9SoAatLeuoKYxmCbKJ8aXkga',
'gam': 'GSqe2k3G2EQQy3QNPwGyyyW33m7eEr6Df6',
'sphr': 'BPpGQCDR63NcN6Po9Lvo2D8nqQbhpiSHcE',
'ok': 'PGuDs5iu3sEaeAr1kMnMSwNCwJW2xUMTwA',
'snrg': 'SYkCDBer4Kap91ftY4cdDfrjnTh3nRvNqk',
'pkb': 'PLvXxUE6NrJqvoP1imR8sS23hDCmXoWcxz',
'cpc': 'CYWUbfBTAVW9H4zAPRe6yckWWBVRXaznT1',
'eth': '0xcf4c939ccae5c0ecc8b63505cce1513e5ef0d567',
'gcr': 'GRxryTQ43RET8xfzm38L42wYchim9H3cHf',
'tx': 'TixtGQBFrzfFH5Z1ouKjM4UDGqkKXcyw8p',
'exp': '0xbc4ee321e752cdd8ca54e4405de71c5f4f5b5f24',
'infx': 'iBJzRkcQk6coYUE4UFFDzvfi8Y1URMzyyA',
'omni': '15rebjRT6mESSbHU9yyLTh8oADdC4x4RWg',
'usdt': '1Ne3DYc5tJSAjS3rwqDt3GSN1FYMrHLPWr',
'amp': '13f3KoRoFD5iJw1zdQBw5Hum5EYRs9pB3x',
'agrs': '16EPWtBErUnT6fEsKmJfB4gxnJx5qndMCJ',
'bta': 'BJD3NHuuiibB85FrxYULSHTgJmye25PRKF',
'club': 'Ce9MJXxjasVSbVPntihwote3SjMbfqnvDJ',
'vox': 'VV5QjvbWFC9rvWtLyxMvsJDT1FFk9jgbWa',
'emc': 'EgPN6YhGXqgTL7np3UtAM2UReMs7eWVD8K',
'fct': 'FA3EuMt78kTLHdJsfS65r15xE4acVRtARBfUnKTqfMmGUyTzcNtP',
'maid': '1gUbRQjyQX2uJkezY8WY7KSEGGEmD9Zme',
'egc': 'EZYWa2KKhzUstJnTZG1SA8zp7stiyrt2Up',
'sls': 'SZVpV5LtN9WXdafou3BoHsacDhMcmCjUzr',
'rads': 'XcML29TJXQihsV5JmphEVbTPcS6xPkcZFj',
'dcr': 'DsUcYM48ZravjWaLCoeAxYQvTcNigqYaQVf',
'safex': '1jTMyxf2iP9NxNzMDAZVhQVQskj7zvDj9',
'pivx': 'DU6uyNH7E5VPse3hh4RZr4A12VQtM2E3Ue',
'meme': 'PCXXZ3NKQUMA26GsX5cjozE48yvM5uUnrR',
'2give': 'GpG7ygLvdd3GKsbAUvPRZbMR8GtXa7JizS',
'lsk': '3548326455915242856L',
'pdc': '12ZeM7mrPnZBM5rZWXh9QpNbe6eSTykxCr',
'dgd': '0x7e7cec0a54cbda02b44e6c24a298b2d89b8f3c31',
'brk': 'brfTVJS9JGtNX8prmKQBaQtWbtj1b1WJB7X',
'waves': '3P6H2V28Zzs9qX3U86Rs5hzTFkcCJrbDJEm',
'lbc': 'bVQKmE9tkLHxkjnu97SSe8eQHT9q4c69Zb',
'brx': 'bxVriVBdAZ1jXkKFvBAA3zQkS819kZFqWVd',
'etc': '0xb52c0534da8d758943e8604916b6be70071bc6d3',
'strat': 'Sf8iKKeaAFRX772JA5TWXDwZMJZkJNwmSZ',
'unb': '13izqwELn1jTt1j7umfoJKUPRUBBPmwpHv',
'ebst': 'e91xYCEFKh2J2VogvUraooeCFUUcCbrUnM',
'vrm': 'VXYWrM5h6YE7pU1zPjFpXYcGVoYnLAETyK',
'xaur': '0x1253295779080ec136551724a27143e4470073a2',
'seq': 'Se8Eg7u1k6izqAW3nmKAwuBewiJu1G2fbD',
'sngls': '0x6f4f433ff62347998785e4ed30f3048a2281fd98',
'rep': '0x16169642de5a4c43a5f3bcbc5eea36ca767ecc4d',
'shift': '3548326455915242856S',
'xzc': 'a3vmJpgzqDu4Yg6FPt9uj27m3sBAbMwtRs',
'neo': 'AG2dY41SYEMmZLLy5dS1gNwHkWEAshE3ft',
'zec': 't1fnCgLKXy7Q1ovFD5obWcH1Vmpp6ivVhJu',
'zcl': 't1bHV2hFD8mVoVH2S7KVSfAmdTX615xXGgy',
'iop': 'pEP4niYzA8eiPUfCcy5pnPxoETu7zx6n4G',
'ubq': '0x98b3ffb0a988308304b32077ba31e5b300be1567',
'hkg': '0x1567685a30ee1d1ace1f1e6291b727b1e2ca5eea',
'sib': 'Sicrwdsg9mVMCACVJJq23RfqSXiNfH7H2f',
'ion': 'ia2ts12ZrprJ9GjsuJChY1HmzeFnwy6k5x',
'lmc': 'LZFKYiQRjX3zLaBRMTzF6kaRReoAqsTGgX',
'qwark': '0xe4f1f6665f68489f6ff512194553918df13a1ae6',
'crw': '12rCC2LwBBuue46KELC9zE9H75Tq9ff492',
'swt': '0xaef9799c36cc1459d7876b56383a4a2107bc4b66',
'time': '0x1ddcfde92c5c82f5fc919b69478ce65db5446483',
'mln': '0x8c1d250c58133ff94b224390c3137d8dc4bf02bc',
'tks': '3PESLYrs1s5sNYGBHD8bZnqWvB3pW3BMcWd',
'ark': 'AJrDLieoPW46gg3XRANt3J8emDFdQPDUmq',
'music': '0x9248334cf30082b5e301bef6fa29642c3170e2e4',
'incnt': '3PEuNUJZpE4mjqhHZDCmisGabd4g1qzAeve',
'gbyte': 'RYLB7TCEBR4WK3ZEBMGOSLHOPU2COVMZ',
'gnt': '0x7da2d058575c81a0b5658878a3b3efed0de142d4',
'nxc': '0x06e1d5c1e7dded4b9e32f45845e1d352c0cf8bc5',
'edg': '0xdc8e6d7de95fb75774f2b3be2d03efd29d9242e8',
'lgd': '0xce7591232523f66b14189c4cec4679e3ab7b3d8e',
'trst': '0xa60ff29d26d373a88afbe74f6dbcab3aeca677e6',
'wings': '0xb4466e1575882d28388820a719516d1dff412961',
'rlc': '0xab916ef71e19c56c98de93d0dba99469b1283db1',
'bcc': '1LVojXegSH5EhrNQncWfxg7ErVh4N9HCAL',
'qtum': '0x1646d7c096047756ab0b1cb636cf5dd5d36959d2',
'part': 'Ph9oGH1vwtsFTHmAwYh3iS9J1vcVhoLXFk',
'cvc': '0x584827cad4a2cb47582ebd5a5ee6e4fd5ea63255',
'omg': '0xef24cccdad02b96e8bd3c68757c1aab5547ecda7',
'adx': '0x36f8b284fa87405389e672d74898d0bf2930a5d9',
'storj': '0x05feda4008e2d9253bc339332a29a5a862c8c5d2',
'mtl': '0x7b610ddc59fd76c1e8a23ff69904e5d4898bbf78',
'pay': '0x3a957df561559587b43eb77b4266c8f0063ec948',
'fun': '0xd9a996f367802920aa7bb5bce48de183f45eeb54',
'adt': '0x7853d58160a73d538e89278bb036d2b80e00c351',
'mco': '0xf3959d90b9b880ee29e62f1210a37fe9b54ce0c1',
'snt': '0x3f6526ddd2e452ca6f93033653f0f39ace19f71e',
'nmr': '0xcb83ccdd55939de0653b455d7aebf21982357320',
'bnt': '0x3363f5a728901533511427d27f3151fe9df152a0',
'cfi': '0xa27c5edf5d5ca32a3f3926f7d46d4dcbea43241d',
'myst': '0x9dfe066e10215254e7e62c86a30fd0aea1884be3',
'ptoy': '0x5bc546675be2ea8b3a56eab0161e7f8c6615930a',
'crb': '0x3e12bb90fffebdab71dffca9557a81587d32862f',
'qrl': '0x7e4b07296fc5a54031ca133b98546d350c0cd293',
'1st': '0x919865c75dd7949fb061e7a2102290b79e4d9150',
'bat': '0x04db9cf3de9183f8e5d5b7609c5793e4448c9bf6',
'sc': '6197b45062c2d75d8d94d7c7fe4a6530cc6fe6422e0edd9f285d237646b2392541c03005947d',
'zen': 'znmGXVrq1UcF3r59C8V75t6zqFkmqMzC4YY',
'ant': '0xd54c9c210d286e5bae0e5f59ca8817e9dc2378de',
'hmq': '0x0c3a58dc40e933b2031d0cbfe08cf0738f55a17d',
'tkn': '0x5a020b51b748b21274078e42b10a7eb3988e89e1',
'apx': '0x2c4588d7d92700966fc6101af9b1af4181ab5358',
'lun': '0x12c38554537d9677aef623cf7bd9b9460d51045b',
'gup': '0xf4b6b5fce73e455e93f80190b7f7e5999864a3de',
'gno': '0x8e2118d168713e639b624851958cc5fa46ebce2a',
'rlc': '0xab916ef71e19c56c98de93d0dba99469b1283db1'
}