├── public ├── favicon.ico ├── favicon.png ├── favicon-16x16.png ├── favicon-32x32.png ├── apple-touch-icon.png ├── android-chrome-192x192.png ├── android-chrome-256x256.png ├── manifest.json ├── safari-pinned-tab.svg ├── index.html └── tokens.json ├── src ├── images │ ├── logo-24x24.png │ └── logo-48x48.png ├── index.js ├── index.css ├── components │ ├── app │ │ ├── WebsocketConnectingOverlay.css │ │ ├── WebsocketConnectingOverlay.js │ │ ├── Navbar.css │ │ ├── Navbar.js │ │ ├── PairsTable.css │ │ ├── PairsPopover.js │ │ └── PairsTable.js │ └── common │ │ ├── react-table-overrides.css │ │ └── PopoverBlockingScroll.js ├── Root.js ├── store │ ├── configureStore.js │ ├── websocket.js │ ├── reducers.js │ └── actions.js ├── config.js ├── App.js └── registerServiceWorker.js ├── .editorconfig ├── .gitignore ├── .travis.yml ├── package.json ├── README.md └── LICENSE /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/forkdelta/nextgen-ui/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /public/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/forkdelta/nextgen-ui/HEAD/public/favicon.png -------------------------------------------------------------------------------- /public/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/forkdelta/nextgen-ui/HEAD/public/favicon-16x16.png -------------------------------------------------------------------------------- /public/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/forkdelta/nextgen-ui/HEAD/public/favicon-32x32.png -------------------------------------------------------------------------------- /src/images/logo-24x24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/forkdelta/nextgen-ui/HEAD/src/images/logo-24x24.png -------------------------------------------------------------------------------- /src/images/logo-48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/forkdelta/nextgen-ui/HEAD/src/images/logo-48x48.png -------------------------------------------------------------------------------- /public/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/forkdelta/nextgen-ui/HEAD/public/apple-touch-icon.png -------------------------------------------------------------------------------- /public/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/forkdelta/nextgen-ui/HEAD/public/android-chrome-192x192.png -------------------------------------------------------------------------------- /public/android-chrome-256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/forkdelta/nextgen-ui/HEAD/public/android-chrome-256x256.png -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | 4 | import Root from './Root'; 5 | import registerServiceWorker from './registerServiceWorker'; 6 | 7 | import './index.css'; 8 | 9 | ReactDOM.render(, document.getElementById('root')); 10 | registerServiceWorker(); 11 | -------------------------------------------------------------------------------- /src/index.css: -------------------------------------------------------------------------------- 1 | @import '~@blueprintjs/core/dist/blueprint.css'; /* cf. https://github.com/palantir/blueprint/issues/123 */ 2 | @import '~react-table/react-table.css'; 3 | @import './components/common/react-table-overrides.css'; 4 | 5 | body { 6 | min-height: 100vh; 7 | margin-top: 58px; 8 | background-color: #f5f8fa; 9 | } 10 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 2 6 | charset = utf-8 7 | trim_trailing_whitespace = true 8 | insert_final_newline = true 9 | end_of_line = lf 10 | max_line_length = 80 11 | 12 | [*.md] 13 | max_line_length = 0 14 | trim_trailing_whitespace = false 15 | 16 | [COMMIT_EDITMSG] 17 | max_line_length = 0 18 | -------------------------------------------------------------------------------- /src/components/app/WebsocketConnectingOverlay.css: -------------------------------------------------------------------------------- 1 | #websocketConnectingOverlay { 2 | height: 150px; 3 | width: 300px; 4 | top: calc(50% - 75px); 5 | left: calc(50% - 150px); 6 | 7 | display: flex; 8 | flex: 1; 9 | justify-content: space-around; 10 | align-items: center; 11 | } 12 | 13 | #websocketConnectingOverlay > div { 14 | display: flex; 15 | } 16 | -------------------------------------------------------------------------------- /src/Root.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { Provider } from 'react-redux'; 3 | 4 | import App from './App'; 5 | import configureStore from './store/configureStore'; 6 | 7 | const store = configureStore(); 8 | function Root() { 9 | return ( 10 | 11 | 12 | 13 | ); 14 | } 15 | 16 | export default Root; 17 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | 6 | # testing 7 | /coverage 8 | 9 | # production 10 | /build 11 | 12 | # misc 13 | .DS_Store 14 | .env.local 15 | .env.development.local 16 | .env.test.local 17 | .env.production.local 18 | .project 19 | 20 | npm-debug.log* 21 | yarn-debug.log* 22 | yarn-error.log* 23 | -------------------------------------------------------------------------------- /public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "ForkDelta", 3 | "name": "ForkDelta", 4 | "icons": [ 5 | { 6 | "src": "/android-chrome-192x192.png", 7 | "sizes": "192x192", 8 | "type": "image/png" 9 | }, 10 | { 11 | "src": "/android-chrome-256x256.png", 12 | "sizes": "256x256", 13 | "type": "image/png" 14 | } 15 | ], 16 | "start_url": "./index.html", 17 | "display": "standalone", 18 | "theme_color": "#ffffff", 19 | "background_color": "#ffffff" 20 | } 21 | -------------------------------------------------------------------------------- /src/components/common/react-table-overrides.css: -------------------------------------------------------------------------------- 1 | .pt-dark .ReactTable .rt-thead .rt-th.-sort-asc, 2 | .pt-dark .ReactTable .rt-thead .rt-td.-sort-asc { 3 | box-shadow: inset 0 3px 0 0 rgba(255, 255, 255, 0.75); 4 | } 5 | 6 | .pt-dark .ReactTable .rt-thead .rt-th.-sort-desc, 7 | .pt-dark .ReactTable .rt-thead .rt-td.-sort-desc { 8 | box-shadow: inset 0 -3px 0 0 rgba(255, 255, 255, 0.75); 9 | } 10 | 11 | .ReactTable .rt-tr .rt-td.text-center { 12 | text-align: center; 13 | } 14 | 15 | .ReactTable .rt-tr .rt-td.numeric-comparable { 16 | text-align: right; 17 | } 18 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - "stable" 4 | cache: 5 | directories: 6 | - node_modules 7 | script: 8 | - npm test 9 | - npm run build 10 | deploy: 11 | provider: pages 12 | github-token: $GITHUB_TOKEN # Set in travis-ci.org dashboard, marked secure 13 | skip-cleanup: true 14 | # Deployment source 15 | local-dir: build 16 | project-name: forkdelta/nextgen-ui 17 | on: 18 | repo: forkdelta/nextgen-ui 19 | branch: master 20 | # Deployment target 21 | repo: forkdelta/next 22 | target-branch: master 23 | keep-history: true 24 | -------------------------------------------------------------------------------- /src/components/app/WebsocketConnectingOverlay.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { Overlay, Spinner } from '@blueprintjs/core'; 3 | 4 | import './WebsocketConnectingOverlay.css'; 5 | 6 | function WebsocketConnectingOverlay({ isOpen }) { 7 | return ( 8 | 12 |
13 |
14 | 15 |
16 |
Connecting to EtherDelta...
17 |
18 |
19 | ); 20 | } 21 | 22 | export default WebsocketConnectingOverlay; 23 | -------------------------------------------------------------------------------- /src/components/app/Navbar.css: -------------------------------------------------------------------------------- 1 | .pt-navbar { 2 | line-height: 24px; 3 | } 4 | 5 | #brand-name { 6 | font-size: 18px; 7 | } 8 | 9 | #brand-name > strong { 10 | color: rgb(254, 95, 44); 11 | } 12 | 13 | #brand-name::before { 14 | display: inline-block; 15 | content: ''; 16 | width: 24px; 17 | height: 24px; 18 | margin-right: 8px; 19 | background: url('../../images/logo-24x24.png'); 20 | background-repeat: no-repeat; 21 | background-size: contain; 22 | vertical-align: text-bottom; 23 | } 24 | 25 | @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) { 26 | #brand-name::before { 27 | background-image: url('../../images/logo-48x48.png'); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /public/safari-pinned-tab.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/components/common/PopoverBlockingScroll.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { Popover2 } from '@blueprintjs/labs'; 3 | 4 | class PopoverBlockingScroll extends React.Component { 5 | handleOpen() { 6 | document.body.classList.add('pt-overlay-open'); 7 | } 8 | 9 | handleClose() { 10 | document.body.classList.remove('pt-overlay-open'); 11 | } 12 | 13 | render() { 14 | // NB: This messes with popoverWillOpen/popoverWillClose callbacks. 15 | return ( 16 | 21 | ); 22 | } 23 | } 24 | 25 | export default PopoverBlockingScroll; 26 | -------------------------------------------------------------------------------- /src/components/app/Navbar.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { 3 | Navbar as BlueprintNavbar, 4 | NavbarGroup, 5 | NavbarHeading, 6 | } from '@blueprintjs/core'; 7 | 8 | import PairsPopover from './PairsPopover'; 9 | 10 | import './Navbar.css'; 11 | 12 | function Navbar({ pairs, tickerLastUpdated }) { 13 | return ( 14 | 15 | 16 | 17 | Fork 18 | Delta 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | ); 27 | } 28 | 29 | export default Navbar; 30 | -------------------------------------------------------------------------------- /src/store/configureStore.js: -------------------------------------------------------------------------------- 1 | import { createStore, applyMiddleware, compose } from 'redux'; 2 | import thunkMiddleware from 'redux-thunk'; 3 | import { createLogger } from 'redux-logger'; 4 | 5 | import websocket from './websocket'; 6 | import rootReducer from './reducers'; 7 | 8 | const loggerMiddleware = createLogger(); 9 | const middleware = [ 10 | thunkMiddleware.withExtraArgument({ emit: websocket.emit }), 11 | ]; 12 | 13 | 14 | const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose; 15 | 16 | export default function configureStore(preloadedState) { 17 | const store = createStore( 18 | rootReducer, 19 | preloadedState, 20 | composeEnhancers(applyMiddleware(...middleware, loggerMiddleware)), 21 | ); 22 | websocket.init(store); 23 | return store; 24 | } 25 | -------------------------------------------------------------------------------- /src/config.js: -------------------------------------------------------------------------------- 1 | const DUMMY_TOKEN_ADDR = '0x0000000000000000000000000000000000000000'; 2 | const ED_WEBSOCKETS = [ 3 | 'https://socket01.etherdelta.com', 4 | 'https://socket02.etherdelta.com', 5 | 'https://socket03.etherdelta.com', 6 | 'https://socket04.etherdelta.com', 7 | 'https://socket05.etherdelta.com', 8 | 'https://socket06.etherdelta.com', 9 | ]; 10 | const ED_WEBSOCKET = 11 | ED_WEBSOCKETS[Math.floor(Math.random() * ED_WEBSOCKETS.length)]; 12 | const ED_WEBSOCKET_TIMEOUT = 10000; 13 | const TICKER_UPDATE_INTERVAL = 10000, 14 | TICKER_INVALID_INTERVAL = 10000; 15 | const TOKENS_URL = `${process.env.PUBLIC_URL}/tokens.json`; 16 | 17 | export { 18 | DUMMY_TOKEN_ADDR, 19 | ED_WEBSOCKET, 20 | ED_WEBSOCKET_TIMEOUT, 21 | TICKER_UPDATE_INTERVAL, 22 | TICKER_INVALID_INTERVAL, 23 | TOKENS_URL, 24 | }; 25 | -------------------------------------------------------------------------------- /src/components/app/PairsTable.css: -------------------------------------------------------------------------------- 1 | .pairs-popover.pt-popover .ReactTable { 2 | max-height: 450px; 3 | } 4 | 5 | .pairs-popover.pt-popover .ReactTable .rt-thead .rt-th { 6 | padding: 10px 5px; 7 | background-color: rgba(0, 0, 0, 0.03); 8 | } 9 | 10 | .pairs-popover.pt-popover .ReactTable .rt-thead .rt-th { 11 | border: 0px solid; 12 | } 13 | 14 | .pairs-popover.pt-popover .ReactTable .rt-tbody .rt-tr { 15 | cursor: pointer; 16 | } 17 | 18 | .pairs-popover.pt-popover .ReactTable .rt-tbody .rt-tr .rt-td:first-child { 19 | padding-left: 15px; 20 | } 21 | 22 | .pairs-popover.pt-popover .ReactTable .rt-tbody .rt-tr .rt-td:last-child { 23 | padding-right: 15px; 24 | } 25 | 26 | .pairs-popover.pt-popover .ReactTable .rt-td.percent-change .positive { 27 | color: #3dcc91; 28 | } 29 | 30 | .pairs-popover.pt-popover .ReactTable .rt-td.percent-change .negative { 31 | color: #ff7373; 32 | } 33 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "forkdelta", 3 | "version": "0.1.0", 4 | "private": true, 5 | "homepage": "https://forkdelta.github.io/next", 6 | "license": "AGPL-3.0-only", 7 | "dependencies": { 8 | "@blueprintjs/core": "^1.35.0", 9 | "@blueprintjs/labs": "^0.14.2", 10 | "d3-format": "^1.2.2", 11 | "lodash": "^4.17.4", 12 | "react": "^16.2.0", 13 | "react-addons-css-transition-group": "^15.6.2", 14 | "react-dom": "^16.2.0", 15 | "react-redux": "^5.0.6", 16 | "react-scripts": "1.1.1", 17 | "react-table": "^6.7.6", 18 | "redux": "^3.7.2", 19 | "redux-logger": "^3.0.6", 20 | "redux-thunk": "^2.2.0", 21 | "socket.io-client": "^2.0.4" 22 | }, 23 | "scripts": { 24 | "start": "react-scripts start", 25 | "build": "react-scripts build", 26 | "test": "react-scripts test --env=jsdom", 27 | "eject": "react-scripts eject" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/components/app/PairsPopover.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { AnchorButton, PopoverInteractionKind } from '@blueprintjs/core'; 3 | 4 | import PairsTable from './PairsTable'; 5 | import PopoverBlockingScroll from '../common/PopoverBlockingScroll'; 6 | 7 | function PairsPopover({ pairs, lastUpdated }) { 8 | return ( 9 | } 11 | inline={false} 12 | interactionKind={PopoverInteractionKind.CLICK} 13 | placement="bottom-start" 14 | popoverClassName="pairs-popover"> 15 | 22 | 23 | ); 24 | } 25 | 26 | export default PairsPopover; 27 | -------------------------------------------------------------------------------- /src/store/websocket.js: -------------------------------------------------------------------------------- 1 | import io from 'socket.io-client'; 2 | 3 | import { ED_WEBSOCKET, ED_WEBSOCKET_TIMEOUT } from '../config'; 4 | 5 | const socket = io(ED_WEBSOCKET, { 6 | transports: ['websocket'], 7 | timeout: ED_WEBSOCKET_TIMEOUT, 8 | autoConnect: false, 9 | }); 10 | 11 | const MESSAGE_TYPES = { 12 | WS_CONNECT: 'connect', 13 | WS_DISCONNECT: 'disconnect', 14 | WS_FUNDS: 'funds', 15 | WS_MARKET: 'market', 16 | WS_ORDERS: 'orders', 17 | WS_TRADES: 'trades', 18 | }; 19 | 20 | export const ACTIONS = Object.keys(MESSAGE_TYPES).reduce((memo, key) => { 21 | memo[key] = key; 22 | return memo; 23 | }, {}); 24 | 25 | const init = store => { 26 | Object.keys(ACTIONS).forEach(type => 27 | socket.on(MESSAGE_TYPES[type], payload => 28 | store.dispatch({ type, date: new Date(), payload }) 29 | ) 30 | ); 31 | socket.connect(); 32 | }; 33 | 34 | const emit = (type, payload) => socket.emit(type, payload); 35 | export default { init, emit }; 36 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ![ForkDelta logo](public/favicon-32x32.png) ForkDelta: The NextGen UI 2 | 3 | This repository contains the next-generation UI for ForkDelta. 4 | 5 | ## Development 6 | 7 | Please refer to [Create React App docs](docs/README.md) to get you up 8 | and running. 9 | 10 | ## Questions and Feedback 11 | 12 | This is a community-driven project. If you have any questions or feedback 13 | about the interface or the code, please don't hesitate to file an issue on 14 | this repo. 15 | 16 | Join our Discord if you'd like to chat: https://discord.gg/mMnRq7m. 17 | 18 | **For sensitive,** such as security concerns, please message @freeatnet on [Discord](https://discord.gg/mMnRq7m). 19 | 20 | ## License 21 | 22 | Copyright (C) 2018, Arseniy Ivanov and ForkDelta Contributors 23 | 24 | This program is free software: you can redistribute it and/or modify 25 | it under the terms of the GNU Affero General Public License as published 26 | by the Free Software Foundation, either version 3 of the License, or 27 | (at your option) any later version. 28 | 29 | This program is distributed in the hope that it will be useful, 30 | but WITHOUT ANY WARRANTY; without even the implied warranty of 31 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 32 | GNU Affero General Public License for more details. 33 | 34 | You should have received a copy of the GNU Affero General Public License 35 | along with this program. If not, see . 36 | 37 | See the full [license.](LICENSE) 38 | -------------------------------------------------------------------------------- /src/store/reducers.js: -------------------------------------------------------------------------------- 1 | import { combineReducers } from 'redux'; 2 | 3 | import { 4 | REQUEST_TICKER, 5 | REQUEST_TOKEN_LIST, 6 | RECEIVE_TOKEN_LIST, 7 | } from './actions'; 8 | import { ACTIONS as WS_ACTIONS } from './websocket'; 9 | 10 | function websocket(state = { status: 'unknown' }, action) { 11 | switch (action.type) { 12 | case WS_ACTIONS.WS_CONNECT: 13 | return { ...state, status: 'connected' }; 14 | case WS_ACTIONS.WS_DISCONNECT: 15 | return { ...state, status: 'disconnected' }; 16 | default: 17 | return state; 18 | } 19 | } 20 | 21 | function ticker( 22 | state = { lastRequested: null, lastUpdated: null, data: {} }, 23 | action 24 | ) { 25 | switch (action.type) { 26 | case REQUEST_TICKER: 27 | return { ...state, lastRequested: action.date }; 28 | case WS_ACTIONS.WS_MARKET: 29 | if (action.payload.returnTicker) { 30 | const data = Object.values(action.payload.returnTicker).reduce( 31 | (memo, pair) => { 32 | memo[pair.tokenAddr] = pair; 33 | return memo; 34 | }, 35 | {} 36 | ); 37 | return { 38 | ...state, 39 | lastUpdated: action.date, 40 | data, 41 | }; 42 | } else { 43 | return state; 44 | } 45 | default: 46 | return state; 47 | } 48 | } 49 | 50 | function tokens(state = { isFetching: false, data: {} }, action) { 51 | switch (action.type) { 52 | case REQUEST_TOKEN_LIST: 53 | return { ...state, isFetching: true }; 54 | case RECEIVE_TOKEN_LIST: { 55 | const data = action.list.reduce((memo, token) => { 56 | memo[token.addr] = token; 57 | return memo; 58 | }, {}); 59 | return { ...state, isFetching: false, data }; 60 | } 61 | default: 62 | return state; 63 | } 64 | } 65 | 66 | const rootReducer = combineReducers({ 67 | websocket, 68 | ticker, 69 | tokens, 70 | }); 71 | 72 | export default rootReducer; 73 | -------------------------------------------------------------------------------- /src/store/actions.js: -------------------------------------------------------------------------------- 1 | import { isEmpty } from 'lodash'; 2 | 3 | import { 4 | DUMMY_TOKEN_ADDR, 5 | TICKER_INVALID_INTERVAL, 6 | TOKENS_URL, 7 | } from '../config'; 8 | import websocket from './websocket'; 9 | 10 | export const REQUEST_TICKER = 'REQUEST_TICKER'; 11 | function requestTicker() { 12 | return { 13 | type: REQUEST_TICKER, 14 | date: new Date(), 15 | }; 16 | } 17 | 18 | function shouldFetchTicker(state) { 19 | const { ticker } = state; 20 | return ( 21 | !ticker.lastUpdated || 22 | new Date().getTime() - ticker.lastUpdated.getTime() >= 23 | TICKER_INVALID_INTERVAL 24 | ); 25 | } 26 | 27 | export function fetchTicker() { 28 | return dispatch => { 29 | dispatch(requestTicker()); 30 | websocket.emit('getMarket', { token: DUMMY_TOKEN_ADDR }); 31 | }; 32 | } 33 | 34 | export function fetchTickerIfNeeded() { 35 | return (dispatch, getState) => { 36 | if (shouldFetchTicker(getState())) { 37 | dispatch(fetchTicker()); 38 | } 39 | }; 40 | } 41 | 42 | export const REQUEST_TOKEN_LIST = 'REQUEST_TOKEN_LIST'; 43 | function requestTokensList() { 44 | return { 45 | type: REQUEST_TOKEN_LIST, 46 | date: new Date(), 47 | }; 48 | } 49 | 50 | export const RECEIVE_TOKEN_LIST = 'RECEIVE_TOKEN_LIST'; 51 | function receiveTokensList(tokensList) { 52 | return { 53 | type: RECEIVE_TOKEN_LIST, 54 | date: new Date(), 55 | list: tokensList, 56 | }; 57 | } 58 | 59 | function shouldFetchTokensList(state) { 60 | const { tokens } = state; 61 | return isEmpty(tokens.data) && !tokens.isFetching; 62 | } 63 | 64 | export function fetchTokensList() { 65 | return dispatch => { 66 | dispatch(requestTokensList()); 67 | 68 | fetch(TOKENS_URL) 69 | .then(response => response.json()) 70 | .then(responseJSON => dispatch(receiveTokensList(responseJSON))); 71 | // TODO: Error handling 72 | }; 73 | } 74 | 75 | export function fetchTokensListIfNeeded() { 76 | return (dispatch, getState) => { 77 | if (shouldFetchTokensList(getState())) { 78 | dispatch(fetchTokensList()); 79 | } 80 | }; 81 | } 82 | -------------------------------------------------------------------------------- /src/App.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import { connect } from 'react-redux'; 3 | 4 | import Navbar from './components/app/Navbar'; 5 | import WebsocketConnectingOverlay from './components/app/WebsocketConnectingOverlay'; 6 | import { TICKER_UPDATE_INTERVAL } from './config'; 7 | import { fetchTickerIfNeeded, fetchTokensListIfNeeded } from './store/actions'; 8 | 9 | class App extends Component { 10 | tickerInterval = null; 11 | 12 | componentDidMount() { 13 | const { dispatch } = this.props; 14 | this.startTickerUpdates(); 15 | dispatch(fetchTokensListIfNeeded()); 16 | } 17 | 18 | componentWillUnmount() { 19 | this.stopTickerUpdates(); 20 | } 21 | 22 | startTickerUpdates() { 23 | const { dispatch } = this.props; 24 | dispatch(fetchTickerIfNeeded()); 25 | this.tickerInterval = setInterval(() => { 26 | dispatch(fetchTickerIfNeeded()); 27 | }, TICKER_UPDATE_INTERVAL); 28 | } 29 | 30 | stopTickerUpdates() { 31 | this.tickerInterval && clearInterval(this.tickerInterval); 32 | } 33 | 34 | render() { 35 | const { 36 | pairs, 37 | tickerLastUpdated, 38 | websocket, 39 | websocketOffline, 40 | } = this.props; 41 | return ( 42 |
43 | 44 |
45 |

{websocket.status}

46 |

47 | {(tickerLastUpdated && 48 | new Date(tickerLastUpdated.getTime()).toTimeString()) || 49 | 'never'} 50 |

51 |

{JSON.stringify(pairs)}

52 |
53 | 54 | 55 |
56 | ); 57 | } 58 | } 59 | 60 | function mapStateToProps(state) { 61 | const { 62 | ticker: { data: ticker, lastUpdated: tickerLastUpdated }, 63 | tokens: { data: tokens }, 64 | websocket, 65 | } = state; 66 | 67 | const pairs = Object.keys(tokens).reduce((memo, addr) => { 68 | memo[addr] = { ...ticker[addr], ...tokens[addr] }; 69 | return memo; 70 | }, {}); 71 | 72 | const websocketOffline = websocket.status !== 'connected'; 73 | 74 | return { 75 | pairs, 76 | ticker, 77 | tickerLastUpdated, 78 | tokens, 79 | websocket, 80 | websocketOffline, 81 | }; 82 | } 83 | 84 | export default connect(mapStateToProps)(App); 85 | -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 26 | 27 | 28 | 29 | 30 | 31 | ForkDelta | Decentralized Ethereum Token Exchange 32 | 33 | 34 | 35 | 38 |
39 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /src/components/app/PairsTable.js: -------------------------------------------------------------------------------- 1 | import { format } from 'd3-format'; 2 | import React from 'react'; 3 | import ReactTable from 'react-table'; 4 | 5 | import './PairsTable.css'; 6 | 7 | function PairsTable({ 8 | pairs, 9 | lastUpdated, 10 | onPairSelected, 11 | style = {}, 12 | className = null, 13 | }) { 14 | return ( 15 | ({ 19 | onClick: e => onPairSelected && onPairSelected(rowInfo.original.addr) 20 | })} 21 | data={Object.values(pairs)} 22 | defaultPageSize={100} 23 | defaultSorted={DEFAULT_SORT} 24 | minRows={10} 25 | showPagination={false} 26 | style={style} 27 | /> 28 | ); 29 | } 30 | 31 | const formatVolume = format('.4r'), 32 | formatPrice = format('.3r'), 33 | formatSpread = format('.2%'), 34 | formatPercentageChange = format('+.2%'); 35 | 36 | const COLUMNS = [ 37 | { 38 | Header: 'Name', 39 | id: 'name', 40 | accessor: ({ tokenAddr, name }) => name || tokenAddr.slice(0, 8), 41 | Cell: ({ value }) => {value}, 42 | minWidth: 80, 43 | }, 44 | { 45 | Header: 'Volume, Ξ', 46 | id: 'volume', 47 | accessor: ({ baseVolume, last, quoteVolume }) => 48 | baseVolume != null && quoteVolume != null 49 | ? baseVolume + quoteVolume * last 50 | : null, 51 | Cell: ({ value }) => (value !== null ? formatVolume(value) : ''), 52 | className: 'text-center', 53 | minWidth: 85, 54 | }, 55 | { 56 | Header: 'Bid', 57 | accessor: 'bid', 58 | Cell: ({ value }) => (value != null ? formatPrice(value) : ''), 59 | className: 'text-center', 60 | minWidth: 120, 61 | }, 62 | { 63 | Header: 'Ask', 64 | accessor: 'ask', 65 | Cell: ({ value }) => (value != null ? formatPrice(value) : ''), 66 | className: 'text-center', 67 | minWidth: 120, 68 | }, 69 | { 70 | Header: () => Spread, %, 71 | id: 'spread', 72 | accessor: ({ ask, bid }) => 73 | ask != null && bid != null ? (ask - bid) / ask : null, 74 | Cell: ({ value }) => (value !== null ? formatSpread(value) : ''), 75 | className: 'numeric-comparable', 76 | minWidth: 85, 77 | }, 78 | { 79 | Header: 'Change', 80 | accessor: 'percentChange', 81 | Cell: ({ value }) => 82 | value != null ? ( 83 | = 0 ? 'positive' : 'negative'}> 85 | {formatPercentageChange(value)} 86 | 87 | ) : ( 88 | '' 89 | ), 90 | className: 'percent-change numeric-comparable', 91 | minWidth: 85, 92 | }, 93 | ]; 94 | 95 | const DEFAULT_SORT = [{ id: 'volume', desc: true }]; 96 | 97 | export default PairsTable; 98 | -------------------------------------------------------------------------------- /src/registerServiceWorker.js: -------------------------------------------------------------------------------- 1 | // In production, we register a service worker to serve assets from local cache. 2 | 3 | // This lets the app load faster on subsequent visits in production, and gives 4 | // it offline capabilities. However, it also means that developers (and users) 5 | // will only see deployed updates on the "N+1" visit to a page, since previously 6 | // cached resources are updated in the background. 7 | 8 | // To learn more about the benefits of this model, read https://goo.gl/KwvDNy. 9 | // This link also includes instructions on opting out of this behavior. 10 | 11 | const isLocalhost = Boolean( 12 | window.location.hostname === 'localhost' || 13 | // [::1] is the IPv6 localhost address. 14 | window.location.hostname === '[::1]' || 15 | // 127.0.0.1/8 is considered localhost for IPv4. 16 | window.location.hostname.match( 17 | /^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/ 18 | ) 19 | ); 20 | 21 | export default function register() { 22 | if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) { 23 | // The URL constructor is available in all browsers that support SW. 24 | const publicUrl = new URL(process.env.PUBLIC_URL, window.location); 25 | if (publicUrl.origin !== window.location.origin) { 26 | // Our service worker won't work if PUBLIC_URL is on a different origin 27 | // from what our page is served on. This might happen if a CDN is used to 28 | // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374 29 | return; 30 | } 31 | 32 | window.addEventListener('load', () => { 33 | const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`; 34 | 35 | if (isLocalhost) { 36 | // This is running on localhost. Lets check if a service worker still exists or not. 37 | checkValidServiceWorker(swUrl); 38 | } else { 39 | // Is not local host. Just register service worker 40 | registerValidSW(swUrl); 41 | } 42 | }); 43 | } 44 | } 45 | 46 | function registerValidSW(swUrl) { 47 | navigator.serviceWorker 48 | .register(swUrl) 49 | .then(registration => { 50 | registration.onupdatefound = () => { 51 | const installingWorker = registration.installing; 52 | installingWorker.onstatechange = () => { 53 | if (installingWorker.state === 'installed') { 54 | if (navigator.serviceWorker.controller) { 55 | // At this point, the old content will have been purged and 56 | // the fresh content will have been added to the cache. 57 | // It's the perfect time to display a "New content is 58 | // available; please refresh." message in your web app. 59 | console.log('New content is available; please refresh.'); 60 | } else { 61 | // At this point, everything has been precached. 62 | // It's the perfect time to display a 63 | // "Content is cached for offline use." message. 64 | console.log('Content is cached for offline use.'); 65 | } 66 | } 67 | }; 68 | }; 69 | }) 70 | .catch(error => { 71 | console.error('Error during service worker registration:', error); 72 | }); 73 | } 74 | 75 | function checkValidServiceWorker(swUrl) { 76 | // Check if the service worker can be found. If it can't reload the page. 77 | fetch(swUrl) 78 | .then(response => { 79 | // Ensure service worker exists, and that we really are getting a JS file. 80 | if ( 81 | response.status === 404 || 82 | response.headers.get('content-type').indexOf('javascript') === -1 83 | ) { 84 | // No service worker found. Probably a different app. Reload the page. 85 | navigator.serviceWorker.ready.then(registration => { 86 | registration.unregister().then(() => { 87 | window.location.reload(); 88 | }); 89 | }); 90 | } else { 91 | // Service worker found. Proceed as normal. 92 | registerValidSW(swUrl); 93 | } 94 | }) 95 | .catch(() => { 96 | console.log( 97 | 'No internet connection found. App is running in offline mode.' 98 | ); 99 | }); 100 | } 101 | 102 | export function unregister() { 103 | if ('serviceWorker' in navigator) { 104 | navigator.serviceWorker.ready.then(registration => { 105 | registration.unregister(); 106 | }); 107 | } 108 | } 109 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU AFFERO GENERAL PUBLIC LICENSE 2 | Version 3, 19 November 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | Preamble 9 | 10 | The GNU Affero General Public License is a free, copyleft license for 11 | software and other kinds of works, specifically designed to ensure 12 | cooperation with the community in the case of network server software. 13 | 14 | The licenses for most software and other practical works are designed 15 | to take away your freedom to share and change the works. By contrast, 16 | our General Public Licenses are intended to guarantee your freedom to 17 | share and change all versions of a program--to make sure it remains free 18 | software for all its users. 19 | 20 | When we speak of free software, we are referring to freedom, not 21 | price. Our General Public Licenses are designed to make sure that you 22 | have the freedom to distribute copies of free software (and charge for 23 | them if you wish), that you receive source code or can get it if you 24 | want it, that you can change the software or use pieces of it in new 25 | free programs, and that you know you can do these things. 26 | 27 | Developers that use our General Public Licenses protect your rights 28 | with two steps: (1) assert copyright on the software, and (2) offer 29 | you this License which gives you legal permission to copy, distribute 30 | and/or modify the software. 31 | 32 | A secondary benefit of defending all users' freedom is that 33 | improvements made in alternate versions of the program, if they 34 | receive widespread use, become available for other developers to 35 | incorporate. Many developers of free software are heartened and 36 | encouraged by the resulting cooperation. However, in the case of 37 | software used on network servers, this result may fail to come about. 38 | The GNU General Public License permits making a modified version and 39 | letting the public access it on a server without ever releasing its 40 | source code to the public. 41 | 42 | The GNU Affero General Public License is designed specifically to 43 | ensure that, in such cases, the modified source code becomes available 44 | to the community. It requires the operator of a network server to 45 | provide the source code of the modified version running there to the 46 | users of that server. Therefore, public use of a modified version, on 47 | a publicly accessible server, gives the public access to the source 48 | code of the modified version. 49 | 50 | An older license, called the Affero General Public License and 51 | published by Affero, was designed to accomplish similar goals. This is 52 | a different license, not a version of the Affero GPL, but Affero has 53 | released a new version of the Affero GPL which permits relicensing under 54 | this license. 55 | 56 | The precise terms and conditions for copying, distribution and 57 | modification follow. 58 | 59 | TERMS AND CONDITIONS 60 | 61 | 0. Definitions. 62 | 63 | "This License" refers to version 3 of the GNU Affero General Public License. 64 | 65 | "Copyright" also means copyright-like laws that apply to other kinds of 66 | works, such as semiconductor masks. 67 | 68 | "The Program" refers to any copyrightable work licensed under this 69 | License. Each licensee is addressed as "you". "Licensees" and 70 | "recipients" may be individuals or organizations. 71 | 72 | To "modify" a work means to copy from or adapt all or part of the work 73 | in a fashion requiring copyright permission, other than the making of an 74 | exact copy. The resulting work is called a "modified version" of the 75 | earlier work or a work "based on" the earlier work. 76 | 77 | A "covered work" means either the unmodified Program or a work based 78 | on the Program. 79 | 80 | To "propagate" a work means to do anything with it that, without 81 | permission, would make you directly or secondarily liable for 82 | infringement under applicable copyright law, except executing it on a 83 | computer or modifying a private copy. Propagation includes copying, 84 | distribution (with or without modification), making available to the 85 | public, and in some countries other activities as well. 86 | 87 | To "convey" a work means any kind of propagation that enables other 88 | parties to make or receive copies. Mere interaction with a user through 89 | a computer network, with no transfer of a copy, is not conveying. 90 | 91 | An interactive user interface displays "Appropriate Legal Notices" 92 | to the extent that it includes a convenient and prominently visible 93 | feature that (1) displays an appropriate copyright notice, and (2) 94 | tells the user that there is no warranty for the work (except to the 95 | extent that warranties are provided), that licensees may convey the 96 | work under this License, and how to view a copy of this License. If 97 | the interface presents a list of user commands or options, such as a 98 | menu, a prominent item in the list meets this criterion. 99 | 100 | 1. Source Code. 101 | 102 | The "source code" for a work means the preferred form of the work 103 | for making modifications to it. "Object code" means any non-source 104 | form of a work. 105 | 106 | A "Standard Interface" means an interface that either is an official 107 | standard defined by a recognized standards body, or, in the case of 108 | interfaces specified for a particular programming language, one that 109 | is widely used among developers working in that language. 110 | 111 | The "System Libraries" of an executable work include anything, other 112 | than the work as a whole, that (a) is included in the normal form of 113 | packaging a Major Component, but which is not part of that Major 114 | Component, and (b) serves only to enable use of the work with that 115 | Major Component, or to implement a Standard Interface for which an 116 | implementation is available to the public in source code form. A 117 | "Major Component", in this context, means a major essential component 118 | (kernel, window system, and so on) of the specific operating system 119 | (if any) on which the executable work runs, or a compiler used to 120 | produce the work, or an object code interpreter used to run it. 121 | 122 | The "Corresponding Source" for a work in object code form means all 123 | the source code needed to generate, install, and (for an executable 124 | work) run the object code and to modify the work, including scripts to 125 | control those activities. However, it does not include the work's 126 | System Libraries, or general-purpose tools or generally available free 127 | programs which are used unmodified in performing those activities but 128 | which are not part of the work. For example, Corresponding Source 129 | includes interface definition files associated with source files for 130 | the work, and the source code for shared libraries and dynamically 131 | linked subprograms that the work is specifically designed to require, 132 | such as by intimate data communication or control flow between those 133 | subprograms and other parts of the work. 134 | 135 | The Corresponding Source need not include anything that users 136 | can regenerate automatically from other parts of the Corresponding 137 | Source. 138 | 139 | The Corresponding Source for a work in source code form is that 140 | same work. 141 | 142 | 2. Basic Permissions. 143 | 144 | All rights granted under this License are granted for the term of 145 | copyright on the Program, and are irrevocable provided the stated 146 | conditions are met. This License explicitly affirms your unlimited 147 | permission to run the unmodified Program. The output from running a 148 | covered work is covered by this License only if the output, given its 149 | content, constitutes a covered work. This License acknowledges your 150 | rights of fair use or other equivalent, as provided by copyright law. 151 | 152 | You may make, run and propagate covered works that you do not 153 | convey, without conditions so long as your license otherwise remains 154 | in force. You may convey covered works to others for the sole purpose 155 | of having them make modifications exclusively for you, or provide you 156 | with facilities for running those works, provided that you comply with 157 | the terms of this License in conveying all material for which you do 158 | not control copyright. Those thus making or running the covered works 159 | for you must do so exclusively on your behalf, under your direction 160 | and control, on terms that prohibit them from making any copies of 161 | your copyrighted material outside their relationship with you. 162 | 163 | Conveying under any other circumstances is permitted solely under 164 | the conditions stated below. Sublicensing is not allowed; section 10 165 | makes it unnecessary. 166 | 167 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 168 | 169 | No covered work shall be deemed part of an effective technological 170 | measure under any applicable law fulfilling obligations under article 171 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 172 | similar laws prohibiting or restricting circumvention of such 173 | measures. 174 | 175 | When you convey a covered work, you waive any legal power to forbid 176 | circumvention of technological measures to the extent such circumvention 177 | is effected by exercising rights under this License with respect to 178 | the covered work, and you disclaim any intention to limit operation or 179 | modification of the work as a means of enforcing, against the work's 180 | users, your or third parties' legal rights to forbid circumvention of 181 | technological measures. 182 | 183 | 4. Conveying Verbatim Copies. 184 | 185 | You may convey verbatim copies of the Program's source code as you 186 | receive it, in any medium, provided that you conspicuously and 187 | appropriately publish on each copy an appropriate copyright notice; 188 | keep intact all notices stating that this License and any 189 | non-permissive terms added in accord with section 7 apply to the code; 190 | keep intact all notices of the absence of any warranty; and give all 191 | recipients a copy of this License along with the Program. 192 | 193 | You may charge any price or no price for each copy that you convey, 194 | and you may offer support or warranty protection for a fee. 195 | 196 | 5. Conveying Modified Source Versions. 197 | 198 | You may convey a work based on the Program, or the modifications to 199 | produce it from the Program, in the form of source code under the 200 | terms of section 4, provided that you also meet all of these conditions: 201 | 202 | a) The work must carry prominent notices stating that you modified 203 | it, and giving a relevant date. 204 | 205 | b) The work must carry prominent notices stating that it is 206 | released under this License and any conditions added under section 207 | 7. This requirement modifies the requirement in section 4 to 208 | "keep intact all notices". 209 | 210 | c) You must license the entire work, as a whole, under this 211 | License to anyone who comes into possession of a copy. This 212 | License will therefore apply, along with any applicable section 7 213 | additional terms, to the whole of the work, and all its parts, 214 | regardless of how they are packaged. This License gives no 215 | permission to license the work in any other way, but it does not 216 | invalidate such permission if you have separately received it. 217 | 218 | d) If the work has interactive user interfaces, each must display 219 | Appropriate Legal Notices; however, if the Program has interactive 220 | interfaces that do not display Appropriate Legal Notices, your 221 | work need not make them do so. 222 | 223 | A compilation of a covered work with other separate and independent 224 | works, which are not by their nature extensions of the covered work, 225 | and which are not combined with it such as to form a larger program, 226 | in or on a volume of a storage or distribution medium, is called an 227 | "aggregate" if the compilation and its resulting copyright are not 228 | used to limit the access or legal rights of the compilation's users 229 | beyond what the individual works permit. Inclusion of a covered work 230 | in an aggregate does not cause this License to apply to the other 231 | parts of the aggregate. 232 | 233 | 6. Conveying Non-Source Forms. 234 | 235 | You may convey a covered work in object code form under the terms 236 | of sections 4 and 5, provided that you also convey the 237 | machine-readable Corresponding Source under the terms of this License, 238 | in one of these ways: 239 | 240 | a) Convey the object code in, or embodied in, a physical product 241 | (including a physical distribution medium), accompanied by the 242 | Corresponding Source fixed on a durable physical medium 243 | customarily used for software interchange. 244 | 245 | b) Convey the object code in, or embodied in, a physical product 246 | (including a physical distribution medium), accompanied by a 247 | written offer, valid for at least three years and valid for as 248 | long as you offer spare parts or customer support for that product 249 | model, to give anyone who possesses the object code either (1) a 250 | copy of the Corresponding Source for all the software in the 251 | product that is covered by this License, on a durable physical 252 | medium customarily used for software interchange, for a price no 253 | more than your reasonable cost of physically performing this 254 | conveying of source, or (2) access to copy the 255 | Corresponding Source from a network server at no charge. 256 | 257 | c) Convey individual copies of the object code with a copy of the 258 | written offer to provide the Corresponding Source. This 259 | alternative is allowed only occasionally and noncommercially, and 260 | only if you received the object code with such an offer, in accord 261 | with subsection 6b. 262 | 263 | d) Convey the object code by offering access from a designated 264 | place (gratis or for a charge), and offer equivalent access to the 265 | Corresponding Source in the same way through the same place at no 266 | further charge. You need not require recipients to copy the 267 | Corresponding Source along with the object code. If the place to 268 | copy the object code is a network server, the Corresponding Source 269 | may be on a different server (operated by you or a third party) 270 | that supports equivalent copying facilities, provided you maintain 271 | clear directions next to the object code saying where to find the 272 | Corresponding Source. Regardless of what server hosts the 273 | Corresponding Source, you remain obligated to ensure that it is 274 | available for as long as needed to satisfy these requirements. 275 | 276 | e) Convey the object code using peer-to-peer transmission, provided 277 | you inform other peers where the object code and Corresponding 278 | Source of the work are being offered to the general public at no 279 | charge under subsection 6d. 280 | 281 | A separable portion of the object code, whose source code is excluded 282 | from the Corresponding Source as a System Library, need not be 283 | included in conveying the object code work. 284 | 285 | A "User Product" is either (1) a "consumer product", which means any 286 | tangible personal property which is normally used for personal, family, 287 | or household purposes, or (2) anything designed or sold for incorporation 288 | into a dwelling. In determining whether a product is a consumer product, 289 | doubtful cases shall be resolved in favor of coverage. For a particular 290 | product received by a particular user, "normally used" refers to a 291 | typical or common use of that class of product, regardless of the status 292 | of the particular user or of the way in which the particular user 293 | actually uses, or expects or is expected to use, the product. A product 294 | is a consumer product regardless of whether the product has substantial 295 | commercial, industrial or non-consumer uses, unless such uses represent 296 | the only significant mode of use of the product. 297 | 298 | "Installation Information" for a User Product means any methods, 299 | procedures, authorization keys, or other information required to install 300 | and execute modified versions of a covered work in that User Product from 301 | a modified version of its Corresponding Source. The information must 302 | suffice to ensure that the continued functioning of the modified object 303 | code is in no case prevented or interfered with solely because 304 | modification has been made. 305 | 306 | If you convey an object code work under this section in, or with, or 307 | specifically for use in, a User Product, and the conveying occurs as 308 | part of a transaction in which the right of possession and use of the 309 | User Product is transferred to the recipient in perpetuity or for a 310 | fixed term (regardless of how the transaction is characterized), the 311 | Corresponding Source conveyed under this section must be accompanied 312 | by the Installation Information. But this requirement does not apply 313 | if neither you nor any third party retains the ability to install 314 | modified object code on the User Product (for example, the work has 315 | been installed in ROM). 316 | 317 | The requirement to provide Installation Information does not include a 318 | requirement to continue to provide support service, warranty, or updates 319 | for a work that has been modified or installed by the recipient, or for 320 | the User Product in which it has been modified or installed. Access to a 321 | network may be denied when the modification itself materially and 322 | adversely affects the operation of the network or violates the rules and 323 | protocols for communication across the network. 324 | 325 | Corresponding Source conveyed, and Installation Information provided, 326 | in accord with this section must be in a format that is publicly 327 | documented (and with an implementation available to the public in 328 | source code form), and must require no special password or key for 329 | unpacking, reading or copying. 330 | 331 | 7. Additional Terms. 332 | 333 | "Additional permissions" are terms that supplement the terms of this 334 | License by making exceptions from one or more of its conditions. 335 | Additional permissions that are applicable to the entire Program shall 336 | be treated as though they were included in this License, to the extent 337 | that they are valid under applicable law. If additional permissions 338 | apply only to part of the Program, that part may be used separately 339 | under those permissions, but the entire Program remains governed by 340 | this License without regard to the additional permissions. 341 | 342 | When you convey a copy of a covered work, you may at your option 343 | remove any additional permissions from that copy, or from any part of 344 | it. (Additional permissions may be written to require their own 345 | removal in certain cases when you modify the work.) You may place 346 | additional permissions on material, added by you to a covered work, 347 | for which you have or can give appropriate copyright permission. 348 | 349 | Notwithstanding any other provision of this License, for material you 350 | add to a covered work, you may (if authorized by the copyright holders of 351 | that material) supplement the terms of this License with terms: 352 | 353 | a) Disclaiming warranty or limiting liability differently from the 354 | terms of sections 15 and 16 of this License; or 355 | 356 | b) Requiring preservation of specified reasonable legal notices or 357 | author attributions in that material or in the Appropriate Legal 358 | Notices displayed by works containing it; or 359 | 360 | c) Prohibiting misrepresentation of the origin of that material, or 361 | requiring that modified versions of such material be marked in 362 | reasonable ways as different from the original version; or 363 | 364 | d) Limiting the use for publicity purposes of names of licensors or 365 | authors of the material; or 366 | 367 | e) Declining to grant rights under trademark law for use of some 368 | trade names, trademarks, or service marks; or 369 | 370 | f) Requiring indemnification of licensors and authors of that 371 | material by anyone who conveys the material (or modified versions of 372 | it) with contractual assumptions of liability to the recipient, for 373 | any liability that these contractual assumptions directly impose on 374 | those licensors and authors. 375 | 376 | All other non-permissive additional terms are considered "further 377 | restrictions" within the meaning of section 10. If the Program as you 378 | received it, or any part of it, contains a notice stating that it is 379 | governed by this License along with a term that is a further 380 | restriction, you may remove that term. If a license document contains 381 | a further restriction but permits relicensing or conveying under this 382 | License, you may add to a covered work material governed by the terms 383 | of that license document, provided that the further restriction does 384 | not survive such relicensing or conveying. 385 | 386 | If you add terms to a covered work in accord with this section, you 387 | must place, in the relevant source files, a statement of the 388 | additional terms that apply to those files, or a notice indicating 389 | where to find the applicable terms. 390 | 391 | Additional terms, permissive or non-permissive, may be stated in the 392 | form of a separately written license, or stated as exceptions; 393 | the above requirements apply either way. 394 | 395 | 8. Termination. 396 | 397 | You may not propagate or modify a covered work except as expressly 398 | provided under this License. Any attempt otherwise to propagate or 399 | modify it is void, and will automatically terminate your rights under 400 | this License (including any patent licenses granted under the third 401 | paragraph of section 11). 402 | 403 | However, if you cease all violation of this License, then your 404 | license from a particular copyright holder is reinstated (a) 405 | provisionally, unless and until the copyright holder explicitly and 406 | finally terminates your license, and (b) permanently, if the copyright 407 | holder fails to notify you of the violation by some reasonable means 408 | prior to 60 days after the cessation. 409 | 410 | Moreover, your license from a particular copyright holder is 411 | reinstated permanently if the copyright holder notifies you of the 412 | violation by some reasonable means, this is the first time you have 413 | received notice of violation of this License (for any work) from that 414 | copyright holder, and you cure the violation prior to 30 days after 415 | your receipt of the notice. 416 | 417 | Termination of your rights under this section does not terminate the 418 | licenses of parties who have received copies or rights from you under 419 | this License. If your rights have been terminated and not permanently 420 | reinstated, you do not qualify to receive new licenses for the same 421 | material under section 10. 422 | 423 | 9. Acceptance Not Required for Having Copies. 424 | 425 | You are not required to accept this License in order to receive or 426 | run a copy of the Program. Ancillary propagation of a covered work 427 | occurring solely as a consequence of using peer-to-peer transmission 428 | to receive a copy likewise does not require acceptance. However, 429 | nothing other than this License grants you permission to propagate or 430 | modify any covered work. These actions infringe copyright if you do 431 | not accept this License. Therefore, by modifying or propagating a 432 | covered work, you indicate your acceptance of this License to do so. 433 | 434 | 10. Automatic Licensing of Downstream Recipients. 435 | 436 | Each time you convey a covered work, the recipient automatically 437 | receives a license from the original licensors, to run, modify and 438 | propagate that work, subject to this License. You are not responsible 439 | for enforcing compliance by third parties with this License. 440 | 441 | An "entity transaction" is a transaction transferring control of an 442 | organization, or substantially all assets of one, or subdividing an 443 | organization, or merging organizations. If propagation of a covered 444 | work results from an entity transaction, each party to that 445 | transaction who receives a copy of the work also receives whatever 446 | licenses to the work the party's predecessor in interest had or could 447 | give under the previous paragraph, plus a right to possession of the 448 | Corresponding Source of the work from the predecessor in interest, if 449 | the predecessor has it or can get it with reasonable efforts. 450 | 451 | You may not impose any further restrictions on the exercise of the 452 | rights granted or affirmed under this License. For example, you may 453 | not impose a license fee, royalty, or other charge for exercise of 454 | rights granted under this License, and you may not initiate litigation 455 | (including a cross-claim or counterclaim in a lawsuit) alleging that 456 | any patent claim is infringed by making, using, selling, offering for 457 | sale, or importing the Program or any portion of it. 458 | 459 | 11. Patents. 460 | 461 | A "contributor" is a copyright holder who authorizes use under this 462 | License of the Program or a work on which the Program is based. The 463 | work thus licensed is called the contributor's "contributor version". 464 | 465 | A contributor's "essential patent claims" are all patent claims 466 | owned or controlled by the contributor, whether already acquired or 467 | hereafter acquired, that would be infringed by some manner, permitted 468 | by this License, of making, using, or selling its contributor version, 469 | but do not include claims that would be infringed only as a 470 | consequence of further modification of the contributor version. For 471 | purposes of this definition, "control" includes the right to grant 472 | patent sublicenses in a manner consistent with the requirements of 473 | this License. 474 | 475 | Each contributor grants you a non-exclusive, worldwide, royalty-free 476 | patent license under the contributor's essential patent claims, to 477 | make, use, sell, offer for sale, import and otherwise run, modify and 478 | propagate the contents of its contributor version. 479 | 480 | In the following three paragraphs, a "patent license" is any express 481 | agreement or commitment, however denominated, not to enforce a patent 482 | (such as an express permission to practice a patent or covenant not to 483 | sue for patent infringement). To "grant" such a patent license to a 484 | party means to make such an agreement or commitment not to enforce a 485 | patent against the party. 486 | 487 | If you convey a covered work, knowingly relying on a patent license, 488 | and the Corresponding Source of the work is not available for anyone 489 | to copy, free of charge and under the terms of this License, through a 490 | publicly available network server or other readily accessible means, 491 | then you must either (1) cause the Corresponding Source to be so 492 | available, or (2) arrange to deprive yourself of the benefit of the 493 | patent license for this particular work, or (3) arrange, in a manner 494 | consistent with the requirements of this License, to extend the patent 495 | license to downstream recipients. "Knowingly relying" means you have 496 | actual knowledge that, but for the patent license, your conveying the 497 | covered work in a country, or your recipient's use of the covered work 498 | in a country, would infringe one or more identifiable patents in that 499 | country that you have reason to believe are valid. 500 | 501 | If, pursuant to or in connection with a single transaction or 502 | arrangement, you convey, or propagate by procuring conveyance of, a 503 | covered work, and grant a patent license to some of the parties 504 | receiving the covered work authorizing them to use, propagate, modify 505 | or convey a specific copy of the covered work, then the patent license 506 | you grant is automatically extended to all recipients of the covered 507 | work and works based on it. 508 | 509 | A patent license is "discriminatory" if it does not include within 510 | the scope of its coverage, prohibits the exercise of, or is 511 | conditioned on the non-exercise of one or more of the rights that are 512 | specifically granted under this License. You may not convey a covered 513 | work if you are a party to an arrangement with a third party that is 514 | in the business of distributing software, under which you make payment 515 | to the third party based on the extent of your activity of conveying 516 | the work, and under which the third party grants, to any of the 517 | parties who would receive the covered work from you, a discriminatory 518 | patent license (a) in connection with copies of the covered work 519 | conveyed by you (or copies made from those copies), or (b) primarily 520 | for and in connection with specific products or compilations that 521 | contain the covered work, unless you entered into that arrangement, 522 | or that patent license was granted, prior to 28 March 2007. 523 | 524 | Nothing in this License shall be construed as excluding or limiting 525 | any implied license or other defenses to infringement that may 526 | otherwise be available to you under applicable patent law. 527 | 528 | 12. No Surrender of Others' Freedom. 529 | 530 | If conditions are imposed on you (whether by court order, agreement or 531 | otherwise) that contradict the conditions of this License, they do not 532 | excuse you from the conditions of this License. If you cannot convey a 533 | covered work so as to satisfy simultaneously your obligations under this 534 | License and any other pertinent obligations, then as a consequence you may 535 | not convey it at all. For example, if you agree to terms that obligate you 536 | to collect a royalty for further conveying from those to whom you convey 537 | the Program, the only way you could satisfy both those terms and this 538 | License would be to refrain entirely from conveying the Program. 539 | 540 | 13. Remote Network Interaction; Use with the GNU General Public License. 541 | 542 | Notwithstanding any other provision of this License, if you modify the 543 | Program, your modified version must prominently offer all users 544 | interacting with it remotely through a computer network (if your version 545 | supports such interaction) an opportunity to receive the Corresponding 546 | Source of your version by providing access to the Corresponding Source 547 | from a network server at no charge, through some standard or customary 548 | means of facilitating copying of software. This Corresponding Source 549 | shall include the Corresponding Source for any work covered by version 3 550 | of the GNU General Public License that is incorporated pursuant to the 551 | following paragraph. 552 | 553 | Notwithstanding any other provision of this License, you have 554 | permission to link or combine any covered work with a work licensed 555 | under version 3 of the GNU General Public License into a single 556 | combined work, and to convey the resulting work. The terms of this 557 | License will continue to apply to the part which is the covered work, 558 | but the work with which it is combined will remain governed by version 559 | 3 of the GNU General Public License. 560 | 561 | 14. Revised Versions of this License. 562 | 563 | The Free Software Foundation may publish revised and/or new versions of 564 | the GNU Affero General Public License from time to time. Such new versions 565 | will be similar in spirit to the present version, but may differ in detail to 566 | address new problems or concerns. 567 | 568 | Each version is given a distinguishing version number. If the 569 | Program specifies that a certain numbered version of the GNU Affero General 570 | Public License "or any later version" applies to it, you have the 571 | option of following the terms and conditions either of that numbered 572 | version or of any later version published by the Free Software 573 | Foundation. If the Program does not specify a version number of the 574 | GNU Affero General Public License, you may choose any version ever published 575 | by the Free Software Foundation. 576 | 577 | If the Program specifies that a proxy can decide which future 578 | versions of the GNU Affero General Public License can be used, that proxy's 579 | public statement of acceptance of a version permanently authorizes you 580 | to choose that version for the Program. 581 | 582 | Later license versions may give you additional or different 583 | permissions. However, no additional obligations are imposed on any 584 | author or copyright holder as a result of your choosing to follow a 585 | later version. 586 | 587 | 15. Disclaimer of Warranty. 588 | 589 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 590 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 591 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 592 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 593 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 594 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 595 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 596 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 597 | 598 | 16. Limitation of Liability. 599 | 600 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 601 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 602 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 603 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 604 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 605 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 606 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 607 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 608 | SUCH DAMAGES. 609 | 610 | 17. Interpretation of Sections 15 and 16. 611 | 612 | If the disclaimer of warranty and limitation of liability provided 613 | above cannot be given local legal effect according to their terms, 614 | reviewing courts shall apply local law that most closely approximates 615 | an absolute waiver of all civil liability in connection with the 616 | Program, unless a warranty or assumption of liability accompanies a 617 | copy of the Program in return for a fee. 618 | 619 | END OF TERMS AND CONDITIONS 620 | 621 | How to Apply These Terms to Your New Programs 622 | 623 | If you develop a new program, and you want it to be of the greatest 624 | possible use to the public, the best way to achieve this is to make it 625 | free software which everyone can redistribute and change under these terms. 626 | 627 | To do so, attach the following notices to the program. It is safest 628 | to attach them to the start of each source file to most effectively 629 | state the exclusion of warranty; and each file should have at least 630 | the "copyright" line and a pointer to where the full notice is found. 631 | 632 | 633 | Copyright (C) 634 | 635 | This program is free software: you can redistribute it and/or modify 636 | it under the terms of the GNU Affero General Public License as published by 637 | the Free Software Foundation, either version 3 of the License, or 638 | (at your option) any later version. 639 | 640 | This program is distributed in the hope that it will be useful, 641 | but WITHOUT ANY WARRANTY; without even the implied warranty of 642 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 643 | GNU Affero General Public License for more details. 644 | 645 | You should have received a copy of the GNU Affero General Public License 646 | along with this program. If not, see . 647 | 648 | Also add information on how to contact you by electronic and paper mail. 649 | 650 | If your software can interact with users remotely through a computer 651 | network, you should also make sure that it provides a way for users to 652 | get its source. For example, if your program is a web application, its 653 | interface could display a "Source" link that leads users to an archive 654 | of the code. There are many ways you could offer source, and different 655 | solutions will be better for different programs; see section 13 for the 656 | specific requirements. 657 | 658 | You should also get your employer (if you work as a programmer) or school, 659 | if any, to sign a "copyright disclaimer" for the program, if necessary. 660 | For more information on this, and how to apply and follow the GNU AGPL, see 661 | . 662 | -------------------------------------------------------------------------------- /public/tokens.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "addr": "0x0000000000000000000000000000000000000000", "name": "ETH", "decimals": 18 }, 3 | { "addr": "0xd8912c10681d8b21fd3742244f44658dba12264e", "name": "PLU", "decimals": 18 }, 4 | { "addr": "0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc7", "name": "1ST", "decimals": 18 }, 5 | { "addr": "0x936f78b9852d12f5cb93177c1f84fb8513d06263", "name": "GNTW", "decimals": 18 }, 6 | { "addr": "0x01afc37f4f85babc47c0e2d0eababc7fb49793c8", "name": "GNTM", "decimals": 18 }, 7 | { "addr": "0x5c543e7ae0a1104f78406c340e9c64fd9fce5170", "name": "VSL", "decimals": 18 }, 8 | { "addr": "0xac709fcb44a43c35f0da4e3163b117a17f3770f5", "name": "ARC", "decimals": 18 }, 9 | { "addr": "0x14f37b574242d366558db61f3335289a5035c506", "name": "HKG", "decimals": 3 }, 10 | { "addr": "0x888666ca69e0f178ded6d75b5726cee99a87d698", "name": "ICN", "decimals": 18 }, 11 | { "addr": "0xe94327d07fc17907b4db788e5adf2ed424addff6", "name": "REP", "decimals": 18 }, 12 | { "addr": "0xaec2e87e0a235266d9c5adc9deb4b2e29b54d009", "name": "SNGLS", "decimals": 0 }, 13 | { "addr": "0x4df812f6064def1e5e029f1ca858777cc98d2d81", "name": "XAUR", "decimals": 8 }, 14 | { "addr": "0xc66ea802717bfb9833400264dd12c2bceaa34a6d", "name": "MKR", "decimals": 18 }, 15 | { "addr": "0xe0b7927c4af23765cb51314a0e0521a9645f0e2a", "name": "DGD", "decimals": 9 }, 16 | { "addr": "0xce3d9c3f3d302436d12f18eca97a3b00e97be7cd", "name": "EPOSY", "decimals": 18 }, 17 | { "addr": "0x289fe11c6f46e28f9f1cfc72119aee92c1da50d0", "name": "EPOSN", "decimals": 18 }, 18 | { "addr": "0x55e7c4a77821d5c50b4570b08f9f92896a25e012", "name": "P+", "decimals": 0 }, 19 | { "addr": "0x45e42d659d9f9466cd5df622506033145a9b89bc", "name": "NXC", "decimals": 3 }, 20 | { "addr": "0x08d32b0da63e2C3bcF8019c9c5d849d7a9d791e6", "name": "DCN", "decimals": 0 }, 21 | { "addr": "0xb9e7f8568e08d5659f5d29c4997173d84cdf2607", "name": "SWT", "decimals": 18 }, 22 | { "addr": "0xb802b24e0637c2b87d2e8b7784c055bbe921011a", "name": "EMV", "decimals": 2 }, 23 | { "addr": "0x6531f133e6deebe7f2dce5a0441aa7ef330b4e53", "name": "TIME", "decimals": 8 }, 24 | { "addr": "0xbeb9ef514a379b997e0798fdcc901ee474b6d9a1", "name": "MLN", "decimals": 18 }, 25 | { "addr": "0x168296bb09e24a88805cb9c33356536b980d3fc5", "name": "RHOC", "decimals": 8 }, 26 | { "addr": "0x08711d3b02c8758f2fb3ab4e80228418a7f8e39c", "name": "EDG", "decimals": 0 }, 27 | { "addr": "0xf7b098298f7c69fc14610bf71d5e02c60792894c", "name": "GUP", "decimals": 3 }, 28 | { "addr": "0x607f4c5bb672230e8672085532f7e901544a7375", "name": "RLC", "decimals": 9 }, 29 | { "addr": "0xcb94be6f13a1182e4a4b6140cb7bf2025d28e41b", "name": "TRST", "decimals": 6 }, 30 | { "addr": "0x2e071d2966aa7d8decb1005885ba1977d6038a65", "name": "DICE", "decimals": 16 }, 31 | { "addr": "0xe7775a6e9bcf904eb39da2b68c5efb4f9360e08c", "name": "TAAS", "decimals": 6 }, 32 | { "addr": "0x6810e776880c02933d47db1b9fc05908e5386b96", "name": "GNO", "decimals": 18 }, 33 | { "addr": "0x667088b212ce3d06a1b553a7221e1fd19000d9af", "name": "WINGS", "decimals": 18 }, 34 | { "addr": "0xfa05a73ffe78ef8f1a739473e462c54bae6567d9", "name": "LUN", "decimals": 18 }, 35 | { "addr": "0xaaaf91d9b90df800df4f55c205fd6989c977e73a", "name": "TKN", "decimals": 8 }, 36 | { "addr": "0xcbcc0f036ed4788f63fc0fee32873d6a7487b908", "name": "HMQ", "decimals": 8 }, 37 | { "addr": "0x960b236a07cf122663c4303350609a66a7b288c0", "name": "ANT", "decimals": 18 }, 38 | { "addr": "0xd248b0d48e44aaf9c49aea0312be7e13a6dc1468", "name": "SGT", "decimals": 1 }, 39 | { "addr": "0xff3519eeeea3e76f1f699ccce5e23ee0bdda41ac", "name": "BCAP", "decimals": 0 }, 40 | { "addr": "0x0d8775f648430679a709e98d2b0cb6250d2887ef", "name": "BAT", "decimals": 18 }, 41 | { "addr": "0xa645264c5603e96c3b0b078cdab68733794b0a71", "name": "MYST", "decimals": 8 }, 42 | { "addr": "0x82665764ea0b58157e1e5e9bab32f68c76ec0cdf", "name": "VSMOLD", "decimals": 0 }, 43 | { "addr": "0x12fef5e57bf45873cd9b62e9dbd7bfb99e32d73e", "name": "CFI", "decimals": 18 }, 44 | { "addr": "0x8f3470a7388c05ee4e7af3d01d8c722b0ff52374", "name": "VERI", "decimals": 18 }, 45 | { "addr": "0x40395044ac3c0c57051906da938b54bd6557f212", "name": "MGO", "decimals": 8 }, 46 | { "addr": "0x8ae4bf2c33a8e667de34b54938b0ccd03eb8cc06", "name": "PTOY", "decimals": 8 }, 47 | { "addr": "0x1f573d6fb3f13d689ff844b4ce37794d79a7ff1c", "name": "BNT", "decimals": 18 }, 48 | { "addr": "0x697beac28B09E122C4332D163985e8a73121b97F", "name": "QRL", "decimals": 8 }, 49 | { "addr": "0xae616e72d3d89e847f74e8ace41ca68bbf56af79", "name": "GOOD", "decimals": 6 }, 50 | { "addr": "0x744d70fdbe2ba4cf95131626614a1763df805b9e", "name": "SNT", "decimals": 18 }, 51 | { "addr": "0x983f6d60db79ea8ca4eb9968c6aff8cfa04b3c63", "name": "SONM", "decimals": 18 }, 52 | { "addr": "0x1776e1f26f98b1a5df9cd347953a26dd3cb46671", "name": "NMR", "decimals": 18 }, 53 | { "addr": "0x93e682107d1e9defb0b5ee701c71707a4b2e46bc", "name": "MCAP", "decimals": 8 }, 54 | { "addr": "0xb97048628db6b661d4c2aa833e95dbe1a905b280", "name": "PAY", "decimals": 18 }, 55 | { "addr": "0x5a84969bb663fb64f6d015dcf9f622aedc796750", "name": "ICE", "decimals": 18 }, 56 | { "addr": "0xd4fa1460f537bb9085d22c7bccb5dd450ef28e3a", "name": "PPT", "decimals": 8 }, 57 | { "addr": "0xbbb1bd2d741f05e144e6c4517676a15554fd4b8d", "name": "FUNOLD", "decimals": 8 }, 58 | { "addr": "0x419d0d8bdd9af5e606ae2232ed285aff190e711b", "name": "FUN", "decimals": 8 }, 59 | { "addr": "0xd0d6d6c5fe4a677d343cc433536bb717bae167dd", "name": "ADT", "decimals": 9 }, 60 | { "addr": "0xce5c603c78d047ef43032e96b5b785324f753a4f", "name": "E4ROW", "decimals": 2 }, 61 | { "addr": "0xb64ef51c888972c908cfacf59b47c1afbc0ab8ac", "name": "STORJ", "decimals": 8 }, 62 | { "addr": "0xcfb98637bcae43c13323eaa1731ced2b716962fd", "name": "NET", "decimals": 18 }, 63 | { "addr": "0x86fa049857e0209aa7d9e616f7eb3b3b78ecfdb0", "name": "EOS", "decimals": 18 }, 64 | { "addr": "0x4470bb87d77b963a013db939be332f927f2b992e", "name": "ADX", "decimals": 4 }, 65 | { "addr": "0x621d78f2ef2fd937bfca696cabaf9a779f59b3ed", "name": "DRP", "decimals": 2 }, 66 | { "addr": "0x8aa33a7899fcc8ea5fbe6a608a109c3893a1b8b2", "name": "BET", "decimals": 18 }, 67 | { "addr": "0x0affa06e7fbe5bc9a764c979aa66e8256a631f02", "name": "PLBT", "decimals": 6 }, 68 | { "addr": "0xd26114cd6ee289accf82350c8d8487fedb8a0c07", "name": "OMG", "decimals": 18 }, 69 | { "addr": "0xb8c77482e45f1f44de1745f52c74426c631bdd52", "name": "BNB", "decimals": 18 }, 70 | { "addr": "0x814964b1bceaf24e26296d031eadf134a2ca4105", "name": "NEWB", "decimals": 0 }, 71 | { "addr": "0xb24754be79281553dc1adc160ddf5cd9b74361a4", "name": "XRL", "decimals": 9 }, 72 | { "addr": "0x386467f1f3ddbe832448650418311a479eecfc57", "name": "MBRS", "decimals": 0 }, 73 | { "addr": "0xf433089366899d83a9f26a773d59ec7ecf30355e", "name": "MTL", "decimals": 8 }, 74 | { "addr": "0xc63e7b1dece63a77ed7e4aeef5efb3b05c81438d", "name": "FUCKOLD", "decimals": 4 }, 75 | { "addr": "0xab16e0d25c06cb376259cc18c1de4aca57605589", "name": "FUCK", "decimals": 4 }, 76 | { "addr": "0x5c6183d10a00cd747a6dbb5f658ad514383e9419", "name": "NXXOLD", "decimals": 8 }, 77 | { "addr": "0xd5b9a2737c9b2ff35ecb23b884eb039303bbbb61", "name": "BTH", "decimals": 18 }, 78 | { "addr": "0xe3818504c1b32bf1557b16c238b2e01fd3149c17", "name": "PLR", "decimals": 18 }, 79 | { "addr": "0x41e5560054824ea6b0732e656e3ad64e20e94e45", "name": "CVC", "decimals": 8 }, 80 | { "addr": "0xbfa4d71a51b9e0968be4bc299f8ba6cbb2f86789", "name": "MAYY", "decimals": 18 }, 81 | { "addr": "0xab130bc7ff83192656a4b3079741c296615899c0", "name": "MAYN", "decimals": 18 }, 82 | { "addr": "0xe2e6d4be086c6938b53b22144855eef674281639", "name": "LNK", "decimals": 18 }, 83 | { "addr": "0x2bdc0d42996017fce214b21607a515da41a9e0c5", "name": "SKIN", "decimals": 6 }, 84 | { "addr": "0x8b9c35c79af5319c70dd9a3e3850f368822ed64e", "name": "DGT", "decimals": 18 }, 85 | { "addr": "0xa578acc0cb7875781b7880903f4594d13cfa8b98", "name": "ECN", "decimals": 2 }, 86 | { "addr": "0x660b612ec57754d949ac1a09d0c2937a010dee05", "name": "BCD", "decimals": 6 }, 87 | { "addr": "0x8ef59b92f21f9e5f21f5f71510d1a7f87a5420be", "name": "DEX", "decimals": 2 }, 88 | { "addr": "0xea1f346faf023f974eb5adaf088bbcdf02d761f4", "name": "TIX", "decimals": 18 }, 89 | { "addr": "0x177d39ac676ed1c67a2b268ad7f1e58826e5b0af", "name": "CDT", "decimals": 18 }, 90 | { "addr": "0xfca47962d45adfdfd1ab2d972315db4ce7ccf094", "name": "IXT", "decimals": 8 }, 91 | { "addr": "0xa2f4fcb0fde2dd59f7a1873e121bc5623e3164eb", "name": "AIRA", "decimals": 0 }, 92 | { "addr": "0x56ba2ee7890461f463f7be02aac3099f6d5811a8", "name": "CAT", "decimals": 18 }, 93 | { "addr": "0x701c244b988a513c945973defa05de933b23fe1d", "name": "OAX", "decimals": 18 }, 94 | { "addr": "0x08fd34559f2ed8585d3810b4d96ab8a05c9f97c5", "name": "CLRT", "decimals": 18 }, 95 | { "addr": "0x68aa3f232da9bdc2343465545794ef3eea5209bd", "name": "MSP", "decimals": 18 }, 96 | { "addr": "0x2a05d22db079bc40c2f77a1d1ff703a56e631cc1", "name": "BAS", "decimals": 8 }, 97 | { "addr": "0xdc0c22285b61405aae01cba2530b6dd5cd328da7", "name": "KTN", "decimals": 6 }, 98 | { "addr": "0xdd6bf56ca2ada24c683fac50e37783e55b57af9f", "name": "BNC", "decimals": 12 }, 99 | { "addr": "0x0abdace70d3790235af448c88547603b945604ea", "name": "DNT", "decimals": 18 }, 100 | { "addr": "0x9e77d5a1251b6f7d456722a6eac6d2d5980bd891", "name": "BRAT", "decimals": 8 }, 101 | { "addr": "0x5af2be193a6abca9c8817001f45744777db30756", "name": "BQX", "decimals": 8 }, 102 | { "addr": "0x006bea43baa3f7a6f765f14f10a1a1b08334ef45", "name": "STX", "decimals": 18 }, 103 | { "addr": "0x88fcfbc22c6d3dbaa25af478c578978339bde77a", "name": "FYN", "decimals": 18 }, 104 | { "addr": "0x4e0603e2a27a30480e5e3a4fe548e29ef12f64be", "name": "CREDO", "decimals": 18 }, 105 | { "addr": "0x202e295df742befa5e94e9123149360db9d9f2dc", "name": "NIH", "decimals": 8 }, 106 | { "addr": "0x671abbe5ce652491985342e85428eb1b07bc6c64", "name": "QAU", "decimals": 8 }, 107 | { "addr": "0x3597bfd533a99c9aa083587b074434e61eb0a258", "name": "DENT", "decimals": 8 }, 108 | { "addr": "0xbc7de10afe530843e71dfb2e3872405191e8d14a", "name": "SHOUC", "decimals": 18 }, 109 | { "addr": "0x2ca72c9699b92b47272c9716c664cad6167c80b0", "name": "GUNS", "decimals": 18 }, 110 | { "addr": "0x7c5a0ce9267ed19b22f8cae653f198e3e8daf098", "name": "SAN", "decimals": 18 }, 111 | { "addr": "0xf8e386eda857484f5a12e4b5daa9984e06e73705", "name": "IND", "decimals": 18 }, 112 | { "addr": "0xfb12e3cca983b9f59d90912fd17f8d745a8b2953", "name": "LUCK", "decimals": 0 }, 113 | { "addr": "0x0b1724cc9fda0186911ef6a75949e9c0d3f0f2f3", "name": "RIYA", "decimals": 8 }, 114 | { "addr": "0xe41d2489571d322189246dafa5ebde1f4699f498", "name": "ZRX", "decimals": 18 }, 115 | { "addr": "0xb63b606ac810a52cca15e44bb630fd42d8d1d83d", "name": "MCO", "decimals": 8 }, 116 | { "addr": "0x02b9806a64cb05f02aa8dcc1c178b88159a61304", "name": "DEL", "decimals": 18 }, 117 | { "addr": "0x46492473755e8df960f8034877f61732d718ce96", "name": "STRC", "decimals": 8 }, 118 | { "addr": "0x025abad9e518516fdaafbdcdb9701b37fb7ef0fa", "name": "GTKT", "decimals": 0 }, 119 | { "addr": "0x0e0989b1f9b8a38983c2ba8053269ca62ec9b195", "name": "POE", "decimals": 8 }, 120 | { "addr": "0x38968746147bbaeb882f356ad9a57594bb158235", "name": "BENJA", "decimals": 8 }, 121 | { "addr": "0x814cafd4782d2e728170fda68257983f03321c58", "name": "IDEA", "decimals": 0 }, 122 | { "addr": "0x84119cb33e8f590d75c2d6ea4e6b0741a7494eda", "name": "WTT", "decimals": 0 }, 123 | { "addr": "0x5ddab66da218fb05dfeda07f1afc4ea0738ee234", "name": "RARE", "decimals": 8 }, 124 | { "addr": "0xd7631787b4dcc87b1254cfd1e5ce48e96823dee8", "name": "SCL", "decimals": 8 }, 125 | { "addr": "0xa7f976c360ebbed4465c2855684d1aae5271efa9", "name": "TFL", "decimals": 8 }, 126 | { "addr": "0x7654915a1b82d6d2d0afc37c52af556ea8983c7e", "name": "IFT", "decimals": 18 }, 127 | { "addr": "0x94298f1e0ab2dfad6eeffb1426846a3c29d98090", "name": "MyB", "decimals": 8 }, 128 | { "addr": "0x4355fc160f74328f9b383df2ec589bb3dfd82ba0", "name": "OPT", "decimals": 18 }, 129 | { "addr": "0x17fd666fa0784885fa1afec8ac624d9b7e72b752", "name": "FLIK", "decimals": 14 }, 130 | { "addr": "0xdab5dfa0966c3435da991b39d205c3ba1c64fe31", "name": "MTP", "decimals": 1 }, 131 | { "addr": "0x422866a8f0b032c5cf1dfbdef31a20f4509562b0", "name": "ADST", "decimals": 0 }, 132 | { "addr": "0x66497a283e0a007ba3974e837784c6ae323447de", "name": "PT", "decimals": 18 }, 133 | { "addr": "0x07d9e49ea402194bf48a8276dafb16e4ed633317", "name": "DALC", "decimals": 8 }, 134 | { "addr": "0xcc4ef9eeaf656ac1a2ab886743e98e97e090ed38", "name": "DDF", "decimals": 18 }, 135 | { "addr": "0xef68e7c694f40c8202821edf525de3782458639f", "name": "LRC", "decimals": 18 }, 136 | { "addr": "0x3d1ba9be9f66b8ee101911bc36d3fb562eac2244", "name": "RVT", "decimals": 18 }, 137 | { "addr": "0x8a187d5285d316bcbc9adafc08b51d70a0d8e000", "name": "SIFT", "decimals": 0 }, 138 | { "addr": "0x8effd494eb698cc399af6231fccd39e08fd20b15", "name": "PIX", "decimals": 0 }, 139 | { "addr": "0xaa26b73bfdc80b5c7d2cfbfc30930038fb7fa657", "name": "TOV", "decimals": 0 }, 140 | { "addr": "0x08f5a9235b08173b7569f83645d2c7fb55e8ccd8", "name": "TNT", "decimals": 8 }, 141 | { "addr": "0x96a65609a7b84e8842732deb08f56c3e21ac6f8a", "name": "CTR", "decimals": 18 }, 142 | { "addr": "0xe6923e9b56db1eed1c9f430ea761da7565e260fe", "name": "FC", "decimals": 2 }, 143 | { "addr": "0xd850942ef8811f2a866692a623011bde52a462c1", "name": "VEN", "decimals": 18 }, 144 | { "addr": "0x2160e6c0ae8ca7d62fe1f57fc049f8363283ff5f", "name": "BPT", "decimals": 18 }, 145 | { "addr": "0xf05a9382a4c3f29e2784502754293d88b835109c", "name": "REX", "decimals": 18 }, 146 | { "addr": "0x73dd069c299a5d691e9836243bcaec9c8c1d8734", "name": "BTE", "decimals": 8 }, 147 | { "addr": "0x1bcbc54166f6ba149934870b60506199b6c9db6d", "name": "ROC", "decimals": 10 }, 148 | { "addr": "0x0f5d2fb29fb7d3cfee444a200298f468908cc942", "name": "MANA", "decimals": 18 }, 149 | { "addr": "0x27695e09149adc738a978e9a678f99e4c39e9eb9", "name": "KICK", "decimals": 8 }, 150 | { "addr": "0x4e260e3ca268e40133c84b142de73108a7c1ec99", "name": "YC", "decimals": 0 }, 151 | { "addr": "0xaf4dce16da2877f8c9e00544c93b62ac40631f16", "name": "MTH", "decimals": 5 }, 152 | { "addr": "0x9214ec02cb71cba0ada6896b8da260736a67ab10", "name": "REAL", "decimals": 18 }, 153 | { "addr": "0xe5a7c12972f3bbfe70ed29521c8949b8af6a0970", "name": "BLX", "decimals": 18 }, 154 | { "addr": "0x5cf4e9dfd975c52aa523fb5945a12235624923dc", "name": "MPRM", "decimals": 0 }, 155 | { "addr": "0x887834d3b8d450b6bab109c252df3da286d73ce4", "name": "ATT", "decimals": 18 }, 156 | { "addr": "0xf4134146af2d511dd5ea8cdb1c4ac88c57d60404", "name": "SNC", "decimals": 18 }, 157 | { "addr": "0x138a8752093f4f9a79aaedf48d4b9248fab93c9c", "name": "MCI", "decimals": 18 }, 158 | { "addr": "0xb7cb1c96db6b22b0d3d9536e0108d062bd488f74", "name": "WTC", "decimals": 18 }, 159 | { "addr": "0x5ca9a71b1d01849c0a95490cc00559717fcf0d1d", "name": "AE", "decimals": 18 }, 160 | { "addr": "0x336f646f87d9f6bc6ed42dd46e8b3fd9dbd15c22", "name": "CCT", "decimals": 18 }, 161 | { "addr": "0xf70a642bd387f94380ffb90451c2c81d4eb82cbc", "name": "STAR", "decimals": 18 }, 162 | { "addr": "0xc8c6a31a4a806d3710a7b38b7b296d2fabccdba8", "name": "ELIX", "decimals": 18 }, 163 | { "addr": "0x9cb9eb4bb7800bdbb017be2a4ffbeccb67454ea9", "name": "BOPTOLD", "decimals": 8 }, 164 | { "addr": "0x0d88ed6e74bbfd96b831231638b66c05571e824f", "name": "AVT", "decimals": 18 }, 165 | { "addr": "0x190e569be071f40c704e15825f285481cb74b6cc", "name": "FAM", "decimals": 12 }, 166 | { "addr": "0x190fb342aa6a15eb82903323ae78066ff8616746", "name": "UMC", "decimals": 6 }, 167 | { "addr": "0x59adcf176ed2f6788a41b8ea4c4904518e62b6a4", "name": "SAI", "decimals": 18 }, 168 | { "addr": "0x1b9743f556d65e757c4c650b4555baf354cb8bd3", "name": "ETBS", "decimals": 12 }, 169 | { "addr": "0xd3c00772b24d997a812249ca637a921e81357701", "name": "WILD", "decimals": 18 }, 170 | { "addr": "0x516e5436bafdc11083654de7bb9b95382d08d5de", "name": "ORME", "decimals": 8 }, 171 | { "addr": "0xf99f901124cbbe180984a247ba94cfba0c764b2e", "name": "SQRL", "decimals": 6 }, 172 | { "addr": "0xb29678a4805a7d787dc9589e179d27f7575bb9f7", "name": "AUA", "decimals": 5 }, 173 | { "addr": "0x5afda18caba69fe3af5e6d56e42e1c9f92c40d77", "name": "MCD", "decimals": 18 }, 174 | { "addr": "0xf0f8b0b8dbb1124261fc8d778e2287e3fd2cf4f5", "name": "BQ", "decimals": 3 }, 175 | { "addr": "0xa54ddc7b3cce7fc8b1e3fa0256d0db80d2c10970", "name": "NDC", "decimals": 18 }, 176 | { "addr": "0xc596bd09d652827b0106292d3e378d5938df4b12", "name": "TPT", "decimals": 18 }, 177 | { "addr": "0x07e3c70653548b04f0a75970c1f81b4cbbfb606f", "name": "DLT", "decimals": 18 }, 178 | { "addr": "0x7f1e2c7d6a69bf34824d72c53b4550e895c0d8c2", "name": "BOP", "decimals": 8 }, 179 | { "addr": "0x51db5ad35c671a87207d88fc11d593ac0c8415bd", "name": "MDA", "decimals": 18 }, 180 | { "addr": "0xe3fedaecd47aa8eab6b23227b0ee56f092c967a9", "name": "PST", "decimals": 18 }, 181 | { "addr": "0xa6e7172662379f1f4c72108655869abdbb7f7672", "name": "JADE", "decimals": 5 }, 182 | { "addr": "0xfec0cf7fe078a500abf15f1284958f22049c2c7e", "name": "ART", "decimals": 18 }, 183 | { "addr": "0x089a6d83282fb8988a656189f1e7a73fa6c1cac2", "name": "PGL", "decimals": 18 }, 184 | { "addr": "0xc997d07b0bc607b6d1bcb6fb9d4a5579c466c3e5", "name": "FLIP", "decimals": 0 }, 185 | { "addr": "0x818fc6c2ec5986bc6e2cbf00939d90556ab12ce5", "name": "KIN", "decimals": 18 }, 186 | { "addr": "0x163733bcc28dbf26b41a8cfa83e369b5b3af741b", "name": "PRS", "decimals": 18 }, 187 | { "addr": "0xab6cf87a50f17d7f5e1feaf81b6fe9ffbe8ebf84", "name": "MRV", "decimals": 18 }, 188 | { "addr": "0x4d11061ec8f401edc2395b5f439a05eee6ccfa50", "name": "BOTA", "decimals": 18 }, 189 | { "addr": "0xac3da587eac229c9896d919abc235ca4fd7f72c1", "name": "TGT", "decimals": 1 }, 190 | { "addr": "0x437cf0bf53634e3dfa5e3eaff3104004d50fb532", "name": "BTN", "decimals": 4 }, 191 | { "addr": "0xf230b790e05390fc8295f4d3f60332c93bed42e2", "name": "TRX", "decimals": 6 }, 192 | { "addr": "0x8727c112c712c4a03371ac87a74dd6ab104af768", "name": "JET", "decimals": 18 }, 193 | { "addr": "0x78b7fada55a64dd895d8c8c35779dd8b67fa8a05", "name": "ATL", "decimals": 18 }, 194 | { "addr": "0xb2f7eb1f2c37645be61d73953035360e768d81e6", "name": "COB", "decimals": 18 }, 195 | { "addr": "0x226bb599a12c826476e3a771454697ea52e9e220", "name": "PRO", "decimals": 8 }, 196 | { "addr": "0x51ee82641ac238bde34b9859f98f5f311d6e4954", "name": "IQT", "decimals": 8 }, 197 | { "addr": "0x0371a82e4a9d0a4312f3ee2ac9c6958512891372", "name": "STU", "decimals": 18 }, 198 | { "addr": "0x2f4baef93489b09b5e4b923795361a65a26f55e5", "name": "XHY", "decimals": 8 }, 199 | { "addr": "0xe256bb0b2a3457e54db3a41cf5a8b826aca222a8", "name": "ARX", "decimals": 18 }, 200 | { "addr": "0xe1479d294807379320dca9a9e9002ac644539099", "name": "KING", "decimals": 18 }, 201 | { "addr": "0xb72627650f1149ea5e54834b2f468e5d430e67bf", "name": "BITS", "decimals": 8 }, 202 | { "addr": "0x7d5edcd23daa3fb94317d32ae253ee1af08ba14d", "name": "EBET", "decimals": 2 }, 203 | { "addr": "0x94d6b4fb35fb08cb34aa716ab40049ec88002079", "name": "CNX", "decimals": 8 }, 204 | { "addr": "0xdd6c68bb32462e01705011a4e2ad1a60740f217f", "name": "HBT", "decimals": 15 }, 205 | { "addr": "0xdd974d5c2e2928dea5f71b9825b8b646686bd200", "name": "KNC", "decimals": 18 }, 206 | { "addr": "0x7268f9c2bc9c9e65b4a16888cb5672531ce8e945", "name": "YESTERDAY", "decimals": 18 }, 207 | { "addr": "0xee609fe292128cad03b786dbb9bc2634ccdbe7fc", "name": "POS", "decimals": 18 }, 208 | { "addr": "0xb45a50545beeab73f38f31e5973768c421805e5e", "name": "TKR", "decimals": 18 }, 209 | { "addr": "0x68db10ecc599d9f5e657acdafdbf6449d658bb2d", "name": "GGS", "decimals": 18 }, 210 | { "addr": "0x4a42d2c580f83dce404acad18dab26db11a1750e", "name": "RLX", "decimals": 18 }, 211 | { "addr": "0xf9c9da0c81fffd491458881410903561d1e40fd0", "name": "ARENA", "decimals": 18 }, 212 | { "addr": "0x2daee1aa61d60a252dc80564499a69802853583a", "name": "ATS", "decimals": 4 }, 213 | { "addr": "0x46eec301d2d00087145d1588282c182bd1890e5c", "name": "RSPR", "decimals": 16 }, 214 | { "addr": "0x5e4abe6419650ca839ce5bb7db422b881a6064bb", "name": "WIC", "decimals": 18 }, 215 | { "addr": "0x83eea00d838f92dec4d1475697b9f4d3537b56e3", "name": "VOISE", "decimals": 8 }, 216 | { "addr": "0xba2184520a1cc49a6159c57e61e1844e085615b6", "name": "HGT", "decimals": 8 }, 217 | { "addr": "0x12480e24eb5bec1a9d4369cab6a80cad3c0a377a", "name": "SUB", "decimals": 2 }, 218 | { "addr": "0x30aee7f259d6d1564ebef457847c672b30f13cbc", "name": "DOM", "decimals": 0 }, 219 | { "addr": "0xa8006c4ca56f24d6836727d106349320db7fef82", "name": "INXT", "decimals": 8 }, 220 | { "addr": "0xe814aee960a85208c3db542c53e7d4a6c8d5f60f", "name": "DAY", "decimals": 18 }, 221 | { "addr": "0x2469f31a34fcaac0debf73806ce39b2388874b13", "name": "PPT2", "decimals": 18 }, 222 | { "addr": "0x268b7976e94e84a48bf8b2b57ba34b59ed836a74", "name": "XAI", "decimals": 8 }, 223 | { "addr": "0x77faed976e187f26b49e78be8418ab074a341f26", "name": "IWT", "decimals": 18 }, 224 | { "addr": "0xdf6ef343350780bf8c3410bf062e0c015b1dd671", "name": "BMC", "decimals": 8 }, 225 | { "addr": "0x43ee79e379e7b78d871100ed696e803e7893b644", "name": "UGT", "decimals": 18 }, 226 | { "addr": "0x514910771af9ca656af840dff83e8264ecf986ca", "name": "LINK", "decimals": 18 }, 227 | { "addr": "0x9b11efcaaa1890f6ee52c6bb7cf8153ac5d74139", "name": "ATM", "decimals": 8 }, 228 | { "addr": "0xdcb9ff81013c31ff686154b4502ef6bfaa102d2d", "name": "GOOC", "decimals": 8 }, 229 | { "addr": "0x13ea82d5e1a811f55bda9c86fdd6195a6bd23aed", "name": "TFT", "decimals": 8 }, 230 | { "addr": "0xbfd4a3c26996dfc9e85a951eb615aac3b84c758b", "name": "ALPC", "decimals": 0 }, 231 | { "addr": "0xe8ff5c9c75deb346acac493c463c8950be03dfba", "name": "VIBE", "decimals": 18 }, 232 | { "addr": "0xb4efd85c19999d84251304bda99e90b92300bd93", "name": "RPL", "decimals": 18 }, 233 | { "addr": "0xeeac3f8da16bb0485a4a11c5128b0518dac81448", "name": "TEU", "decimals": 18 }, 234 | { "addr": "0x73b534fb6f07381a29a60b01eed5ae57d4ee24d7", "name": "SDRN", "decimals": 18 }, 235 | { "addr": "0x1eab19e6623e8cbcafc252e275f5b51c27656faf", "name": "SPNK", "decimals": 8 }, 236 | { "addr": "0x6467882316dc6e206feef05fba6deaa69277f155", "name": "FAP", "decimals": 18 }, 237 | { "addr": "0x540449e4d172cd9491c76320440cd74933d5691a", "name": "DBETOLD", "decimals": 18 }, 238 | { "addr": "0xf333b2ace992ac2bbd8798bf57bc65a06184afba", "name": "SND", "decimals": 0 }, 239 | { "addr": "0xab95e915c123fded5bdfb6325e35ef5515f1ea69", "name": "XNN", "decimals": 18 }, 240 | { "addr": "0x23cb17d7d079518dbff4febb6efcc0de58d8c984", "name": "TRV", "decimals": 16 }, 241 | { "addr": "0x65292eeadf1426cd2df1c4793a3d7519f253913b", "name": "COSS", "decimals": 18 }, 242 | { "addr": "0x27dce1ec4d3f72c3e457cc50354f1f975ddef488", "name": "AIR", "decimals": 8 }, 243 | { "addr": "0x10b123fddde003243199aad03522065dc05827a0", "name": "SYN", "decimals": 18 }, 244 | { "addr": "0xcb97e65f07da24d46bcdd078ebebd7c6e6e3d750", "name": "BTM", "decimals": 8 }, 245 | { "addr": "0x6d5cac36c1ae39f41d52393b7a425d0a610ad9f2", "name": "LLT", "decimals": 8 }, 246 | { "addr": "0x4156d3342d5c385a87d264f90653733592000581", "name": "SALT", "decimals": 8 }, 247 | { "addr": "0xce61f5e6d1fe5a86e246f68aff956f7757282ef0", "name": "1LIFE", "decimals": 18 }, 248 | { "addr": "0x52514e3acaeb06cab050a69b025083082ebe5b54", "name": "CTCOLD", "decimals": 4 }, 249 | { "addr": "0xf1d9139c6512452db91f25635457b844d7e22b8b", "name": "CTC", "decimals": 4 }, 250 | { "addr": "0xef2e9966eb61bb494e5375d5df8d67b7db8a780d", "name": "SHIT", "decimals": 0 }, 251 | { "addr": "0x29d75277ac7f0335b2165d0895e8725cbf658d73", "name": "CSNO", "decimals": 8 }, 252 | { "addr": "0x0aef06dcccc531e581f0440059e6ffcc206039ee", "name": "ITT", "decimals": 8 }, 253 | { "addr": "0xb561fef0d624c0826ff869946f6076b7c4f2ba42", "name": "SER", "decimals": 7 }, 254 | { "addr": "0xc0eb85285d83217cd7c891702bcbc0fc401e2d9d", "name": "HVN", "decimals": 8 }, 255 | { "addr": "0x779b7b713c86e3e6774f5040d9ccc2d43ad375f8", "name": "POOL", "decimals": 8 }, 256 | { "addr": "0x28a40acf39b1d3c932f42dd8068ad00a5ad6448f", "name": "LDM", "decimals": 18 }, 257 | { "addr": "0xc3951d77737733174152532e8b0f27e2c4e9f0dc", "name": "CLD", "decimals": 6 }, 258 | { "addr": "0x6678e467fa5ccfbdc264d12f4b8b28fe4661606b", "name": "DCNT", "decimals": 1 }, 259 | { "addr": "0x82d193f8ee41d12aaa0a85cb006606d67f773e9c", "name": "SMT", "decimals": 1 }, 260 | { "addr": "0x4b35e0ab998ebe8414871c13cf778f9d0bbdf609", "name": "SWP", "decimals": 18 }, 261 | { "addr": "0x8a7b7b9b2f7d0c63f66171721339705a6188a7d5", "name": "EDOGE", "decimals": 18 }, 262 | { "addr": "0xeb2da9fac54284cea731d1f10bb34eecb3c00c14", "name": "POW", "decimals": 18 }, 263 | { "addr": "0xf028adee51533b1b47beaa890feb54a457f51e89", "name": "BMT", "decimals": 18 }, 264 | { "addr": "0xeb9c0138d8ac10dd659640a4cc3d135c58b17b1b", "name": "DTC", "decimals": 2 }, 265 | { "addr": "0x4c5601164e2048a4154de91fa5e0b07e626cab7f", "name": "FNL", "decimals": 3 }, 266 | { "addr": "0x0b76544f6c413a555f309bf76260d1e02377c02a", "name": "INT", "decimals": 6 }, 267 | { "addr": "0x0abefb7611cb3a01ea3fad85f33c3c934f8e2cf4", "name": "FRD", "decimals": 18 }, 268 | { "addr": "0xea610b1153477720748dc13ed378003941d84fab", "name": "ALIS", "decimals": 18 }, 269 | { "addr": "0xf3db5fa2c66b7af3eb0c0b782510816cbe4813b8", "name": "EVX", "decimals": 4 }, 270 | { "addr": "0x0766e79a6fd74469733e8330b3b461c0320ff059", "name": "EXN", "decimals": 18 }, 271 | { "addr": "0x8d5a69dc82a47594881256f2eef81770274fa30f", "name": "NTC", "decimals": 18 }, 272 | { "addr": "0xe755f2fa95e47c5588c3037dd38e1268fa5fcecd", "name": "HOWL", "decimals": 18 }, 273 | { "addr": "0x1bb9e8ea817d56eccc212ce63f7da95298f98719", "name": "SHT", "decimals": 2 }, 274 | { "addr": "0x865d176351f287fe1b0010805b110d08699c200a", "name": "BCO", "decimals": 8 }, 275 | { "addr": "0x881ef48211982d01e2cb7092c915e647cd40d85c", "name": "OTN", "decimals": 18 }, 276 | { "addr": "0x48f775efbe4f5ece6e0df2f7b5932df56823b990", "name": "R", "decimals": 0 }, 277 | { "addr": "0xa51153d9cf9d3cf6d58697b68eccc158d1e40388", "name": "PME", "decimals": 18 }, 278 | { "addr": "0xb23be73573bc7e03db6e5dfc62405368716d28a8", "name": "ONEK", "decimals": 18 }, 279 | { "addr": "0x6781a0f84c7e9e846dcb84a9a5bd49333067b104", "name": "ZAP", "decimals": 18 }, 280 | { "addr": "0xf629cbd94d3791c9250152bd8dfbdf380e2a3b9c", "name": "ENJ", "decimals": 18 }, 281 | { "addr": "0xd65960facb8e4a2dfcb2c2212cb2e44a02e2a57e", "name": "SOAR", "decimals": 6 }, 282 | { "addr": "0xafe60511341a37488de25bef351952562e31fcc1", "name": "TBT", "decimals": 8 }, 283 | { "addr": "0x1db186898bccde66fa64a50e4d81078951a30dbe", "name": "LLA", "decimals": 18 }, 284 | { "addr": "0xb0d926c1bc3d78064f3e1075d5bd9a24f35ae6c5", "name": "ARXAI", "decimals": 18 }, 285 | { "addr": "0x24aef3bf1a47561500f9430d74ed4097c47f51f2", "name": "SPARTA", "decimals": 4 }, 286 | { "addr": "0xd884f9881e0aeabad79be8a69122cf998d067fff", "name": "RUB", "decimals": 18 }, 287 | { "addr": "0x5ca71ea65acb6293e71e62c41b720698b0aa611c", "name": "BBD", "decimals": 18 }, 288 | { "addr": "0x2c974b2d0ba1716e644c1fc59982a89ddd2ff724", "name": "VIB", "decimals": 18 }, 289 | { "addr": "0x473319898464ca640af692a0534175981ab78aa1", "name": "POKT", "decimals": 4 }, 290 | { "addr": "0x3a26746ddb79b1b8e4450e3f4ffe3285a307387e", "name": "ETHB", "decimals": 8 }, 291 | { "addr": "0x6fff3806bbac52a20e0d79bc538d527f6a22c96b", "name": "CDX", "decimals": 18 }, 292 | { "addr": "0xb62d18dea74045e822352ce4b3ee77319dc5ff2f", "name": "EVC", "decimals": 18 }, 293 | { "addr": "0x7d49eaac4c70abc1a659122f08c0806ae44703ef", "name": "DET", "decimals": 18 }, 294 | { "addr": "0x614ea929892ea43d3ea2c5e3311b01cc589bad6c", "name": "ENO", "decimals": 18 }, 295 | { "addr": "0x64c86899bc02dd9af823b131e5acd4369f72bd39", "name": "RENT", "decimals": 18 }, 296 | { "addr": "0xf94e44d8ea46ccd8451d7e15264c6c4a78d3e10f", "name": "KSS", "decimals": 18 }, 297 | { "addr": "0x32c785e4e8477b277fea2ca2301727084d79d933", "name": "NUGD", "decimals": 0 }, 298 | { "addr": "0x84c2c31c04339c9938adfe3f8013315c8906f071", "name": "EBCSH", "decimals": 18 }, 299 | { "addr": "0x44f12955189e3f01be5daf1dd9002ee4d774f42b", "name": "AFST", "decimals": 18 }, 300 | { "addr": "0x6f1a769952c60b2d03f46419adeda91d87866dab", "name": "ELTC", "decimals": 18 }, 301 | { "addr": "0x415116bad878730f5db008ff381a73222128ad39", "name": "EBCHB", "decimals": 18 }, 302 | { "addr": "0x2f1b8c9d0a21b747d8ca370f93cb09d3daf222ef", "name": "EXRP", "decimals": 18 }, 303 | { "addr": "0x01a28adc0edd796b570ec4da734e1aa809f6f1fc", "name": "EDASH", "decimals": 18 }, 304 | { "addr": "0x0c6c9beeeb5de377210930f09a7ac9a99ff5e981", "name": "EZEC", "decimals": 18 }, 305 | { "addr": "0xb915ff79170d606935bceaf000d77ca4ed92d993", "name": "ENEO", "decimals": 18 }, 306 | { "addr": "0x7e9d62e1ff4e34096f91ee0153222ab81f7184f0", "name": "ELTC2", "decimals": 8 }, 307 | { "addr": "0x1f103fd7c4fa908c25387da70ed287b632bd22a2", "name": "ELTC3", "decimals": 18 }, 308 | { "addr": "0xb518d165398d9057ea8b73096edda5c7754bcd62", "name": "EXRP2", "decimals": 18 }, 309 | { "addr": "0xf923ba61b43161a83afe2cab7d77ea1e41f27918", "name": "PAL", "decimals": 18 }, 310 | { "addr": "0xe26517a9967299453d3f1b48aa005e6127e67210", "name": "NIMFA", "decimals": 18 }, 311 | { "addr": "0x09debe702678140c1be278213109719fab98d0d8", "name": "MOL", "decimals": 18 }, 312 | { "addr": "0xb17df9a3b09583a9bdcf757d6367171476d4d8a3", "name": "MVC", "decimals": 18 }, 313 | { "addr": "0x90528aeb3a2b736b780fd1b6c478bb7e1d643170", "name": "XPA", "decimals": 18 }, 314 | { "addr": "0x0a76aad21948ea1ef447d26dee91a54370e151e0", "name": "ELITE", "decimals": 18 }, 315 | { "addr": "0xa51d948ff15fbabac476af160cba6901ce47f4b0", "name": "LNT", "decimals": 18 }, 316 | { "addr": "0x014b50466590340d41307cc54dcee990c8d58aa8", "name": "ICOS", "decimals": 6 }, 317 | { "addr": "0xedf2d3e5fb70ead2e6d8fe96845a5e59d52d2044", "name": "NCH", "decimals": 12 }, 318 | { "addr": "0xfb41f7b63c8e84f4ba1ecd4d393fd9daa5d14d61", "name": "PLY", "decimals": 18 }, 319 | { "addr": "0xc42209accc14029c1012fb5680d95fbd6036e2a0", "name": "PPP", "decimals": 18 }, 320 | { "addr": "0xae4191a7eb25713ac90483ea75828ae8038f94dc", "name": "EZEC2", "decimals": 18 }, 321 | { "addr": "0xb2bfeb70b903f1baac7f2ba2c62934c7e5b974c4", "name": "BKB", "decimals": 8 }, 322 | { "addr": "0xe66cc41dd03a170623dc087a69ad8d72e64cb838", "name": "BTH2", "decimals": 18 }, 323 | { "addr": "0xafc39788c51f0c1ff7b55317f3e70299e521fff6", "name": "EBCH", "decimals": 8 }, 324 | { "addr": "0x27054b13b1b798b345b591a4d22e6562d47ea75a", "name": "AST", "decimals": 4 }, 325 | { "addr": "0x5d21ef5f25a985380b65c8e943a0082feda0db84", "name": "ECASH", "decimals": 18 }, 326 | { "addr": "0xf152fca41bd23ff250292af391236db35e0e99c3", "name": "EETH", "decimals": 8 }, 327 | { "addr": "0x37f014c64d186eaf879c0033846b51924ce42584", "name": "MDT", "decimals": 0 }, 328 | { "addr": "0xfd784da5c740c617aafb80399fa81b86e1da99a5", "name": "ITS", "decimals": 8 }, 329 | { "addr": "0xf0ee6b27b759c9893ce4f094b49ad28fd15a23e4", "name": "ENG", "decimals": 8 }, 330 | { "addr": "0x13f1b7fdfbe1fc66676d56483e21b1ecb40b58e2", "name": "ACC", "decimals": 18 }, 331 | { "addr": "0x6025f65f6b2f93d8ed1efedc752acfd4bdbcec3e", "name": "EGOLD", "decimals": 18 }, 332 | { "addr": "0x3a1bda28adb5b0a812a7cf10a1950c920f79bcd3", "name": "FLP", "decimals": 18 }, 333 | { "addr": "0x90c88ccd74e57e016acae8ad1eaa12ecf4c06f33", "name": "IBTC", "decimals": 18 }, 334 | { "addr": "0xc51c938c4d513780c66c722a41c197d3a89fa9a8", "name": "EBTG", "decimals": 8 }, 335 | { "addr": "0x8f8221afbb33998d8584a2b05749ba73c37a938a", "name": "REQ", "decimals": 18 }, 336 | { "addr": "0x72adadb447784dd7ab1f472467750fc485e4cb2d", "name": "WRC", "decimals": 6 }, 337 | { "addr": "0x9b6443b0fb9c241a7fdac375595cea13e6b7807a", "name": "RCC", "decimals": 18 }, 338 | { "addr": "0xdee667186e7b81ecf7efc8713382d8d99a8b92b4", "name": "EBCG", "decimals": 18 }, 339 | { "addr": "0xa9aad2dc3a8315caeee5f458b1d8edc31d8467bd", "name": "BTCM", "decimals": 18 }, 340 | { "addr": "0x4ceda7906a5ed2179785cd3a40a69ee8bc99c466", "name": "AION", "decimals": 8 }, 341 | { "addr": "0x179a2e413386db620d5b89a18550a3874385f726", "name": "FIT", "decimals": 5 }, 342 | { "addr": "0xdf1ce35938f9ca2eab682284f82a81a9d25665ce", "name": "STM", "decimals": 18 }, 343 | { "addr": "0x87611ca3403a3878dfef0da2a786e209abfc1eff", "name": "EUSD", "decimals": 8 }, 344 | { "addr": "0x28c8d01ff633ea9cd8fc6a451d7457889e698de6", "name": "ETG", "decimals": 0 }, 345 | { "addr": "0x9541fd8b9b5fa97381783783cebf2f5fa793c262", "name": "KZN", "decimals": 8 }, 346 | { "addr": "0xa8f93faee440644f89059a2c88bdc9bf3be5e2ea", "name": "CASH", "decimals": 18 }, 347 | { "addr": "0xea38eaa3c86c8f9b751533ba2e562deb9acded40", "name": "FUEL", "decimals": 18 }, 348 | { "addr": "0xced4e93198734ddaff8492d525bd258d49eb388e", "name": "EDO", "decimals": 18 }, 349 | { "addr": "0xd96b9fd7586d9ea24c950d24399be4fb65372fdd", "name": "BTCS", "decimals": 18 }, 350 | { "addr": "0xe701cd3329057aea9d54300ddd05e41b8d74727a", "name": "10MT", "decimals": 10 }, 351 | { "addr": "0x15f173b7aca7cd4a01d6f8360e65fb4491d270c1", "name": "EREAL", "decimals": 18 }, 352 | { "addr": "0x331a550a2c7f96384eb69127aa0ea9ad4b5da099", "name": "ATMT", "decimals": 18 }, 353 | { "addr": "0xae258d5322b59d64df9eb483e3b1733332c3b66c", "name": "ETHG", "decimals": 8 }, 354 | { "addr": "0xa89b5934863447f6e4fc53b315a93e873bda69a3", "name": "LUM", "decimals": 18 }, 355 | { "addr": "0xe463d10ec6b4ff6a3e5be41144956116ca30d4c3", "name": "7YPE", "decimals": 0 }, 356 | { "addr": "0x7d4b8cce0591c9044a22ee543533b72e976e36c3", "name": "CAG", "decimals": 18 }, 357 | { "addr": "0x4cd988afbad37289baaf53c13e98e2bd46aaea8c", "name": "KEY", "decimals": 18 }, 358 | { "addr": "0xb91318f35bdb262e9423bc7c7c2a3a93dd93c92c", "name": "NULS", "decimals": 18 }, 359 | { "addr": "0xf8fa1a588cd8cd51c3c4d6dc16d2717f6332e821", "name": "BXC", "decimals": 2 }, 360 | { "addr": "0x1c4481750daa5ff521a2a7490d9981ed46465dbd", "name": "BCPT", "decimals": 18 }, 361 | { "addr": "0x58ca3065c0f24c7c96aee8d6056b5b5decf9c2f8", "name": "GXC", "decimals": 10 }, 362 | { "addr": "0x9397554c07f687b7a20d13c73350cc283765d509", "name": "SHLD", "decimals": 18 }, 363 | { "addr": "0x539efe69bcdd21a83efd9122571a64cc25e0282b", "name": "BLUE", "decimals": 8 }, 364 | { "addr": "0x9af4f26941677c706cfecf6d3379ff01bb85d5ab", "name": "DRT", "decimals": 8 }, 365 | { "addr": "0xde39e5e5a1b0eeb3afe717d6d011cae88d19451e", "name": "FUDD", "decimals": 8 }, 366 | { "addr": "0xfcb48fdcc479b38068c06ee94249b1516adf09cb", "name": "EURB", "decimals": 5 }, 367 | { "addr": "0x7a79abd3905ef37b8d243c4c28cee73a751eb076", "name": "CM", "decimals": 18 }, 368 | { "addr": "0xebc86d834756621444a8a26b4cf81b625fe310cd", "name": "ETHP", "decimals": 18 }, 369 | { "addr": "0xce59d29b09aae565feeef8e52f47c3cd5368c663", "name": "BULX", "decimals": 18 }, 370 | { "addr": "0x26607f9bf9d62a37b0c78e1d3719fcd1fa32bef9", "name": "GFL", "decimals": 18 }, 371 | { "addr": "0x9dfe4643c04078a46803edcc30a3291b76d4c20c", "name": "GEN", "decimals": 18 }, 372 | { "addr": "0xdded69d8e28d38d640f6244ab5294f309fd40ce1", "name": "LMT", "decimals": 8 }, 373 | { "addr": "0x705ee96c1c160842c92c1aecfcffccc9c412e3d9", "name": "POLL", "decimals": 18 }, 374 | { "addr": "0xc78593c17482ea5de44fdd84896ffd903972878e", "name": "BB", "decimals": 9 }, 375 | { "addr": "0xc3972ac283b3a7a56125674631a5c254f7f373cf", "name": "HAT", "decimals": 12 }, 376 | { "addr": "0xf2e51e32d1f546423364a040ef1a6d2f05e31482", "name": "HUBC", "decimals": 6 }, 377 | { "addr": "0xffe8196bc259e8dedc544d935786aa4709ec3e64", "name": "HDG", "decimals": 18 }, 378 | { "addr": "0x7728dfef5abd468669eb7f9b48a7f70a501ed29d", "name": "PRG", "decimals": 6 }, 379 | { "addr": "0x1183f92a5624d68e85ffb9170f16bf0443b4c242", "name": "QVT", "decimals": 18 }, 380 | { "addr": "0x859a9c0b44cb7066d956a958b0b82e54c9e44b4b", "name": "IETH", "decimals": 8 }, 381 | { "addr": "0x76e82406a5040b605c6d30caf4802e7eb3184bbc", "name": "EBCC", "decimals": 6 }, 382 | { "addr": "0x1040613788e99c1606bd133db0ed7f7dbdf0cc80", "name": "STH", "decimals": 0 }, 383 | { "addr": "0x63b992e6246d88f07fc35a056d2c365e6d441a3d", "name": "SCT", "decimals": 18 }, 384 | { "addr": "0xdbfb423e9bbf16294388e07696a5120e4ceba0c5", "name": "ETHD", "decimals": 18 }, 385 | { "addr": "0x91126cfa7db2983527b0b749cc8a61fdeffedc28", "name": "DONE", "decimals": 16 }, 386 | { "addr": "0xbc63acdfafa94bd4d8c2bb7a8552281f107242c0", "name": "MXX", "decimals": 18 }, 387 | { "addr": "0x56e7f2cd7d5382506aab084a67d70e603cdb23f7", "name": "CODE", "decimals": 8 }, 388 | { "addr": "0x6d7a4c14c997333e304d5aef2aece73fd60ecc59", "name": "WNDOLD", "decimals": 18 }, 389 | { "addr": "0x6aac8cb9861e42bf8259f5abdc6ae3ae89909e11", "name": "BTCRED", "decimals": 8 }, 390 | { "addr": "0x0879e0c9822b75f31f0b0ed2a30be9f484a57c2f", "name": "LTG", "decimals": 0 }, 391 | { "addr": "0x044dd17bbbcbf1cf65f543918561bf8cf8130e7b", "name": "EGR", "decimals": 3 }, 392 | { "addr": "0x957c30ab0426e0c93cd8241e2c60392d08c6ac8e", "name": "MOD", "decimals": 0 }, 393 | { "addr": "0x52a17ca01b9925752aefde41bf80d7b10514e136", "name": "PUMP", "decimals": 15 }, 394 | { "addr": "0xe81d72d14b1516e68ac3190a46c93302cc8ed60f", "name": "CL", "decimals": 18 }, 395 | { "addr": "0x8c01ada8e708993a891d57d1b3169479a20acb3a", "name": "VIT", "decimals": 18 }, 396 | { "addr": "0x2405cc17ba128bfa7117815e04a4da228013f5bc", "name": "BNN", "decimals": 8 }, 397 | { "addr": "0x983877018633c0940b183cd38d1b58bee34f7301", "name": "DEEP", "decimals": 8 }, 398 | { "addr": "0xcedbf324a1eb1affe53ab7b7ef0103e070e3853f", "name": "ETL", "decimals": 10 }, 399 | { "addr": "0x4fbc28e3b3c1c50ee05dcd66d9fc614a0cb99705", "name": "HHT", "decimals": 18 }, 400 | { "addr": "0xe469c4473af82217b30cf17b10bcdb6c8c796e75", "name": "EXRN", "decimals": 0 }, 401 | { "addr": "0x0886949c1b8c412860c4264ceb8083d1365e86cf", "name": "BTCE", "decimals": 8 }, 402 | { "addr": "0xd6adc5e386d499361ccc5752f791b45132e7e6e4", "name": "MSC", "decimals": 0 }, 403 | { "addr": "0x5783862cef49094be4de1fe31280b2e33cf87416", "name": "KRT", "decimals": 4 }, 404 | { "addr": "0x994f0dffdbae0bbf09b652d6f11a493fd33f42b9", "name": "EAGLE", "decimals": 18 }, 405 | { "addr": "0x62a56a4a2ef4d355d34d10fbf837e747504d38d4", "name": "PAYX", "decimals": 2 }, 406 | { "addr": "0xc79d440551a03f84f863b1f259f135794c8a7190", "name": "MGX", "decimals": 18 }, 407 | { "addr": "0x4e279d8638e8669fad40e018fc181d26ee780380", "name": "ETV", "decimals": 8 }, 408 | { "addr": "0xb554cf51cda0fccd5012d55737c4df55a3e18a5c", "name": "MLK", "decimals": 8 }, 409 | { "addr": "0x4c382f8e09615ac86e08ce58266cc227e7d4d913", "name": "SKR", "decimals": 6 }, 410 | { "addr": "0x9375b738083101617f0642d7dbeaa89e361545e3", "name": "ESMS", "decimals": 0 }, 411 | { "addr": "0xb8742486c723793cf5162bb5d3425ed9cd73d049", "name": "TCASH", "decimals": 8 }, 412 | { "addr": "0x44e6d9ae9053a16e9311fd9702291c5516804359", "name": "EBTGOLD", "decimals": 0 }, 413 | { "addr": "0xef25e54e1ae9bfd966b9b5cde6880e7a2323a957", "name": "SOCIAL", "decimals": 18 }, 414 | { "addr": "0x5046e860ff274fb8c66106b0ffb8155849fb0787", "name": "JS", "decimals": 8 }, 415 | { "addr": "0x5f6e7fb7fe92ea7822472bb0e8f1be60d6a4ea50", "name": "ARTE", "decimals": 18 }, 416 | { "addr": "0xe50365f5d679cb98a1dd62d6f6e58e59321bcddf", "name": "LA", "decimals": 18 }, 417 | { "addr": "0x0cf0ee63788a0849fe5297f3407f701e122cc023", "name": "DATA", "decimals": 18 }, 418 | { "addr": "0xdb45faeca61c70e271bffeaf66162fa68a1c4def", "name": "EBIT", "decimals": 0 }, 419 | { "addr": "0x8633e144f2d9b9b8bdd12ddb58e4bef1e163a0ce", "name": "YEL", "decimals": 18 }, 420 | { "addr": "0xae4f56f072c34c0a65b3ae3e4db797d831439d93", "name": "GIM", "decimals": 8 }, 421 | { "addr": "0xe2f45f1660dc99daf3bd06f637ab1e4debc15bde", "name": "SGG", "decimals": 6 }, 422 | { "addr": "0xb3bd49e28f8f832b8d1e246106991e546c323502", "name": "GMT", "decimals": 18 }, 423 | { "addr": "0xf970b8e36e23f7fc3fd752eea86f8be8d83375a6", "name": "RCN", "decimals": 18 }, 424 | { "addr": "0xbf430e24ac0f33d4ad6fac9654b37943124c2786", "name": "IBTG", "decimals": 8 }, 425 | { "addr": "0x6b9e8076a536459303db301ba4430913a7f14c5a", "name": "JDI", "decimals": 2 }, 426 | { "addr": "0x2edc6fcc641f0169d54abb842f96f701eae85e4e", "name": "ADUOLD", "decimals": 18 }, 427 | { "addr": "0xba5f11b16b155792cf3b2e6880e8706859a8aeb6", "name": "ARN", "decimals": 8 }, 428 | { "addr": "0x9501bfc48897dceeadf73113ef635d2ff7ee4b97", "name": "EMT", "decimals": 18 }, 429 | { "addr": "0xa6e2f7f33f01fb399e72f3e044196eab7d348012", "name": "AMO", "decimals": 4 }, 430 | { "addr": "0x22c10728343e9d49ef25080f74a223878a3d4052", "name": "DRP2", "decimals": 8 }, 431 | { "addr": "0xac3211a5025414af2866ff09c23fc18bc97e79b1", "name": "DOVU", "decimals": 18 }, 432 | { "addr": "0x662abcad0b7f345ab7ffb1b1fbb9df7894f18e66", "name": "CTX", "decimals": 18 }, 433 | { "addr": "0x8bf8bcf8aba5ecffffd431489fe79dad38023a9b", "name": "BUS", "decimals": 8 }, 434 | { "addr": "0xa8ba4095833a3f924d86cb3941099c1abb75ea13", "name": "SUB1X", "decimals": 18 }, 435 | { "addr": "0x638ac149ea8ef9a1286c41b977017aa7359e6cfa", "name": "ALTS", "decimals": 18 }, 436 | { "addr": "0xff18dbc487b4c2e3222d115952babfda8ba52f5f", "name": "LIFE", "decimals": 18 }, 437 | { "addr": "0x181a63746d3adcf356cbc73ace22832ffbb1ee5a", "name": "ALCO", "decimals": 8 }, 438 | { "addr": "0x8f0921f30555624143d427b340b1156914882c10", "name": "FYP", "decimals": 18 }, 439 | { "addr": "0xfa2632a88bd0c11535a38f98a98db8251ccbaa9e", "name": "GTA", "decimals": 18 }, 440 | { "addr": "0x8e10f6bb9c973d61321c25a2b8d865825f4aa57b", "name": "0ED", "decimals": 18 }, 441 | { "addr": "0x03df4c372a29376d2c8df33a1b5f001cd8d68b0e", "name": "BITCOINEREUM", "decimals": 8 }, 442 | { "addr": "0xbb1b3e8ddded8165d58b0c192d19cd360682b170", "name": "CAS", "decimals": 2 }, 443 | { "addr": "0x49aec0752e68d0282db544c677f6ba407ba17ed7", "name": "XBL", "decimals": 18 }, 444 | { "addr": "0x8f070b17dd3953634e9e9c174d0f05396f681bc1", "name": "CCP", "decimals": 18 }, 445 | { "addr": "0xe58aff48f738b4a719d1790587cdc91a3560d7e1", "name": "TMP", "decimals": 7 }, 446 | { "addr": "0x87ae38d63a6bbb63e46219f494b549e3be7fc400", "name": "LAP", "decimals": 8 }, 447 | { "addr": "0x7f2176ceb16dcb648dc924eff617c3dc2befd30d", "name": "OHNI", "decimals": 0 }, 448 | { "addr": "0x2233799ee2683d75dfefacbcd2a26c78d34b470d", "name": "NTWK", "decimals": 18 }, 449 | { "addr": "0x9b8eb7a73a3c65fc3c892b494ab29cb061cf05ae", "name": "1BIT", "decimals": 0 }, 450 | { "addr": "0x580d69737e11cf2fb306c8fc0161b86f7c9f03ba", "name": "NEBO", "decimals": 3 }, 451 | { "addr": "0x26d5bd2dfeda983ecd6c39899e69dae6431dffbb", "name": "ERC20", "decimals": 18 }, 452 | { "addr": "0xfb4752ad1b7153e1dbd2e6662651a11c7fc14083", "name": "MPESA", "decimals": 8 }, 453 | { "addr": "0x27537ff4df3081cef9bee9b29cac764067b42611", "name": "SLIP", "decimals": 0 }, 454 | { "addr": "0xba71b32e71a41339aa4ceaa79528535aefe488d8", "name": "ALIEF", "decimals": 0 }, 455 | { "addr": "0xc9b89f6b5301f554b9adc6d4a871c3279820de40", "name": "HAO", "decimals": 18 }, 456 | { "addr": "0xd9a0658b7cc9ec0c57e8b20c0920d08f17e747be", "name": "SAT", "decimals": 10 }, 457 | { "addr": "0x7a41e0517a5eca4fdbc7fbeba4d4c47b9ff6dc63", "name": "ZSC", "decimals": 18 }, 458 | { "addr": "0x999967e2ec8a74b7c8e9db19e039d920b31d39d0", "name": "TIE", "decimals": 18 }, 459 | { "addr": "0x8bbf4dd0f11b3a535660fd7fcb7158daebd3a17e", "name": "EGASOLD", "decimals": 8 }, 460 | { "addr": "0xb53a96bcbdd9cf78dff20bab6c2be7baec8f00f8", "name": "EGAS", "decimals": 8 }, 461 | { "addr": "0x4dc3643dbc642b72c158e7f3d2ff232df61cb6ce", "name": "AMB", "decimals": 18 }, 462 | { "addr": "0xe3fa177acecfb86721cf6f9f4206bd3bd672d7d5", "name": "CTT", "decimals": 18 }, 463 | { "addr": "0xeb7c20027172e5d143fb030d50f91cece2d1485d", "name": "EBTC", "decimals": 8 }, 464 | { "addr": "0x9742fa8cb51d294c8267ddfead8582e16f18e421", "name": "10MTI", "decimals": 10 }, 465 | { "addr": "0x52a7cb918c11a16958be40cba7e31e32a499a465", "name": "FDX", "decimals": 18 }, 466 | { "addr": "0x12b19d3e2ccc14da04fae33e63652ce469b3f2fd", "name": "GRID", "decimals": 12 }, 467 | { "addr": "0x16b5a0de0520e1964a20ac8ef4034bd7d0920d8f", "name": "TIOTOUR", "decimals": 18 }, 468 | { "addr": "0xf6b55acbbc49f4524aa48d19281a9a77c54de10f", "name": "WLK", "decimals": 18 }, 469 | { "addr": "0x60200c0fefc1d0ade1e19a247b703cf3ccdc915a", "name": "TWIT", "decimals": 8 }, 470 | { "addr": "0xc99ddc30bb0cf76b07d90dcb6b267b8352697bef", "name": "TDT", "decimals": 18 }, 471 | { "addr": "0x2f5e044ad4adac34c8d8df738fac7743eda1409c", "name": "AGO", "decimals": 18 }, 472 | { "addr": "0xb444208cb0516c150178fcf9a52604bc04a1acea", "name": "GRMD", "decimals": 18 }, 473 | { "addr": "0x4d829f8c92a6691c56300d020c9e0db984cfe2ba", "name": "XCC", "decimals": 18 }, 474 | { "addr": "0x76195ffd0cfedf68625b3e5b64c7bd904eeb9d6c", "name": "WETOLD", "decimals": 18 }, 475 | { "addr": "0x0425cbbc5ff784203fe8d82beefa2b02634351f5", "name": "FBR", "decimals": 18 }, 476 | { "addr": "0x01c67791309c71aa4ed373025a0c089696d7c9e4", "name": "CCB", "decimals": 18 }, 477 | { "addr": "0x944f1a04ab8d735acdbc46505c5b283f54289152", "name": "GBTS", "decimals": 18 }, 478 | { "addr": "0x4a536c1ce7ad7f6e8d2e59135e17aef5ef4dd4e6", "name": "GEC", "decimals": 3 }, 479 | { "addr": "0xf6cfe53d6febaeea051f400ff5fc14f0cbbdaca1", "name": "DGPT", "decimals": 18 }, 480 | { "addr": "0x3293cc907fde439b39aedaf1b982785adaff186b", "name": "TRIA", "decimals": 10 }, 481 | { "addr": "0x5d51fcced3114a8bb5e90cdd0f9d682bcbcc5393", "name": "B2B", "decimals": 18 }, 482 | { "addr": "0x44197a4c44d6a059297caf6be4f7e172bd56caaf", "name": "ELTCOIN", "decimals": 8 }, 483 | { "addr": "0x5554e04e76533e1d14c52f05beef6c9d329e1e30", "name": "NIO", "decimals": 0 }, 484 | { "addr": "0x14fffb1e001615b7fb7c7857bdf440a610022e5b", "name": "SCX", "decimals": 0 }, 485 | { "addr": "0x275fd328c3986be83f8b60f79c73cf63fde98ca5", "name": "CSL", "decimals": 18 }, 486 | { "addr": "0x103c3a209da59d3e7c4a89307e66521e081cfdf0", "name": "GVT", "decimals": 18 }, 487 | { "addr": "0x44f588aeeb8c44471439d1270b3603c66a9262f1", "name": "SNIP", "decimals": 18 }, 488 | { "addr": "0x45321004790a4dae7ba19217a10574d55739efc7", "name": "DEEM", "decimals": 18 }, 489 | { "addr": "0x12a35383ca24ceb44cdcbbecbeb7baccb5f3754a", "name": "CS", "decimals": 6 }, 490 | { "addr": "0xe30e02f049957e2a5907589e06ba646fb2c321ba", "name": "DRPU", "decimals": 8 }, 491 | { "addr": "0x3e250a4f78410c29cfc39463a81f14a226690eb4", "name": "DRPS", "decimals": 8 }, 492 | { "addr": "0x24692791bc444c5cd0b81e3cbcaba4b04acd1f3b", "name": "UKG", "decimals": 18 }, 493 | { "addr": "0x595832f8fc6bf59c85c527fec3740a1b7a361269", "name": "POWR", "decimals": 6 }, 494 | { "addr": "0x9c1d13d5a8fd4a8ac89917d31d40db454d1ee60b", "name": "ELUNCH", "decimals": 18 }, 495 | { "addr": "0x180e5087935a94fd5bbab00fd2249c5be0473381", "name": "ZCG", "decimals": 8 }, 496 | { "addr": "0x14839bf22810f09fb163af69bd21bd5476f445cd", "name": "CFD", "decimals": 18 }, 497 | { "addr": "0x255aa6df07540cb5d3d297f0d0d4d84cb52bc8e6", "name": "RDN", "decimals": 18 }, 498 | { "addr": "0xd3e2f9dfff5a6feeece5dbcee3b86cb375fd8c98", "name": "BCOIN", "decimals": 8 }, 499 | { "addr": "0xc029ba3dc12e1834571e821d94a07de0a01138ea", "name": "QBE", "decimals": 18 }, 500 | { "addr": "0x00a0cbe98e4d110b0fa82646152d77babf2951d0", "name": "EETHER", "decimals": 18 }, 501 | { "addr": "0x9c23a568a32e8434ec88bdf60891a1d95ffd36cc", "name": "CHUCK", "decimals": 4 }, 502 | { "addr": "0xd819e892f4df8659188e8bda839fdf2215a513bc", "name": "SPOON", "decimals": 18 }, 503 | { "addr": "0xd2308446536a0bad028ab8c090d62e1ea2a51f24", "name": "GNEISS", "decimals": 0 }, 504 | { "addr": "0x50ee674689d75c0f88e8f83cfe8c4b69e8fd590d", "name": "EPY", "decimals": 8 }, 505 | { "addr": "0x7627de4b93263a6a7570b8dafa64bae812e5c394", "name": "NXX", "decimals": 8 }, 506 | { "addr": "0x6f6deb5db0c4994a8283a01d6cfeeb27fc3bbe9c", "name": "SMART", "decimals": 0 }, 507 | { "addr": "0x8b1f49491477e0fb46a29fef53f1ea320d13c349", "name": "AMM", "decimals": 6 }, 508 | { "addr": "0x8866d52303e372c2a2936d8ea09afd87bcbd8cf2", "name": "TPL", "decimals": 10 }, 509 | { "addr": "0x1245ef80f4d9e02ed9425375e8f649b9221b31d8", "name": "ARCT", "decimals": 8 }, 510 | { "addr": "0xdd007278b667f6bef52fd0a4c23604aa1f96039a", "name": "RIPT", "decimals": 8 }, 511 | { "addr": "0xa5a283557653f36cf9aa0d5cc74b1e30422349f2", "name": "UETL", "decimals": 8 }, 512 | { "addr": "0x93e24ce396a9e7d7de4a5bc616cf5fcab0476626", "name": "ZIP", "decimals": 8 }, 513 | { "addr": "0x399a0e6fbeb3d74c85357439f4c8aed9678a5cbf", "name": "DCL", "decimals": 3 }, 514 | { "addr": "0x519475b31653e46d20cd09f9fdcf3b12bdacb4f5", "name": "VIU", "decimals": 18 }, 515 | { "addr": "0x86410db4d61c40a8e1df9f859069d5a15896195b", "name": "DJC", "decimals": 18 }, 516 | { "addr": "0x7c53f13699e1f6ef5c699e893a20948bdd2e4de9", "name": "DVD", "decimals": 18 }, 517 | { "addr": "0x554c20b7c486beee439277b4540a434566dc4c02", "name": "HST", "decimals": 18 }, 518 | { "addr": "0x420c42ce1370c0ec3ca87d9be64a7002e78e6709", "name": "STCN", "decimals": 0 }, 519 | { "addr": "0xa94c128a138504e1f81d727cc21bcb9ae6581015", "name": "FDM", "decimals": 18 }, 520 | { "addr": "0xe8c5e942b76099c0c6d78271bad3ca002fa7c531", "name": "HELP", "decimals": 0 }, 521 | { "addr": "0xf24d3dfffcaf9f9a5dda9c57eeeb1ac0bba49c86", "name": "XMAS", "decimals": 18 }, 522 | { "addr": "0x7b1309c1522afd4e66c31e1e6d0ec1319e1eba5e", "name": "BLN", "decimals": 18 }, 523 | { "addr": "0x7731ee8b0b0ab88977be7922849eb767bbe8da15", "name": "ABSOLD", "decimals": 18 }, 524 | { "addr": "0xc6b014274d7406641711fb8889f93f4f11dec810", "name": "NAO", "decimals": 18 }, 525 | { "addr": "0x28481cdc0e4fa79164491d47e8837edeb3993f20", "name": "TSS", "decimals": 18 }, 526 | { "addr": "0x7d3e7d41da367b4fdce7cbe06502b13294deb758", "name": "SSS", "decimals": 8 }, 527 | { "addr": "0x1500205f50bf3fd976466d0662905c9ff254fc9c", "name": "BBT", "decimals": 4 }, 528 | { "addr": "0x3485b9566097ad656c70d6ebbd1cd044e2e72d05", "name": "PNKOLD", "decimals": 0 }, 529 | { "addr": "0x013a06558f07d9e6f9a00c95a33f3a0e0255176b", "name": "BALI", "decimals": 18 }, 530 | { "addr": "0xaf55f3b7dc65c8f9577cf00c8c5ca7b6e8cc4433", "name": "ENTRC", "decimals": 8 }, 531 | { "addr": "0x7259fddca8d5f0184b3b12aa7e8401964b703a4f", "name": "HYTV", "decimals": 3 }, 532 | { "addr": "0xea097a2b1db00627b2fa17460ad260c016016977", "name": "UFR", "decimals": 18 }, 533 | { "addr": "0x6733d909e10ddedb8d6181b213de32a30ceac7ed", "name": "BTSE", "decimals": 18 }, 534 | { "addr": "0x449574c69f3a658794829ed81639a7a9ece041e1", "name": "NEOG", "decimals": 0 }, 535 | { "addr": "0xc0c2ee1ce1fed8f6e2764363a36db3dd4cf10022", "name": "FBL", "decimals": 2 }, 536 | { "addr": "0xcbce61316759d807c474441952ce41985bbc5a40", "name": "MOAC", "decimals": 18 }, 537 | { "addr": "0xea642206310400cda4c1c5b8e7945314aa96b8a7", "name": "MINT", "decimals": 18 }, 538 | { "addr": "0x0b24fdf35876bbe2a1cc925321b8c301017474d4", "name": "JWT", "decimals": 0 }, 539 | { "addr": "0x0835ecd15ddf08d4786304d71b4672dc5c40f011", "name": "PLC", "decimals": 18 }, 540 | { "addr": "0xc5cea8292e514405967d958c2325106f2f48da77", "name": "PRFT", "decimals": 18 }, 541 | { "addr": "0xd024645809f74043cd2133c6afeb46f0de4ad88f", "name": "DEER", "decimals": 18 }, 542 | { "addr": "0x3d46454212c61ecb7b31248047fa033120b88668", "name": "MVT", "decimals": 18 }, 543 | { "addr": "0x38d1c39c3e85dbf0fc2f2d637a4872530ad07a5f", "name": "NDO", "decimals": 4 }, 544 | { "addr": "0x219218f117dc9348b358b8471c55a073e5e0da0b", "name": "GRX", "decimals": 18 }, 545 | { "addr": "0xcb5a05bef3257613e984c17dbcf039952b6d883f", "name": "SGR", "decimals": 8 }, 546 | { "addr": "0x7b22938ca841aa392c93dbb7f4c42178e3d65e88", "name": "ASTRO", "decimals": 4 }, 547 | { "addr": "0xb203b5495109c6c85615ebb2056f98301d470507", "name": "TRASH", "decimals": 3 }, 548 | { "addr": "0x74ceda77281b339142a36817fa5f9e29412bab85", "name": "ERO", "decimals": 8 }, 549 | { "addr": "0xd04963de435bd4d25b1cc8f05870f49edbfc8c18", "name": "SNI", "decimals": 18 }, 550 | { "addr": "0x5e3346444010135322268a4630d2ed5f8d09446c", "name": "LOC", "decimals": 18 }, 551 | { "addr": "0x3adfc4999f77d04c8341bac5f3a76f58dff5b37a", "name": "PRIX", "decimals": 8 }, 552 | { "addr": "0x0ffab58ea5a71cc3ca40217706c3c401407fa4a8", "name": "INDIOLD", "decimals": 18 }, 553 | { "addr": "0xa119f0f5fd06ebadff8883c0f3c40b2d22e7a44f", "name": "CRTM", "decimals": 8 }, 554 | { "addr": "0xe4c07f4637df3a0354f9b42a1b3178dc573b8926", "name": "CZT", "decimals": 0 }, 555 | { "addr": "0x1d10997e92011398a20612f9ee87e33449bc1fe4", "name": "1KT", "decimals": 18 }, 556 | { "addr": "0x2dbe0f03f1dddbdbc87557e86df3878ae25af855", "name": "RC", "decimals": 8 }, 557 | { "addr": "0x164f64ef2a44444743c5472fa68fb3784060d286", "name": "T8C", "decimals": 3 }, 558 | { "addr": "0xc324a2f6b05880503444451b8b27e6f9e63287cb", "name": "XUC", "decimals": 18 }, 559 | { "addr": "0x37256d58e298cacaa82aa0527d56521f1b19e1f5", "name": "EALP", "decimals": 18 }, 560 | { "addr": "0xc98e0639c6d2ec037a615341c369666b110e80e5", "name": "EXMR", "decimals": 8 }, 561 | { "addr": "0x6e58b4c41cab75dc0239938bf5455ab8823ee4de", "name": "B2XOLD", "decimals": 8 }, 562 | { "addr": "0x9b68bfae21df5a510931a262cecf63f41338f264", "name": "DBET", "decimals": 18 }, 563 | { "addr": "0x9c3a2334d8d7a8b9013c0e572a5bbdfc2fc69063", "name": "LCC", "decimals": 18 }, 564 | { "addr": "0x189c05c3c191015c694032e1b09c190d5db3fb50", "name": "READ", "decimals": 8 }, 565 | { "addr": "0xd341d1680eeee3255b8c4c75bcce7eb57f144dae", "name": "ONG", "decimals": 18 }, 566 | { "addr": "0x70838403ecc194b73e50b70a177b2ef413a2f421", "name": "BZX", "decimals": 18 }, 567 | { "addr": "0xdfbd6a960a55bcfcf59d5925351e05a51498bcef", "name": "ROCK", "decimals": 0 }, 568 | { "addr": "0x71f7b56f9f8641f73ca71512a93857a7868d1443", "name": "KMR", "decimals": 18 }, 569 | { "addr": "0x1b957dc4aefeed3b4a2351a6a6d5cbfbba0cecfa", "name": "HQX", "decimals": 18 }, 570 | { "addr": "0x9e386da8cdfcf8b9e7490e3f2a4589c570cb2b2f", "name": "RPIL", "decimals": 8 }, 571 | { "addr": "0x19aea60e2fd6ac54ecf2576292c8fc7046429c37", "name": "HUB", "decimals": 18 }, 572 | { "addr": "0x82b0e50478eeafde392d45d1259ed1071b6fda81", "name": "DNA", "decimals": 18 }, 573 | { "addr": "0xa0aa85b54f8a7b09c845f13a09172b08925f3d54", "name": "SISA", "decimals": 18 }, 574 | { "addr": "0x569cbdcc684edcc589939cc8f6b96e6abd9eb0f3", "name": "IGN", "decimals": 6 }, 575 | { "addr": "0x2cfd4c10c075fa51649744245ec1d0aa3d567e23", "name": "IPY", "decimals": 8 }, 576 | { "addr": "0x1844b21593262668b7248d0f57a220caaba46ab9", "name": "PRL", "decimals": 18 }, 577 | { "addr": "0x149a23f3d1a1e61e1e3b7eddd27f32e01f9788c7", "name": "CARE", "decimals": 18 }, 578 | { "addr": "0x15ef5b9447710eab904e63e6233ff540400d603f", "name": "BTC2X", "decimals": 8 }, 579 | { "addr": "0x9e88613418cf03dca54d6a2cf6ad934a78c7a17a", "name": "SWM", "decimals": 18 }, 580 | { "addr": "0xd286603e0f5de621b510a36c78c7616c015656f2", "name": "BGIFT", "decimals": 18 }, 581 | { "addr": "0x90b1b771d0814d607da104b988efa39288219d62", "name": "MEDI", "decimals": 18 }, 582 | { "addr": "0xedcd82784027001d7af57a34501c65a25f97fee4", "name": "DATL", "decimals": 18 }, 583 | { "addr": "0x7ea4c29d3d37f9b259be610b67b3125c4d095d02", "name": "CANADA", "decimals": 18 }, 584 | { "addr": "0xbec8f6d667594fb181c9d68e5c80c910888be93d", "name": "STAKE", "decimals": 8 }, 585 | { "addr": "0x9c9891f7795eb127ba4783b671573275ff3a83a9", "name": "B2X", "decimals": 8 }, 586 | { "addr": "0xfad572db566e5234ac9fc3d570c4edc0050eaa92", "name": "BTHE", "decimals": 18 }, 587 | { "addr": "0x99ea4db9ee77acd40b119bd1dc4e33e1c070b80d", "name": "QSP", "decimals": 18 }, 588 | { "addr": "0x11f8dd7699147566cf193596083d45c8f592c4ba", "name": "ETHC", "decimals": 0 }, 589 | { "addr": "0xe25f0974fea47682f6a7386e4217da70512ec997", "name": "BRC", "decimals": 18 }, 590 | { "addr": "0xbc9395973bd35a3b4bd924f050d2778c07506ecb", "name": "GREED", "decimals": 18 }, 591 | { "addr": "0xd317ff47dc7e1423e5e050870a66332833e5fd88", "name": "PNY", "decimals": 0 }, 592 | { "addr": "0xcc34366e3842ca1bd36c1f324d15257960fcc801", "name": "BON", "decimals": 18 }, 593 | { "addr": "0x71f1bc89f38b241f3ebf0d5a013fa2850c63a1d4", "name": "ZDR", "decimals": 8 }, 594 | { "addr": "0x1daaf3d62582639c6a7eabb467e2db9b56fafbbd", "name": "USD_S", "decimals": 18 }, 595 | { "addr": "0xd0800859d6f4bc0210b7807e770bc44a9ece7372", "name": "USD_R", "decimals": 18 }, 596 | { "addr": "0x1831887fbabf783910db128e60c41bfa016059d8", "name": "EUR_S", "decimals": 18 }, 597 | { "addr": "0xe5a219d4db92a701e79b6e548803c8ce55138686", "name": "EUR_R", "decimals": 18 }, 598 | { "addr": "0x1735fc2b89b80d1ae33c35dd55eae7fa7642f336", "name": "CAD_S", "decimals": 18 }, 599 | { "addr": "0xf4522eda455814d43b003bc1c38501b04d65cc4a", "name": "CAD_R", "decimals": 18 }, 600 | { "addr": "0xa9666166d3c7fd15e874801f99e9ad5bfb70c5cf", "name": "GBP_S", "decimals": 18 }, 601 | { "addr": "0xdfe2bd1d3dcbb97804acf3ee85230e832c4a7b5d", "name": "GBP_R", "decimals": 18 }, 602 | { "addr": "0x5f54c1512d036a0dd92744ee0a55ed183dde0484", "name": "JPY_S", "decimals": 18 }, 603 | { "addr": "0x22a3d74c363379189b6cc059d8fbd888e98df5ec", "name": "JPY_R", "decimals": 18 }, 604 | { "addr": "0x55648de19836338549130b1af587f16bea46f66b", "name": "PBL", "decimals": 18 }, 605 | { "addr": "0xd7aa94f17d60be06414973a45ffa77efd6443f0f", "name": "BTCQ", "decimals": 8 }, 606 | { "addr": "0x222728c202e7164dfbd127181d46409338c4328e", "name": "MIND", "decimals": 18 }, 607 | { "addr": "0x1d9e20e581a5468644fe74ccb6a46278ef377f9e", "name": "CDRT", "decimals": 8 }, 608 | { "addr": "0x4b4e611823702285fd526d7a8a3b0aa99ab2dbcd", "name": "HDLT", "decimals": 18 }, 609 | { "addr": "0x42d6622dece394b54999fbd73d108123806f6a18", "name": "SPANK", "decimals": 18 }, 610 | { "addr": "0x7b69b78cc7fee48202c208609ae6d1f78ce42e13", "name": "GOAL", "decimals": 18 }, 611 | { "addr": "0x494bbaf0124285e6ecb4dfd9eac76e18a9bf470f", "name": "ETHX", "decimals": 18 }, 612 | { "addr": "0x44830e5fbe354af3c1c8d405170c08d3bc8a2cd9", "name": "ETHCEN", "decimals": 8 }, 613 | { "addr": "0xfeed1a53bd53ffe453d265fc6e70dd85f8e993b6", "name": "H2O", "decimals": 18 }, 614 | { "addr": "0xa823e6722006afe99e91c30ff5295052fe6b8e32", "name": "NEU", "decimals": 18 }, 615 | { "addr": "0xf04a8ac553fcedb5ba99a64799155826c136b0be", "name": "FLIXX", "decimals": 18 }, 616 | { "addr": "0x39013f961c378f02c2b82a6e1d31e9812786fd9d", "name": "SMS", "decimals": 3 }, 617 | { "addr": "0xffb99f90bcd96fe743796fd8eefaaa6617753e79", "name": "MMC2", "decimals": 0 }, 618 | { "addr": "0x1175a66a5c3343bbf06aa818bb482ddec30858e0", "name": "CIX", "decimals": 18 }, 619 | { "addr": "0x111111f7e9b1fe072ade438f77e1ce861c7ee4e3", "name": "CAT2", "decimals": 18 }, 620 | { "addr": "0x5121e348e897daef1eef23959ab290e5557cf274", "name": "AI", "decimals": 18 }, 621 | { "addr": "0x80fb784b7ed66730e8b1dbd9820afd29931aab03", "name": "LEND", "decimals": 18 }, 622 | { "addr": "0x74951b677de32d596ee851a233336926e6a2cd09", "name": "WBA", "decimals": 7 }, 623 | { "addr": "0x4632091b0dd0e0902d1fe0534e16eb7b20328d70", "name": "ULT", "decimals": 18 }, 624 | { "addr": "0xa5d1e58ece1fc438d64e65769d2ab730143a4caf", "name": "RBM", "decimals": 18 }, 625 | { "addr": "0x1b22c32cd936cb97c28c5690a0695a82abf688e6", "name": "WISH", "decimals": 18 }, 626 | { "addr": "0x340d2bde5eb28c1eed91b2f790723e3b160613b7", "name": "VEE", "decimals": 18 }, 627 | { "addr": "0x25432dd810730331498c22fbf6b98432e7ef3e66", "name": "BIO", "decimals": 18 }, 628 | { "addr": "0x5b26c5d0772e5bbac8b3182ae9a13f9bb2d03765", "name": "EDU", "decimals": 8 }, 629 | { "addr": "0x5c5413bad5f6fdb0f4fcd1457e46ead8e01d73d3", "name": "UAHOLD", "decimals": 18 }, 630 | { "addr": "0x0f9b1d1d39118480cf8b9575419ea4e5189c88dd", "name": "WET", "decimals": 0 }, 631 | { "addr": "0x18edc1b644839eed61c69e624e96bbd469a2ef52", "name": "ELC", "decimals": 18 }, 632 | { "addr": "0x9901ed1e649c4a77c7fff3dfd446ffe3464da747", "name": "ENT", "decimals": 18 }, 633 | { "addr": "0x10c0337c42843e0b8ce743d7d5ff39b711f3ad82", "name": "WND", "decimals": 18 }, 634 | { "addr": "0xee9704a1d61aa2c1401e2303ac7e1f81c29ed860", "name": "CLASH", "decimals": 0 }, 635 | { "addr": "0x30cc0e266cf33b8eac6a99cbd98e39b890cfd69b", "name": "CLASSY", "decimals": 16 }, 636 | { "addr": "0x13f11c9905a08ca76e3e853be63d4f0944326c72", "name": "DIVX", "decimals": 18 }, 637 | { "addr": "0x9d5b592b687c887a5a34df5f9207adb2c2db3aec", "name": "ETBT", "decimals": 18 }, 638 | { "addr": "0xb4b1d2c217ec0776584ce08d3dd98f90ededa44b", "name": "CO2", "decimals": 18 }, 639 | { "addr": "0x0f513ffb4926ff82d7f60a05069047aca295c413", "name": "XSC", "decimals": 18 }, 640 | { "addr": "0xbf4a29269bf3a5c351c2af3a9c9ed81b07129ce4", "name": "KEN", "decimals": 18 }, 641 | { "addr": "0xc499ea948a1ad5d8eaf12abd2f67975c4dbe21aa", "name": "ANGL", "decimals": 18 }, 642 | { "addr": "0x80e7a4d750ade616da896c49049b7ede9e04c191", "name": "ASTR", "decimals": 4 }, 643 | { "addr": "0x5882d49d3511e09096cbbab7e19fbfb82f65f28d", "name": "BIONT", "decimals": 18 }, 644 | { "addr": "0x0bb217e40f8a5cb79adf04e1aab60e5abd0dfc1e", "name": "SWFTC", "decimals": 8 }, 645 | { "addr": "0x679badc551626e01b23ceecefbc9b877ea18fc46", "name": "CCO", "decimals": 18 }, 646 | { "addr": "0x08f8117155aa9414b67113a47ad269d47974e9dc", "name": "DHG", "decimals": 18 }, 647 | { "addr": "0xb4c55b5a1faf5323e59842171c2492773a3783dd", "name": "BCDC", "decimals": 18 }, 648 | { "addr": "0x31b5e97294e1afd6fff6ffe4cba89a344555f753", "name": "ALLY", "decimals": 18 }, 649 | { "addr": "0xa25d01d15fc0e3cdede1bebee4124394aae0db33", "name": "FLLW", "decimals": 18 }, 650 | { "addr": "0xbdc5bac39dbe132b1e030e898ae3830017d7d969", "name": "SNOV", "decimals": 18 }, 651 | { "addr": "0x8ce9411df545d6b51a9bc52a89e0f6d1b54a06dd", "name": "ABS", "decimals": 0 }, 652 | { "addr": "0x0af44e2784637218dd1d32a322d44e603a8f0c6a", "name": "MTX", "decimals": 18 }, 653 | { "addr": "0x0f598112679b78e17a4a9febc83703710d33489c", "name": "XMRG", "decimals": 8 }, 654 | { "addr": "0xfb7da9863e030495db8b4d067d665fc8433fff85", "name": "PCC", "decimals": 18 }, 655 | { "addr": "0x6cee948c9d593c58cba5dfa70482444899d1341c", "name": "SXSOLD", "decimals": 18 }, 656 | { "addr": "0xa0e743c37c470ab381cf0e87b6e8f12ef19586fd", "name": "CRYPHER", "decimals": 18 }, 657 | { "addr": "0xe8c09672cfb9cfce6e2edbb01057d9fa569f97c1", "name": "INDI", "decimals": 18 }, 658 | { "addr": "0x21692a811335301907ecd6343743791802ba7cfd", "name": "ADU", "decimals": 18 }, 659 | { "addr": "0xb4bfa6b45e25ad12bb033ec8a5eff523b83cc9af", "name": "UAHPAY", "decimals": 18 }, 660 | { "addr": "0x2604fa406be957e542beb89e6754fcde6815e83f", "name": "PKT", "decimals": 18 }, 661 | { "addr": "0x2fa32a39fc1c399e0cc7b2935868f5165de7ce97", "name": "PFR", "decimals": 8 }, 662 | { "addr": "0x419c4db4b9e25d6db2ad9691ccb832c8d9fda05e", "name": "DRGN", "decimals": 18 }, 663 | { "addr": "0xe42ba5558b00d2e6109cc60412d5d4c9473fe998", "name": "IMC", "decimals": 18 }, 664 | { "addr": "0x342ba159f988f24f0b033f3cc5232377ee500543", "name": "RAC", "decimals": 18 }, 665 | { "addr": "0x06147110022b768ba8f99a8f385df11a151a9cc8", "name": "ACE", "decimals": 0 }, 666 | { "addr": "0x0f4ca92660efad97a9a70cb0fe969c755439772c", "name": "LEV", "decimals": 9 }, 667 | { "addr": "0x83cee9e086a77e492ee0bb93c2b0437ad6fdeccc", "name": "MNTP", "decimals": 18 }, 668 | { "addr": "0x05c7065d644096a4e4c3fe24af86e36de021074b", "name": "LCT", "decimals": 18 }, 669 | { "addr": "0xd234bf2410a0009df9c3c63b610c09738f18ccd7", "name": "DTR", "decimals": 8 }, 670 | { "addr": "0x286bda1413a2df81731d4930ce2f862a35a609fe", "name": "WABI", "decimals": 18 }, 671 | { "addr": "0xd6e49800decb64c0e195f791348c1e87a5864fd7", "name": "RCT", "decimals": 9 }, 672 | { "addr": "0x52f7018bc6ba4d24abfbaefccae4617bfb0a0b52", "name": "YACHT", "decimals": 9 }, 673 | { "addr": "0x672a1ad4f667fb18a333af13667aa0af1f5b5bdd", "name": "CRED", "decimals": 18 }, 674 | { "addr": "0xaadb05f449072d275833baf7c82e8fca4ee46575", "name": "SXUOLD", "decimals": 6 }, 675 | { "addr": "0x554c98b3ec772f79ee5b96d47a1d10852ed274c8", "name": "SXDOLD", "decimals": 6 }, 676 | { "addr": "0x2eb86e8fc520e0f6bb5d9af08f924fe70558ab89", "name": "LGR", "decimals": 8 }, 677 | { "addr": "0x6beb418fc6e1958204ac8baddcf109b8e9694966", "name": "LNC", "decimals": 18 }, 678 | { "addr": "0xaf146fbd319ca7ae178caa2c9d80a2db6b944350", "name": "PXT", "decimals": 18 }, 679 | { "addr": "0x8b0c9f462c239c963d8760105cbc935c63d85680", "name": "SHNZ", "decimals": 8 }, 680 | { "addr": "0xf85feea2fdd81d51177f6b8f35f0e6734ce45f5f", "name": "CMT", "decimals": 18 }, 681 | { "addr": "0xfdbc1adc26f0f8f8606a5d63b7d3a3cd21c22b23", "name": "1WO", "decimals": 8 }, 682 | { "addr": "0x27f610bf36eca0939093343ac28b1534a721dbb4", "name": "WAND", "decimals": 18 }, 683 | { "addr": "0xe0c21b3f45fea3e5fdc811021fb1f8842caccad2", "name": "BITC", "decimals": 0 }, 684 | { "addr": "0x3833dda0aeb6947b98ce454d89366cba8cc55528", "name": "SPHTX", "decimals": 18 }, 685 | { "addr": "0xc27a2f05fa577a83ba0fdb4c38443c0718356501", "name": "TAU", "decimals": 18 }, 686 | { "addr": "0xd0a4b8946cb52f0661273bfbc6fd0e0c75fc6433", "name": "STORM", "decimals": 18 }, 687 | { "addr": "0x5d65d971895edc438f465c17db6992698a52318d", "name": "NAS", "decimals": 18 }, 688 | { "addr": "0x107c4504cd79c5d2696ea0030a8dd4e92601b82e", "name": "BLT", "decimals": 18 }, 689 | { "addr": "0x81c9151de0c8bafcd325a57e3db5a5df1cebf79c", "name": "DAT", "decimals": 18 }, 690 | { "addr": "0x12b306fa98f4cbb8d4457fdff3a0a0a56f07ccdf", "name": "SXDT", "decimals": 18 }, 691 | { "addr": "0x2c82c73d5b34aa015989462b2948cd616a37641f", "name": "SXUT", "decimals": 18 }, 692 | { "addr": "0x70a72833d6bf7f508c8224ce59ea1ef3d0ea3a38", "name": "UTK", "decimals": 18 }, 693 | { "addr": "0x8a854288a5976036a725879164ca3e91d30c6a1b", "name": "GET", "decimals": 18 }, 694 | { "addr": "0xd2d6158683aee4cc838067727209a0aaf4359de3", "name": "BNTY", "decimals": 18 }, 695 | { "addr": "0x1d462414fe14cf489c7a21cac78509f4bf8cd7c0", "name": "CAN", "decimals": 6 } 696 | ] 697 | --------------------------------------------------------------------------------