diff --git a/README.md b/README.md index 9bd7fe1..2ae8de7 100644 --- a/README.md +++ b/README.md @@ -20,11 +20,16 @@ import {PayFiat} from 'payfiat' class Example extends Component { render () { return ( - + ) } } ``` +> **Note** - if `receiverAccount` prop is not provided, then ethereum account address is exported from injected web3 provided like Metamask. ## License diff --git a/example/src/App.js b/example/src/App.js index ccade55..be2387e 100644 --- a/example/src/App.js +++ b/example/src/App.js @@ -6,7 +6,7 @@ export default class App extends Component { render() { return (
- +
) } diff --git a/example/src/index.js b/example/src/index.js index 856fb60..49624cc 100644 --- a/example/src/index.js +++ b/example/src/index.js @@ -3,5 +3,4 @@ import ReactDOM from 'react-dom' import './index.css' import App from './App' -console.log(process.env.REACT_APP_PAYFIAT_SERVER_URL) ReactDOM.render(, document.getElementById('root')) diff --git a/package.json b/package.json index 7ee4c25..41cc98d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "payfiat", - "version": "1.0.0", + "version": "1.1.0", "description": "React component to allow users to pay for Ocean Protocol assets in fiat currency", "author": "akshay-ap", "license": "Apache 2.0", @@ -70,4 +70,4 @@ "files": [ "dist" ] -} +} \ No newline at end of file diff --git a/server/.env.example b/server/.env.example new file mode 100644 index 0000000..45e8fb6 --- /dev/null +++ b/server/.env.example @@ -0,0 +1,10 @@ +STRIPE_PUBLISHABLE_KEY= +STRIPE_SECRET_KEY= +STRIPE_WEBHOOK_SECRET= + +INFURA_NODE= +PACIFIC_NODE="https://pacific.oceanprotocol.com" +PORT=4242 +OCEAN_CONTRACT_ADDRESS= +OCEAN_FROM_KEY= +OCEAN_FROM_ADDRESS= \ No newline at end of file diff --git a/server/README.md b/server/README.md new file mode 100644 index 0000000..695ea21 --- /dev/null +++ b/server/README.md @@ -0,0 +1,12 @@ +# Running the server + +We included several RESTful server that each implement the same endpoints and logic. +Pick the language you are most comfortable in and follow the instructions in the directory on how to run. + +# Supported languages + +* [JavaScript (Node)](node/README.md) +* [Python (Flask)](python/README.md) +* [Ruby (Sinatra)](ruby/README.md) +* [PHP (Slim)](php/README.md) +* [Java (Spark)](java/README.md) \ No newline at end of file diff --git a/server/src/README.md b/server/src/README.md new file mode 100644 index 0000000..a662713 --- /dev/null +++ b/server/src/README.md @@ -0,0 +1,20 @@ +# Name of sample +An [Express server](http://expressjs.com) implementation + +## Requirements +* Node v10+ +* [Configured .env file](../README.md) + +## How to run + +1. Install dependencies + +``` +npm install +``` + +2. Run the application + +``` +npm start +``` diff --git a/server/src/abi/ERC20.json b/server/src/abi/ERC20.json new file mode 100644 index 0000000..b7561ad --- /dev/null +++ b/server/src/abi/ERC20.json @@ -0,0 +1 @@ +[{"name": "Transfer", "inputs": [{"type": "address", "name": "_from", "indexed": true}, {"type": "address", "name": "_to", "indexed": true}, {"type": "uint256", "name": "_value", "indexed": false}], "anonymous": false, "type": "event"}, {"name": "Approval", "inputs": [{"type": "address", "name": "_owner", "indexed": true}, {"type": "address", "name": "_spender", "indexed": true}, {"type": "uint256", "name": "_value", "indexed": false}], "anonymous": false, "type": "event"}, {"name": "__init__", "outputs": [], "inputs": [{"type": "bytes32", "name": "_name"}, {"type": "bytes32", "name": "_symbol"}, {"type": "uint256", "name": "_decimals"}, {"type": "uint256", "name": "_supply"}], "constant": false, "payable": false, "type": "constructor"}, {"name": "deposit", "outputs": [], "inputs": [], "constant": false, "payable": true, "type": "function", "gas": 74279}, {"name": "withdraw", "outputs": [{"type": "bool", "name": "out"}], "inputs": [{"type": "uint256", "name": "_value"}], "constant": false, "payable": false, "type": "function", "gas": 108706}, {"name": "totalSupply", "outputs": [{"type": "uint256", "name": "out"}], "inputs": [], "constant": true, "payable": false, "type": "function", "gas": 543}, {"name": "balanceOf", "outputs": [{"type": "uint256", "name": "out"}], "inputs": [{"type": "address", "name": "_owner"}], "constant": true, "payable": false, "type": "function", "gas": 745}, {"name": "transfer", "outputs": [{"type": "bool", "name": "out"}], "inputs": [{"type": "address", "name": "_to"}, {"type": "uint256", "name": "_value"}], "constant": false, "payable": false, "type": "function", "gas": 74698}, {"name": "transferFrom", "outputs": [{"type": "bool", "name": "out"}], "inputs": [{"type": "address", "name": "_from"}, {"type": "address", "name": "_to"}, {"type": "uint256", "name": "_value"}], "constant": false, "payable": false, "type": "function", "gas": 110600}, {"name": "approve", "outputs": [{"type": "bool", "name": "out"}], "inputs": [{"type": "address", "name": "_spender"}, {"type": "uint256", "name": "_value"}], "constant": false, "payable": false, "type": "function", "gas": 37888}, {"name": "allowance", "outputs": [{"type": "uint256", "name": "out"}], "inputs": [{"type": "address", "name": "_owner"}, {"type": "address", "name": "_spender"}], "constant": true, "payable": false, "type": "function", "gas": 1025}, {"name": "name", "outputs": [{"type": "bytes32", "name": "out"}], "inputs": [], "constant": true, "payable": false, "type": "function", "gas": 723}, {"name": "symbol", "outputs": [{"type": "bytes32", "name": "out"}], "inputs": [], "constant": true, "payable": false, "type": "function", "gas": 753}, {"name": "decimals", "outputs": [{"type": "uint256", "name": "out"}], "inputs": [], "constant": true, "payable": false, "type": "function", "gas": 783}] \ No newline at end of file diff --git a/server/src/abi/token.json b/server/src/abi/token.json new file mode 100644 index 0000000..e58fde8 --- /dev/null +++ b/server/src/abi/token.json @@ -0,0 +1,486 @@ +[ + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x06fdde03" + }, + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x095ea7b3" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x18160ddd" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x23b872dd" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x313ce567" + }, + { + "constant": true, + "inputs": [], + "name": "cap", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x355274ea" + }, + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x39509351" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x40c10f19" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x70a08231" + }, + { + "constant": false, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x715018a6" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x8da5cb5b" + }, + { + "constant": true, + "inputs": [], + "name": "isOwner", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x8f32d59b" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x95d89b41" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addMinter", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x983b2d56" + }, + { + "constant": false, + "inputs": [], + "name": "renounceMinter", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x98650275" + }, + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xa457c2d7" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xa9059cbb" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isMinter", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xaa271e1a" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xdd62ed3e" + }, + { + "constant": false, + "inputs": [ + { + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xf2fde38b" + }, + { + "inputs": [ + { + "name": "_owner", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor", + "signature": "constructor" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "MinterAdded", + "type": "event", + "signature": "0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "account", + "type": "address" + } + ], + "name": "MinterRemoved", + "type": "event", + "signature": "0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event", + "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event", + "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event", + "signature": "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0" + }, + { + "constant": false, + "inputs": [], + "name": "kill", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x41c0e1b5" + } + ] \ No newline at end of file diff --git a/server/src/package-lock.json b/server/src/package-lock.json new file mode 100644 index 0000000..64e34bb --- /dev/null +++ b/server/src/package-lock.json @@ -0,0 +1,400 @@ +{ + "name": "stripe-recipe-demo", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + } + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "dotenv": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.0.0.tgz", + "integrity": "sha512-30xVGqjLjiUOArT4+M5q9sYdvuR4riM6yK9wMcas9Vbp6zZa+ocC9dp6QoftuhTPhFAiLK/0C5Ni2nou/Bk8lg==" + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ipaddr.js": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", + "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" + }, + "mime-types": { + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "requires": { + "mime-db": "1.40.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "proxy-addr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", + "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.0" + } + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "stripe": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/stripe/-/stripe-7.1.0.tgz", + "integrity": "sha512-5xZE/HrQ1WjEds5+z6JfcLtXoEbOV5LxfIE0x8YACqqvelNVyW0aErfeUIFSjSgniEDLWvQalb1l2Bx2LQqV0w==", + "requires": { + "lodash.isplainobject": "^4.0.6", + "qs": "^6.6.0", + "safe-buffer": "^5.1.1", + "uuid": "^3.3.2" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + } + } +} diff --git a/server/src/package.json b/server/src/package.json new file mode 100644 index 0000000..03c2efe --- /dev/null +++ b/server/src/package.json @@ -0,0 +1,28 @@ +{ + "name": "payfiat-server", + "version": "0.0.1", + "description": "backend server for Payfiat payment service", + "main": "src/server.js", + "scripts": { + "start": "node server.js", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "engines": { + "node": "^10.13.0" + }, + "author": "akshay-ap", + "license": "ISC", + "dependencies": { + "body-parser": "^1.19.0", + "express": "^4.17.1", + "axios": "^0.19.0", + "bignumber.js": "^9.0.0", + "concurrently": "4.1.2", + "dotenv": "^8.0.0", + "ethereumjs-common": "^1.5.0", + "ethereumjs-tx": "^2.1.2", + "react-router-dom": "^5.1.2", + "stripe": "^7.1.0", + "web3": "^1.2.4" + } +} \ No newline at end of file diff --git a/server/src/routes/crypto.router.js b/server/src/routes/crypto.router.js new file mode 100644 index 0000000..9506844 --- /dev/null +++ b/server/src/routes/crypto.router.js @@ -0,0 +1,111 @@ +const express = require("express"); +const router = express.Router(); +const Web3 = require("web3"); +const BigNumber = require("bignumber.js"); +const allTokens = require("../tokens"); +const erc20 = require("../abi/ERC20.json"); +const axios = require("axios"); +const { sendTx } = require("../utils/signer"); + +let web3 = new Web3(process.env.INFURA_NODE); +console.log(process.env.INFURA_NODE); + +router.get("/balance", async (req, res, next) => { + try { + console.log(req.query.token); + let balance = 0; + let { token, senderAddress } = req.query; + if (token == "ETH") { + let bal = await web3.eth.getBalance(senderAddress); + balance = readableBalance(bal, 18); + console.log(balance); + } else { + let selectedToken = allTokens.find(t => t.symbol == token); + //if token doesn't exists + if (!selectedToken) { + res + .status(404) + .json({ message: `Token ${token} is currently not supported` }); + } + + const tokenContract = new web3.eth.Contract(erc20, selectedToken.address); + let bal = await tokenContract.methods.balanceOf(senderAddress).call(); + balance = readableBalance(bal, selectedToken.decimals); + } + res.status(200).json({ balance }); + } catch (error) { + res.status(500).json({ message: "Oops! Some error occured" }); + console.error(error); + } +}); + +router.get("/currentPrice", async (req, res, next) => { + let price = 0; + try { + let { contractAddress, currency } = req.query; + let resp = await axios.get( + "https://api.coingecko.com/api/v3/simple/token_price/ethereum", + { + params: { + contract_addresses: contractAddress, + vs_currencies: currency + } + } + ); + + let data = resp.data; + console.log(data[contractAddress][currency.toLowerCase()]); + price = data[contractAddress][currency.toLowerCase()]; + } catch (err) { + console.error(err.message); + } + + res.status(200).json({ price }); +}); + +router.post("/validatePayment", async (req, res, next) => { + try { + console.log(req.query.token); + let balance = 0; + let { amount, contractAddress, txhash, receiverAddress } = req.query; + const receipt = await web3.eth.getTransactionReceipt(txhash); + if (receipt && receipt.status) { + //payment is successful + //transfer ocean tokens + const oceanInstance = new web3.eth.Contract(erc20, contractAddress); + var txData = await oceanInstance.methods + .transfer(receiverAddress, amount) + .encodeABI(); + + let selectedToken = allTokens.find(t => t.address == contractAddress); + let sendAmount = parseAmount(amount, selectedToken.address); + //transfer tokens to receiver address + sendTx( + txData, + process.env.OCEAN_FROM, + process.env.OCEAN_CONTRACT_ADDRESS, + 0 + ); + } + } catch (error) { + res.status(500).json({ message: "Oops! Some error occured" }); + console.error(error); + } +}); + +function readableBalance(preformattedAmount, decimals) { + let bn = new BigNumber(Number(preformattedAmount)); + let tokenUnit = new BigNumber(10); + tokenUnit = tokenUnit.pow(-1 * decimals); + return bn.multipliedBy(tokenUnit).toPrecision(); +} + +function parseAmount(preformattedAmount, decimals) { + let bn = new BigNumber(Number(preformattedAmount)); + let tokenUnit = new BigNumber(10); + tokenUnit = tokenUnit.pow(decimals); + let value = bn.multipliedBy(tokenUnit).toPrecision(); + return value; +} + +module.exports = router; diff --git a/server/src/routes/fiat.router.js b/server/src/routes/fiat.router.js new file mode 100644 index 0000000..57b3212 --- /dev/null +++ b/server/src/routes/fiat.router.js @@ -0,0 +1,94 @@ +require("dotenv").config(); +const express = require("express"); +const router = express.Router(); +const stripe = require("stripe")(process.env.STRIPE_SECRET_KEY); +const Web3 = require("web3"); +let web3 = new Web3(process.env.INFURA_NODE); +const { sendTx } = require("../utils/signer"); +const abi = require("../abi/token.json"); +const { parseAmount } = require("../utils/formatter"); + +router.get("/public-key", (req, res) => { + console.log(`pub key - ${process.env.STRIPE_PUBLISHABLE_KEY}`); + res.send({ publicKey: process.env.STRIPE_PUBLISHABLE_KEY }); +}); + +router.post("/create-payment-intent", async (req, res) => { + const body = req.body; + const options = { + ...body + }; + console.log(options) + + try { + const paymentIntent = await stripe.paymentIntents.create(options); + res.status(200).json(paymentIntent); + } catch (err) { + res.status(500).json(err); + console.error(err.message); + } +}); + + +router.get("/transfer-oceans", async (req, res) => { + const { receiverAddress, amount } = req.query; + let oceanContractAddress = process.env.OCEAN_CONTRACT_ADDRESS; + + try { + //create token instance from abi and contract address + const tokenInstance = new web3.eth.Contract(abi, oceanContractAddress); + let amt = parseAmount(amount).toString(); + console.log(amt) + var txData = await tokenInstance.methods.transfer(receiverAddress, amt).encodeABI(); + let txHash = await sendTx(txData, process.env.OCEAN_FROM_ADDRESS, oceanContractAddress, 0); + res.status(201).json({ txHash }); + } catch (err) { + res.status(500).json({ message: err.message }); + console.error(err.message); + } +}); + +// Webhook handler for asynchronous events. +router.post("/webhook", async (req, res) => { + let data; + let eventType; + // Check if webhook signing is configured. + if (process.env.STRIPE_WEBHOOK_SECRET) { + // Retrieve the event by verifying the signature using the raw body and secret. + let event; + let signature = req.headers["stripe-signature"]; + + try { + event = stripe.webhooks.constructEvent( + req.rawBody, + signature, + process.env.STRIPE_WEBHOOK_SECRET + ); + } catch (err) { + console.log(`⚠️ Webhook signature verification failed.`); + return res.sendStatus(400); + } + // Extract the object from the event. + data = event.data; + eventType = event.type; + } else { + // Webhook signing is recommended, but if the secret is not configured in `config.js`, + // retrieve the event data directly from the request body. + data = req.body.data; + eventType = req.body.type; + } + + if (eventType === "payment_intent.succeeded") { + // Fulfill any orders, e-mail receipts, etc + console.log("💰 Payment received!"); + } + + if (eventType === "payment_intent.payment_failed") { + // Notify the customer that their order was not fulfilled + console.log("❌ Payment failed."); + } + + res.sendStatus(200); +}); + +module.exports = router; diff --git a/server/src/routes/index.js b/server/src/routes/index.js new file mode 100644 index 0000000..16aea26 --- /dev/null +++ b/server/src/routes/index.js @@ -0,0 +1,4 @@ +const cryptoRouter = require("./crypto.router"); +const fiatRouter = require("./fiat.router"); + +module.exports = { cryptoRouter, fiatRouter }; diff --git a/server/src/server.js b/server/src/server.js new file mode 100644 index 0000000..180dc5d --- /dev/null +++ b/server/src/server.js @@ -0,0 +1,43 @@ +require("dotenv").config(); + +const express = require("express"); +const bodyParser = require("body-parser"); +const app = express(); +const { fiatRouter, cryptoRouter } = require("./routes"); + +app.use(bodyParser.json()); + +// configure CORS headers +app.use((req, res, next) => { + res.header("Access-Control-Allow-Origin", "*"); + res.header( + "Access-Control-Allow-Headers", + "Origin, X-Requested-With, Content-Type, Accept, Authorization" + ); + res.header("Access-Control-Allow-Methods", "GET, POST, OPTIONS, PUT, DELETE"); + next(); +}); + +app.use( + express.json({ + // We need the raw body to verify webhook signatures. + // Let's compute it only when hitting the Stripe webhook endpoint. + verify: function (req, res, buf) { + if (req.originalUrl.startsWith("/webhook")) { + req.rawBody = buf.toString(); + } + } + }) +); + +//routes +app.use("/fiat", fiatRouter); +app.use("/crypto", cryptoRouter); + +app.get("/", (req, res) => { + res.send("Hello from API"); +}); + +app.listen(process.env.PORT || 4242, () => + console.log(`Node server listening on port ${process.env.PORT || 4242}!`) +); diff --git a/server/src/tokens/idex.js b/server/src/tokens/idex.js new file mode 100644 index 0000000..f54f538 --- /dev/null +++ b/server/src/tokens/idex.js @@ -0,0 +1,2494 @@ +module.exports = [ +{ symbol: 'PLU', + name: 'Pluton', + address: '0xd8912c10681d8b21fd3742244f44658dba12264e', + decimals: 18 }, +{ symbol: '1ST', + name: 'FirstBlood', + address: '0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc7', + decimals: 18 }, +{ symbol: 'SNGLS', + name: 'SingularDTV', + address: '0xaec2e87e0a235266d9c5adc9deb4b2e29b54d009', + decimals: 0 }, +{ symbol: 'DGD', + name: 'Digix DAO', + address: '0xe0b7927c4af23765cb51314a0e0521a9645f0e2a', + decimals: 9 }, +{ symbol: 'DCN', + name: 'Dentacoin', + address: '0x08d32b0da63e2c3bcf8019c9c5d849d7a9d791e6', + decimals: 0 }, +{ symbol: 'RLC', + name: 'iExec', + address: '0x607f4c5bb672230e8672085532f7e901544a7375', + decimals: 9 }, +{ symbol: 'TRST', + name: 'Trustcoin', + address: '0xcb94be6f13a1182e4a4b6140cb7bf2025d28e41b', + decimals: 6 }, +{ symbol: 'GNO', + name: 'Gnosis', + address: '0x6810e776880c02933d47db1b9fc05908e5386b96', + decimals: 18 }, +{ symbol: 'WINGS', + name: 'WINGS', + address: '0x667088b212ce3d06a1b553a7221e1fd19000d9af', + decimals: 18 }, +{ symbol: 'TKN', + name: 'Monolith', + address: '0xaaaf91d9b90df800df4f55c205fd6989c977e73a', + decimals: 8 }, +{ symbol: 'HMQ', + name: 'Humaniq', + address: '0xcbcc0f036ed4788f63fc0fee32873d6a7487b908', + decimals: 8 }, +{ symbol: 'ANT', + name: 'Aragon', + address: '0x960b236a07cf122663c4303350609a66a7b288c0', + decimals: 18 }, +{ symbol: 'BAT', + name: 'Basic Attention Token', + address: '0x0d8775f648430679a709e98d2b0cb6250d2887ef', + decimals: 18 }, +{ symbol: 'MYST', + name: 'Mysterium', + address: '0xa645264c5603e96c3b0b078cdab68733794b0a71', + decimals: 8 }, +{ symbol: 'BNT', + name: 'Bancor', + address: '0x1f573d6fb3f13d689ff844b4ce37794d79a7ff1c', + decimals: 18 }, +{ symbol: 'SNT', + name: 'Status', + address: '0x744d70fdbe2ba4cf95131626614a1763df805b9e', + decimals: 18 }, +{ symbol: 'SNM', + name: 'SONM', + address: '0x983f6d60db79ea8ca4eb9968c6aff8cfa04b3c63', + decimals: 18 }, +{ symbol: 'NMR', + name: 'Numeraire', + address: '0x1776e1f26f98b1a5df9cd347953a26dd3cb46671', + decimals: 18 }, +{ symbol: 'PAY', + name: 'TenX', + address: '0xb97048628db6b661d4c2aa833e95dbe1a905b280', + decimals: 18 }, +{ symbol: 'PPT', + name: 'Populous', + address: '0xd4fa1460f537bb9085d22c7bccb5dd450ef28e3a', + decimals: 8 }, +{ symbol: 'FUN', + name: 'FunFair', + address: '0x419d0d8bdd9af5e606ae2232ed285aff190e711b', + decimals: 8 }, +{ symbol: 'ADT', + name: 'AdToken', + address: '0xd0d6d6c5fe4a677d343cc433536bb717bae167dd', + decimals: 9 }, +{ symbol: 'STORJ', + name: 'StorjToken', + address: '0xb64ef51c888972c908cfacf59b47c1afbc0ab8ac', + decimals: 8 }, +{ symbol: 'ADX', + name: 'AdEx', + address: '0x4470bb87d77b963a013db939be332f927f2b992e', + decimals: 4 }, +{ symbol: 'MTL', + name: 'Metal', + address: '0xf433089366899d83a9f26a773d59ec7ecf30355e', + decimals: 8 }, +{ symbol: 'PLR', + name: 'PILLAR', + address: '0xe3818504c1b32bf1557b16c238b2e01fd3149c17', + decimals: 18 }, +{ symbol: 'CVC', + name: 'Civic', + address: '0x41e5560054824ea6b0732e656e3ad64e20e94e45', + decimals: 8 }, +{ symbol: 'IXT', + name: 'iXledger', + address: '0xfca47962d45adfdfd1ab2d972315db4ce7ccf094', + decimals: 8 }, +{ symbol: 'DNT', + name: 'district0x', + address: '0x0abdace70d3790235af448c88547603b945604ea', + decimals: 18 }, +{ symbol: 'ETHOS', + name: 'Ethos', + address: '0x5af2be193a6abca9c8817001f45744777db30756', + decimals: 8 }, +{ symbol: 'STX', + name: 'Stox', + address: '0x006bea43baa3f7a6f765f14f10a1a1b08334ef45', + decimals: 18 }, +{ symbol: 'DENT', + name: 'DENT', + address: '0x3597bfd533a99c9aa083587b074434e61eb0a258', + decimals: 8 }, +{ symbol: 'SAN', + name: 'SANtiment', + address: '0x7c5a0ce9267ed19b22f8cae653f198e3e8daf098', + decimals: 18 }, +{ symbol: 'ZRX', + name: '0x', + address: '0xe41d2489571d322189246dafa5ebde1f4699f498', + decimals: 18 }, +{ symbol: 'MCO', + name: 'crypto.com', + address: '0xb63b606ac810a52cca15e44bb630fd42d8d1d83d', + decimals: 8 }, +{ symbol: 'POE', + name: 'Poet', + address: '0x0e0989b1f9b8a38983c2ba8053269ca62ec9b195', + decimals: 8 }, +{ symbol: 'WTT', + name: 'Cryptonomos', + address: '0x84119cb33e8f590d75c2d6ea4e6b0741a7494eda', + decimals: 0 }, +{ symbol: 'SCL', + name: 'SOCIAL', + address: '0xd7631787b4dcc87b1254cfd1e5ce48e96823dee8', + decimals: 8 }, +{ symbol: 'RVT', + name: 'RvT', + address: '0x3d1ba9be9f66b8ee101911bc36d3fb562eac2244', + decimals: 18 }, +{ symbol: 'TNT', + name: 'Tierion', + address: '0x08f5a9235b08173b7569f83645d2c7fb55e8ccd8', + decimals: 8 }, +{ symbol: 'REX', + name: 'imbrex', + address: '0xf05a9382a4c3f29e2784502754293d88b835109c', + decimals: 18 }, +{ symbol: 'MANA', + name: 'Decentraland', + address: '0x0f5d2fb29fb7d3cfee444a200298f468908cc942', + decimals: 18 }, +{ symbol: 'KICK', + name: 'KickCoin', + address: '0x27695e09149adc738a978e9a678f99e4c39e9eb9', + decimals: 8 }, +{ symbol: 'MTH', + name: 'Monetha', + address: '0xaf4dce16da2877f8c9e00544c93b62ac40631f16', + decimals: 5 }, +{ symbol: 'WTC', + name: 'Walton', + address: '0xb7cb1c96db6b22b0d3d9536e0108d062bd488f74', + decimals: 18 }, +{ symbol: 'ELIX', + name: 'elixir', + address: '0xc8c6a31a4a806d3710a7b38b7b296d2fabccdba8', + decimals: 18 }, +{ symbol: 'UMC', + name: 'UmbrellaCoin', + address: '0x190fb342aa6a15eb82903323ae78066ff8616746', + decimals: 6 }, +{ symbol: 'ART', + name: 'Maecenas', + address: '0xfec0cf7fe078a500abf15f1284958f22049c2c7e', + decimals: 18 }, +{ symbol: 'PRO2', + name: 'Propy', + address: '0x226bb599a12c826476e3a771454697ea52e9e220', + decimals: 8 }, +{ symbol: 'HBT', + name: 'Hubiits', + address: '0xdd6c68bb32462e01705011a4e2ad1a60740f217f', + decimals: 15 }, +{ symbol: 'KNC', + name: 'Kyber', + address: '0xdd974d5c2e2928dea5f71b9825b8b646686bd200', + decimals: 18 }, +{ symbol: 'RLX', + name: 'Relex', + address: '0x4a42d2c580f83dce404acad18dab26db11a1750e', + decimals: 18 }, +{ symbol: 'LINK', + name: 'ChainLink', + address: '0x514910771af9ca656af840dff83e8264ecf986ca', + decimals: 18 }, +{ symbol: 'TFT', + name: 'Travelling', + address: '0x13ea82d5e1a811f55bda9c86fdd6195a6bd23aed', + decimals: 8 }, +{ symbol: 'RPL', + name: 'Rocket Pool', + address: '0xb4efd85c19999d84251304bda99e90b92300bd93', + decimals: 18 }, +{ symbol: 'CND', + name: 'Cindicator', + address: '0xd4c435f5b09f855c3317c8524cb1f586e42795fa', + decimals: 18 }, +{ symbol: 'BTM', + name: 'Bytom', + address: '0xcb97e65f07da24d46bcdd078ebebd7c6e6e3d750', + decimals: 8 }, +{ symbol: 'SALT', + name: 'SALT Lending', + address: '0x4156d3342d5c385a87d264f90653733592000581', + decimals: 8 }, +{ symbol: 'HVN', + name: 'Hive', + address: '0xc0eb85285d83217cd7c891702bcbc0fc401e2d9d', + decimals: 8 }, +{ symbol: 'EVX', + name: 'Everex', + address: '0xf3db5fa2c66b7af3eb0c0b782510816cbe4813b8', + decimals: 4 }, +{ symbol: 'ENG', + name: 'Enigma', + address: '0xf0ee6b27b759c9893ce4f094b49ad28fd15a23e4', + decimals: 8 }, +{ symbol: 'AST', + name: 'AirSwap', + address: '0x27054b13b1b798b345b591a4d22e6562d47ea75a', + decimals: 4 }, +{ symbol: 'REQ', + name: 'Request Network', + address: '0x8f8221afbb33998d8584a2b05749ba73c37a938a', + decimals: 18 }, +{ symbol: 'ENJ', + name: 'EnjinCoin', + address: '0xf629cbd94d3791c9250152bd8dfbdf380e2a3b9c', + decimals: 18 }, +{ symbol: 'DATA', + name: 'Streamr', + address: '0x0cf0ee63788a0849fe5297f3407f701e122cc023', + decimals: 18 }, +{ symbol: 'ALIS', + name: 'ALIS Media', + address: '0xea610b1153477720748dc13ed378003941d84fab', + decimals: 18 }, +{ symbol: 'VIB', + name: 'Viberate', + address: '0x2c974b2d0ba1716e644c1fc59982a89ddd2ff724', + decimals: 18 }, +{ symbol: 'RCN', + name: 'Ripio', + address: '0xf970b8e36e23f7fc3fd752eea86f8be8d83375a6', + decimals: 18 }, +{ symbol: 'EDO', + name: 'Eidoo', + address: '0xced4e93198734ddaff8492d525bd258d49eb388e', + decimals: 18 }, +{ symbol: 'BLUE', + name: 'Ethereum Blue', + address: '0x539efe69bcdd21a83efd9122571a64cc25e0282b', + decimals: 8 }, +{ symbol: 'ACC', + name: 'Accelerator', + address: '0x13f1b7fdfbe1fc66676d56483e21b1ecb40b58e2', + decimals: 18 }, +{ symbol: 'ARN', + name: 'Aeron', + address: '0xba5f11b16b155792cf3b2e6880e8706859a8aeb6', + decimals: 8 }, +{ symbol: 'LIFE', + name: 'LIFE Token', + address: '0xff18dbc487b4c2e3222d115952babfda8ba52f5f', + decimals: 18 }, +{ symbol: 'EPY', + name: 'Emphy', + address: '0x50ee674689d75c0f88e8f83cfe8c4b69e8fd590d', + decimals: 8 }, +{ symbol: 'SWM', + name: 'Swarm Fund Token', + address: '0x9e88613418cf03dca54d6a2cf6ad934a78c7a17a', + decimals: 18 }, +{ symbol: 'EXMR', + name: 'EXMR', + address: '0xc98e0639c6d2ec037a615341c369666b110e80e5', + decimals: 8 }, +{ symbol: 'RDN', + name: 'Raiden', + address: '0x255aa6df07540cb5d3d297f0d0d4d84cb52bc8e6', + decimals: 18 }, +{ symbol: 'GRID', + name: 'Grid+', + address: '0x12b19d3e2ccc14da04fae33e63652ce469b3f2fd', + decimals: 12 }, +{ symbol: 'UKG', + name: 'Unikoin Gold', + address: '0x24692791bc444c5cd0b81e3cbcaba4b04acd1f3b', + decimals: 18 }, +{ symbol: 'GVT', + name: 'Genesis Vision', + address: '0x103c3a209da59d3e7c4a89307e66521e081cfdf0', + decimals: 18 }, +{ symbol: 'ASTRO', + name: 'AstroTokens', + address: '0x7b22938ca841aa392c93dbb7f4c42178e3d65e88', + decimals: 4 }, +{ symbol: 'DNA', + name: 'Gene-Chain Coin', + address: '0x82b0e50478eeafde392d45d1259ed1071b6fda81', + decimals: 18 }, +{ symbol: 'COV', + name: 'Covesting', + address: '0xe2fb6529ef566a080e6d23de0bd351311087d567', + decimals: 18 }, +{ symbol: 'LEND', + name: 'ETHLend', + address: '0x80fb784b7ed66730e8b1dbd9820afd29931aab03', + decimals: 18 }, +{ symbol: 'PKT', + name: 'PlayKey Token', + address: '0x2604fa406be957e542beb89e6754fcde6815e83f', + decimals: 18 }, +{ symbol: 'ITT', + name: 'ITT', + address: '0x0aef06dcccc531e581f0440059e6ffcc206039ee', + decimals: 8 }, +{ symbol: 'DRGN', + name: 'Dragonchain', + address: '0x419c4db4b9e25d6db2ad9691ccb832c8d9fda05e', + decimals: 18 }, +{ symbol: 'NIO', + name: 'Autonio', + address: '0x5554e04e76533e1d14c52f05beef6c9d329e1e30', + decimals: 0 }, +{ symbol: 'GET', + name: 'GUTS', + address: '0x8a854288a5976036a725879164ca3e91d30c6a1b', + decimals: 18 }, +{ symbol: 'BNTY', + name: 'Bounty0x', + address: '0xd2d6158683aee4cc838067727209a0aaf4359de3', + decimals: 18 }, +{ symbol: 'CAJ', + name: 'Cajutel', + address: '0x3c6a7ab47b5f058be0e7c7fe1a4b7925b8aca40e', + decimals: 18 }, +{ symbol: 'SPANK', + name: 'SpankChain', + address: '0x42d6622dece394b54999fbd73d108123806f6a18', + decimals: 18 }, +{ symbol: 'BKX', + name: 'BANKEX', + address: '0x45245bc59219eeaaf6cd3f382e078a461ff9de7b', + decimals: 18 }, +{ symbol: 'BLT', + name: 'Bloom', + address: '0x107c4504cd79c5d2696ea0030a8dd4e92601b82e', + decimals: 18 }, +{ symbol: 'EXRN', + name: 'EXRNchain', + address: '0xe469c4473af82217b30cf17b10bcdb6c8c796e75', + decimals: 0 }, +{ symbol: 'WAX', + name: 'Worldwide Asset eXchange', + address: '0x39bb259f66e1c59d5abef88375979b4d20d98022', + decimals: 8 }, +{ symbol: 'AIX', + name: 'Aigang', + address: '0x1063ce524265d5a3a624f4914acd573dd89ce988', + decimals: 18 }, +{ symbol: 'DAI', + name: 'Maker DAI', + address: '0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359', + decimals: 18 }, +{ symbol: 'GIM', + name: 'Gimli', + address: '0xae4f56f072c34c0a65b3ae3e4db797d831439d93', + decimals: 8 }, +{ symbol: 'CAT2', + name: 'BitClave', + address: '0x1234567461d3f8db7496581774bd869c83d51c93', + decimals: 18 }, +{ symbol: 'CAT', + name: 'BlockCAT', + address: '0x56ba2ee7890461f463f7be02aac3099f6d5811a8', + decimals: 18 }, +{ symbol: 'MKR', + name: 'Maker', + address: '0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2', + decimals: 18 }, +{ symbol: 'DMT', + name: 'DMarket', + address: '0x2ccbff3a042c68716ed2a2cb0c544a9f1d1935e1', + decimals: 8 }, +{ symbol: 'TAU', + name: 'Lamden', + address: '0xc27a2f05fa577a83ba0fdb4c38443c0718356501', + decimals: 18 }, +{ symbol: 'CRED', + name: 'Verify', + address: '0x672a1ad4f667fb18a333af13667aa0af1f5b5bdd', + decimals: 18 }, +{ symbol: 'VEE', + name: 'blockv', + address: '0x340d2bde5eb28c1eed91b2f790723e3b160613b7', + decimals: 18 }, +{ symbol: 'UFR', + name: 'upfiring', + address: '0xea097a2b1db00627b2fa17460ad260c016016977', + decimals: 18 }, +{ symbol: 'SXUT', + name: 'Spectre U-Token', + address: '0x2c82c73d5b34aa015989462b2948cd616a37641f', + decimals: 18 }, +{ symbol: 'WABI', + name: 'WaBi', + address: '0x286bda1413a2df81731d4930ce2f862a35a609fe', + decimals: 18 }, +{ symbol: 'APPC', + name: 'AppCoins', + address: '0x1a7a8bd9106f2b8d977e08582dc7d24c723ab0db', + decimals: 18 }, +{ symbol: 'BDG', + name: 'Bitdegree', + address: '0x1961b3331969ed52770751fc718ef530838b6dee', + decimals: 18 }, +{ symbol: 'WAND', + name: 'WANDX', + address: '0x27f610bf36eca0939093343ac28b1534a721dbb4', + decimals: 18 }, +{ symbol: 'LEV', + name: 'LeverJ', + address: '0x0f4ca92660efad97a9a70cb0fe969c755439772c', + decimals: 9 }, +{ symbol: 'REF', + name: 'RefToken', + address: '0x89303500a7abfb178b274fd89f2469c264951e1f', + decimals: 8 }, +{ symbol: 'TEL', + name: 'Telcoin', + address: '0x85e076361cc813a908ff672f9bad1541474402b2', + decimals: 2 }, +{ symbol: 'INS', + name: 'INS Ecosystem', + address: '0x5b2e4a700dfbc560061e957edec8f6eeeb74a320', + decimals: 10 }, +{ symbol: 'NEU', + name: 'Neumark', + address: '0xa823e6722006afe99e91c30ff5295052fe6b8e32', + decimals: 18 }, +{ symbol: 'HQX', + name: 'Hoqu', + address: '0x1b957dc4aefeed3b4a2351a6a6d5cbfbba0cecfa', + decimals: 18 }, +{ symbol: 'POWR', + name: 'Power Ledger', + address: '0x595832f8fc6bf59c85c527fec3740a1b7a361269', + decimals: 6 }, +{ symbol: 'KEY', + name: 'SelfKey', + address: '0x4cc19356f2d37338b9802aa8e8fc58b0373296e7', + decimals: 18 }, +{ symbol: 'PRFT', + name: 'Proof', + address: '0xc5cea8292e514405967d958c2325106f2f48da77', + decimals: 18 }, +{ symbol: 'H2O', + name: 'Hydrominer', + address: '0xfeed1a53bd53ffe453d265fc6e70dd85f8e993b6', + decimals: 18 }, +{ symbol: 'STK', + name: 'STACK', + address: '0xae73b38d1c9a8b274127ec30160a4927c4d71824', + decimals: 18 }, +{ symbol: 'ARY', + name: 'Blockarray', + address: '0xa5f8fc0921880cb7342368bd128eb8050442b1a1', + decimals: 18 }, +{ symbol: 'CRPT', + name: 'Crypterium', + address: '0x80a7e048f37a50500351c204cb407766fa3bae7f', + decimals: 18 }, +{ symbol: 'SAL', + name: 'SALPay', + address: '0x75c5ee419331b6150879530d06f9ba054755f1da', + decimals: 18 }, +{ symbol: 'ELF', + name: 'Aelf', + address: '0xbf2179859fc6d5bee9bf9158632dc51678a4100e', + decimals: 18 }, +{ symbol: 'QSP', + name: 'Quantstamp', + address: '0x99ea4db9ee77acd40b119bd1dc4e33e1c070b80d', + decimals: 18 }, +{ symbol: 'CBT', + name: 'CommerceBlock', + address: '0x076c97e1c869072ee22f8c91978c99b4bcb02591', + decimals: 18 }, +{ symbol: 'INXT', + name: 'Internxt', + address: '0xa8006c4ca56f24d6836727d106349320db7fef82', + decimals: 8 }, +{ symbol: 'PRO', + name: 'ProChain', + address: '0x9041fe5b3fdea0f5e4afdc17e75180738d877a01', + decimals: 18 }, +{ symbol: 'IDXM', + name: 'IDEX Membership', + address: '0xcc13fc627effd6e35d2d2706ea3c4d7396c610ea', + decimals: 8 }, +{ symbol: 'REAL', + name: 'Real.Markets', + address: '0x9214ec02cb71cba0ada6896b8da260736a67ab10', + decimals: 18 }, +{ symbol: 'AGI', + name: 'Singularity.net', + address: '0x8eb24319393716668d768dcec29356ae9cffe285', + decimals: 8 }, +{ symbol: 'MIRO', + name: 'Mirocana', + address: '0x0168703872fa06741ecaa9dff7803168e83f7ae0', + decimals: 8 }, +{ symbol: 'SKR', + name: 'Skrilla', + address: '0x4c382f8e09615ac86e08ce58266cc227e7d4d913', + decimals: 6 }, +{ symbol: 'STORM', + name: 'Storm Market', + address: '0xd0a4b8946cb52f0661273bfbc6fd0e0c75fc6433', + decimals: 18 }, +{ symbol: 'BTO', + name: 'Bottos', + address: '0x36905fc93280f52362a1cbab151f25dc46742fb5', + decimals: 18 }, +{ symbol: 'JNT', + name: 'Jibrel Network Token', + address: '0xa5fd1a791c4dfcaacc963d4f73c6ae5824149ea7', + decimals: 18 }, +{ symbol: 'EQC', + name: 'Qchain', + address: '0xc438b4c0dfbb1593be6dee03bbd1a84bb3aa6213', + decimals: 8 }, +{ symbol: 'SRN', + name: 'SIRIN LABS', + address: '0x68d57c9a1c35f63e2c83ee8e49a64e9d70528d25', + decimals: 18 }, +{ symbol: 'DAT', + name: 'Datum', + address: '0x81c9151de0c8bafcd325a57e3db5a5df1cebf79c', + decimals: 18 }, +{ symbol: 'IDH', + name: 'INDAHASH COIN', + address: '0x5136c98a80811c3f46bdda8b5c4555cfd9f812f0', + decimals: 6 }, +{ symbol: 'LOCI', + name: 'LOCIcoin', + address: '0x9c23d67aea7b95d80942e3836bcdf7e708a747c2', + decimals: 18 }, +{ symbol: 'ESZ', + name: 'ESZCoin', + address: '0xe8a1df958be379045e2b46a31a98b93a2ecdfded', + decimals: 18 }, +{ symbol: 'SETH', + name: 'Sether', + address: '0x78b039921e84e726eb72e7b1212bb35504c645ca', + decimals: 18 }, +{ symbol: 'BCDT', + name: 'BCDiploma', + address: '0xacfa209fb73bf3dd5bbfb1101b9bc999c49062a5', + decimals: 18 }, +{ symbol: 'TTT', + name: 'Tap Coin', + address: '0x9f599410d207f3d2828a8712e5e543ac2e040382', + decimals: 18 }, +{ symbol: 'CXO', + name: 'CargoX', + address: '0xb6ee9668771a79be7967ee29a63d4184f8097143', + decimals: 18 }, +{ symbol: 'WISH', + name: 'MyWish', + address: '0x1b22c32cd936cb97c28c5690a0695a82abf688e6', + decimals: 18 }, +{ symbol: 'EVE', + name: 'Devery', + address: '0x923108a439c4e8c2315c4f6521e5ce95b44e9b4c', + decimals: 18 }, +{ symbol: 'NEXT', + name: 'NEXT.exchange', + address: '0x4e005a760e00e17c4912a8070eec047cfecbabbb', + decimals: 18 }, +{ symbol: 'CV', + name: 'CarVertical', + address: '0xda6cb58a0d0c01610a29c5a65c303e13e885887c', + decimals: 18 }, +{ symbol: 'TRAC', + name: 'Origin Trail', + address: '0xaa7a9ca87d3694b5755f213b5d04094b8d0f0a6f', + decimals: 18 }, +{ symbol: 'QASH', + name: 'QASH', + address: '0x618e75ac90b12c6049ba3b27f5d5f8651b0037f6', + decimals: 6 }, +{ symbol: 'PARETO', + name: 'Pareto Network', + address: '0xea5f88e54d982cbb0c441cde4e79bc305e5b43bc', + decimals: 18 }, +{ symbol: 'IOST', + name: 'IOS', + address: '0xfa1a856cfa3409cfa145fa4e20eb270df3eb21ab', + decimals: 18 }, +{ symbol: 'DTA', + name: 'DATA', + address: '0x69b148395ce0015c13e36bffbad63f49ef874e03', + decimals: 18 }, +{ symbol: 'COFI', + name: 'CoinFI', + address: '0x3136ef851592acf49ca4c825131e364170fa32b3', + decimals: 18 }, +{ symbol: 'CHSB', + name: 'SwissBorg', + address: '0xba9d4199fab4f26efe3551d490e3821486f135ba', + decimals: 8 }, +{ symbol: 'FOTA', + name: 'Fortuna', + address: '0x4270bb238f6dd8b1c3ca01f96ca65b2647c06d3c', + decimals: 18 }, +{ symbol: 'CPC', + name: 'CPChain', + address: '0xfae4ee59cdd86e3be9e8b90b53aa866327d7c090', + decimals: 18 }, +{ symbol: 'ADB', + name: 'Adbank', + address: '0x2baac9330cf9ac479d819195794d79ad0c7616e3', + decimals: 18 }, +{ symbol: 'ING', + name: 'Iungo', + address: '0x24ddff6d8b8a42d835af3b440de91f3386554aa4', + decimals: 18 }, +{ symbol: 'STAR', + name: 'Starbase', + address: '0xf70a642bd387f94380ffb90451c2c81d4eb82cbc', + decimals: 18 }, +{ symbol: 'POLY', + name: 'Polymath', + address: '0x9992ec3cf6a55b00978cddf2b27bc6882d88d1ec', + decimals: 18 }, +{ symbol: 'MTN', + name: 'MedToken', + address: '0x41dbecc1cdc5517c6f76f6a6e836adbee2754de3', + decimals: 18 }, +{ symbol: 'BEE', + name: 'Bee Token', + address: '0x4d8fc1453a0f359e99c9675954e656d80d996fbf', + decimals: 18 }, +{ symbol: 'BLZ', + name: 'Bluzelle', + address: '0x5732046a883704404f284ce41ffadd5b007fd668', + decimals: 18 }, +{ symbol: 'MWAT', + name: 'RED MWAT', + address: '0x6425c6be902d692ae2db752b3c268afadb099d3b', + decimals: 18 }, +{ symbol: 'WPR', + name: 'WePower Token', + address: '0x4cf488387f035ff08c371515562cba712f9015d4', + decimals: 18 }, +{ symbol: 'SIG', + name: 'Spectiv Signal', + address: '0x6888a16ea9792c15a4dcf2f6c623d055c8ede792', + decimals: 18 }, +{ symbol: 'REN', + name: 'Republic Token', + address: '0x408e41876cccdc0f92210600ef50372656052a38', + decimals: 18 }, +{ symbol: 'DADI', + name: 'DADI', + address: '0xfb2f26f266fb2805a387230f2aa0a331b4d96fba', + decimals: 18 }, +{ symbol: 'LHCOIN', + name: 'LHCoin', + address: '0x0778cc2e8bbad3d483e82371606d100cc8604522', + decimals: 8 }, +{ symbol: 'OPT', + name: 'OPUS', + address: '0x4355fc160f74328f9b383df2ec589bb3dfd82ba0', + decimals: 18 }, +{ symbol: 'REM', + name: 'REMME', + address: '0x83984d6142934bb535793a82adb0a46ef0f66b6d', + decimals: 4 }, +{ symbol: 'DXT', + name: 'DataWallet Token', + address: '0x8db54ca569d3019a2ba126d03c37c44b5ef81ef6', + decimals: 8 }, +{ symbol: 'DAN', + name: 'DAN Token', + address: '0x9b70740e708a083c6ff38df52297020f5dfaa5ee', + decimals: 10 }, +{ symbol: 'TKT', + name: 'CryptoTickets COIN', + address: '0x233cea452c8b2e46f54d3772592edfeb8edbb763', + decimals: 18 }, +{ symbol: 'CRC', + name: 'Crycash', + address: '0xf41e5fbc2f6aac200dd8619e121ce1f05d150077', + decimals: 18 }, +{ symbol: 'HKN', + name: 'HACKEN', + address: '0x9e6b2b11542f2bc52f3029077ace37e8fd838d7f', + decimals: 8 }, +{ symbol: 'FSN', + name: 'Fusion Token', + address: '0xd0352a019e9ab9d757776f532377aaebd36fd541', + decimals: 18 }, +{ symbol: 'DTH', + name: 'Dether', + address: '0x5adc961d6ac3f7062d2ea45fefb8d8167d44b190', + decimals: 18 }, +{ symbol: 'X8X', + name: 'X8X Token', + address: '0x910dfc18d6ea3d6a7124a6f8b5458f281060fa4c', + decimals: 18 }, +{ symbol: 'MTRC', + name: 'ModulTrade', + address: '0x1e49ff77c355a3e38d6651ce8404af0e48c5395f', + decimals: 18 }, +{ symbol: 'ITC', + name: 'IoT Chain', + address: '0x5e6b6d9abad9093fdc861ea1600eba1b355cd940', + decimals: 18 }, +{ symbol: 'RFR', + name: 'Refereum', + address: '0xd0929d411954c47438dc1d871dd6081f5c5e149c', + decimals: 4 }, +{ symbol: 'FND', + name: 'FundRequest', + address: '0x4df47b4969b2911c966506e3592c41389493953b', + decimals: 18 }, +{ symbol: 'AUN', + name: 'Authoreon', + address: '0x5b7093fe2491dfb058c94bcd62a1cd4d822f884c', + decimals: 18 }, +{ symbol: 'NTK', + name: 'NeuroToken', + address: '0x69beab403438253f13b6e92db91f7fb849258263', + decimals: 18 }, +{ symbol: 'GEM', + name: 'Gems', + address: '0xc7bba5b765581efb2cdd2679db5bea9ee79b201f', + decimals: 18 }, +{ symbol: 'CS', + name: 'CREDITS', + address: '0x46b9ad944d1059450da1163511069c718f699d31', + decimals: 6 }, +{ symbol: 'DRG', + name: 'DRAGON', + address: '0x814f67fa286f7572b041d041b1d99b432c9155ee', + decimals: 8 }, +{ symbol: 'NGC', + name: 'NAGA', + address: '0x72dd4b6bd852a3aa172be4d6c5a6dbec588cf131', + decimals: 18 }, +{ symbol: 'MNTP', + name: 'Goldmint', + address: '0x83cee9e086a77e492ee0bb93c2b0437ad6fdeccc', + decimals: 18 }, +{ symbol: 'LION', + name: 'CoinLion', + address: '0x2167fb82309cf76513e83b25123f8b0559d6b48f', + decimals: 18 }, +{ symbol: 'LIF', + name: 'Lif', + address: '0xeb9951021698b42e4399f9cbb6267aa35f82d59d', + decimals: 18 }, +{ symbol: 'FKX', + name: 'KnoxsterToken', + address: '0x009e864923b49263c7f10d19b7f8ab7a9a5aad33', + decimals: 18 }, +{ symbol: 'STQ', + name: 'Storiqa', + address: '0x5c3a228510d246b78a3765c20221cbf3082b44a4', + decimals: 18 }, +{ symbol: 'UTK', + name: 'UTRUST', + address: '0x70a72833d6bf7f508c8224ce59ea1ef3d0ea3a38', + decimals: 18 }, +{ symbol: 'PRIX', + name: 'Privatix', + address: '0x3adfc4999f77d04c8341bac5f3a76f58dff5b37a', + decimals: 8 }, +{ symbol: 'SENT', + name: 'Sentinel', + address: '0xa44e5137293e855b1b7bc7e2c6f8cd796ffcb037', + decimals: 8 }, +{ symbol: 'EXY', + name: 'Experty', + address: '0x5c743a35e903f6c584514ec617acee0611cf44f3', + decimals: 18 }, +{ symbol: 'XNK', + name: 'Ink Protocol', + address: '0xbc86727e770de68b1060c91f6bb6945c73e10388', + decimals: 18 }, +{ symbol: 'DOCK', + name: 'Dock Token', + address: '0xe5dada80aa6477e85d09747f2842f7993d0df71c', + decimals: 18 }, +{ symbol: 'FT', + name: 'Fabric Token', + address: '0x78a73b6cbc5d183ce56e786f6e905cadec63547b', + decimals: 18 }, +{ symbol: 'FDZ', + name: 'Friendz Coin', + address: '0x23352036e911a22cfc692b5e2e196692658aded9', + decimals: 18 }, +{ symbol: 'SCT', + name: 'Soma Community Token', + address: '0x63b992e6246d88f07fc35a056d2c365e6d441a3d', + decimals: 18 }, +{ symbol: 'LALA', + name: 'LALA', + address: '0xfd107b473ab90e8fbd89872144a3dc92c40fa8c9', + decimals: 18 }, +{ symbol: 'ELEC', + name: 'ElectrifyAsia', + address: '0xd49ff13661451313ca1553fd6954bd1d9b6e02b9', + decimals: 18 }, +{ symbol: 'NCT', + name: 'Nectar', + address: '0x9e46a38f5daabe8683e10793b06749eef7d733d1', + decimals: 18 }, +{ symbol: 'LNC', + name: 'Lancer Token', + address: '0x63e634330a20150dbb61b15648bc73855d6ccf07', + decimals: 18 }, +{ symbol: 'J8T', + name: 'JET8 Token', + address: '0x0d262e5dc4a06a0f1c90ce79c7a60c09dfc884e4', + decimals: 8 }, +{ symbol: 'BANCA', + name: 'BANCA Token', + address: '0x998b3b82bc9dba173990be7afb772788b5acb8bd', + decimals: 18 }, +{ symbol: 'SENSE', + name: 'SENSE', + address: '0x6745fab6801e376cd24f03572b9c9b0d4edddccf', + decimals: 8 }, +{ symbol: 'SHIP', + name: 'ShipChain', + address: '0xe25b0bba01dc5630312b6a21927e578061a13f55', + decimals: 18 }, +{ symbol: 'TFD', + name: 'TE-FOOD', + address: '0xe5f166c0d8872b68790061317bb6cca04582c912', + decimals: 18 }, +{ symbol: 'AMB', + name: 'Amber Token', + address: '0x4dc3643dbc642b72c158e7f3d2ff232df61cb6ce', + decimals: 18 }, +{ symbol: 'BAX', + name: 'BABB', + address: '0x9a0242b7a33dacbe40edb927834f96eb39f8fbcb', + decimals: 18 }, +{ symbol: 'NPX', + name: 'NapoleonX', + address: '0x28b5e12cce51f15594b0b91d5b5adaa70f684a02', + decimals: 2 }, +{ symbol: 'VST', + name: 'Vestarin', + address: '0x552ed8253f341fb770e8badff5a0e0ee2fd57b43', + decimals: 18 }, +{ symbol: 'LOC', + name: 'LockChain', + address: '0x5e3346444010135322268a4630d2ed5f8d09446c', + decimals: 18 }, +{ symbol: 'BMH', + name: 'BlockMesh', + address: '0xf03045a4c8077e38f3b8e2ed33b8aee69edf869f', + decimals: 18 }, +{ symbol: 'NCASH', + name: 'Nucleus Vision', + address: '0x809826cceab68c387726af962713b64cb5cb3cca', + decimals: 18 }, +{ symbol: 'IGNX', + name: 'Ignite', + address: '0xafd8f91c4d7c2e3240f4154a1c596048035eb63c', + decimals: 18 }, +{ symbol: 'AMN', + name: 'Amon', + address: '0x737f98ac8ca59f2c68ad658e3c3d8c8963e40a4c', + decimals: 18 }, +{ symbol: 'YUP', + name: 'Crowdholding', + address: '0xd9a12cde03a86e800496469858de8581d3a5353d', + decimals: 18 }, +{ symbol: 'SENC', + name: 'Sentinel Chain', + address: '0xa13f0743951b4f6e3e3aa039f682e17279f52bc3', + decimals: 18 }, +{ symbol: 'LST', + name: 'Lendroid', + address: '0x4de2573e27e648607b50e1cfff921a33e4a34405', + decimals: 18 }, +{ symbol: 'BUBO', + name: 'Bubo', + address: '0xccbf21ba6ef00802ab06637896b799f7101f54a2', + decimals: 18 }, +{ symbol: 'ABX', + name: 'ABX Token', + address: '0x9a794dc1939f1d78fa48613b89b8f9d0a20da00e', + decimals: 18 }, +{ symbol: 'SKRP', + name: 'Skraps', + address: '0xfdfe8b7ab6cf1bd1e3d14538ef40686296c42052', + decimals: 18 }, +{ symbol: 'LOOM', + name: 'Loom', + address: '0xa4e8c3ec456107ea67d3075bf9e3df3a75823db0', + decimals: 18 }, +{ symbol: 'CCO', + name: 'Ccore Token', + address: '0x679badc551626e01b23ceecefbc9b877ea18fc46', + decimals: 18 }, +{ symbol: 'DAXT', + name: 'BlockEx', + address: '0x61725f3db4004afe014745b21dab1e1677cc328b', + decimals: 18 }, +{ symbol: 'BBC', + name: 'B2B Coin', + address: '0xe7d3e4413e29ae35b0893140f4500965c74365e5', + decimals: 18 }, +{ symbol: 'FSBT', + name: 'FSBT Tech', + address: '0x1ed7ae1f0e2fa4276dd7ddc786334a3df81d50c0', + decimals: 18 }, +{ symbol: 'BBN', + name: 'Banyan', + address: '0x35a69642857083ba2f30bfab735dacc7f0bac969', + decimals: 18 }, +{ symbol: 'ANN', + name: 'Agent Not Needed', + address: '0xe0e73e8fc3a0fa161695be1d75e1bc3e558957c4', + decimals: 18 }, +{ symbol: 'XBP', + name: 'BlitzPredict', + address: '0x28dee01d53fed0edf5f6e310bf8ef9311513ae40', + decimals: 18 }, +{ symbol: 'SEN', + name: 'Consensus Token', + address: '0xd53370acf66044910bb49cbcfe8f3cd020337f60', + decimals: 18 }, +{ symbol: 'CAPP', + name: 'Cappasity', + address: '0x04f2e7221fdb1b52a68169b25793e51478ff0329', + decimals: 2 }, +{ symbol: 'IPSX', + name: 'IP Exchange', + address: '0x001f0aa5da15585e5b2305dbab2bac425ea71007', + decimals: 18 }, +{ symbol: 'VIEW', + name: 'Viewly', + address: '0xf03f8d65bafa598611c3495124093c56e8f638f0', + decimals: 18 }, +{ symbol: 'OCN', + name: 'OCoin', + address: '0x4092678e4e78230f46a1534c0fbc8fa39780892b', + decimals: 18 }, +{ symbol: 'DROP', + name: 'Dropil', + address: '0x4672bad527107471cb5067a887f4656d585a8a31', + decimals: 18 }, +{ symbol: 'VIT', + name: 'Vice Industry Token', + address: '0x23b75bc7aaf28e2d6628c3f424b3882f8f072a3c', + decimals: 18 }, +{ symbol: 'ADH', + name: 'ADHIVE', + address: '0xe69a353b3152dd7b706ff7dd40fe1d18b7802d31', + decimals: 18 }, +{ symbol: 'XDCE', + name: 'XDCE', + address: '0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf2', + decimals: 18 }, +{ symbol: 'BERRY', + name: 'Rentberry', + address: '0x6aeb95f06cda84ca345c2de0f3b7f96923a44f4c', + decimals: 14 }, +{ symbol: 'MTC', + name: 'Medical Token Currency', + address: '0x905e337c6c8645263d3521205aa37bf4d034e745', + decimals: 18 }, +{ symbol: 'NAVI', + name: 'Navi Token', + address: '0x588047365df5ba589f923604aac23d673555c623', + decimals: 18 }, +{ symbol: 'MRK', + name: 'Mark Space', + address: '0xf453b5b9d4e0b5c62ffb256bb2378cc2bc8e8a89', + decimals: 8 }, +{ symbol: 'GBX', + name: 'Globitex Token', + address: '0x12fcd6463e66974cf7bbc24ffc4d40d6be458283', + decimals: 8 }, +{ symbol: 'LCD', + name: 'Lucyd', + address: '0x9a4059c1cf329a017e0ee1337c503137fd9463b2', + decimals: 18 }, +{ symbol: 'MFG', + name: 'SyncFab', + address: '0x6710c63432a2de02954fc0f851db07146a6c0312', + decimals: 18 }, +{ symbol: 'ADI', + name: 'Aditus', + address: '0x8810c63470d38639954c6b41aac545848c46484a', + decimals: 18 }, +{ symbol: 'CMS', + name: 'COMSA', + address: '0xf83301c5cd1ccbb86f466a6b3c53316ed2f8465a', + decimals: 6 }, +{ symbol: 'SMT3', + name: 'Sun Money Token', + address: '0xc761c8dc05ae52a8a785665e528ddbb00c098ad1', + decimals: 18 }, +{ symbol: 'ORI', + name: 'Origami Network', + address: '0xd2fa8f92ea72abb35dbd6deca57173d22db2ba49', + decimals: 18 }, +{ symbol: 'MITX', + name: 'Morpheus Labs Token', + address: '0x4a527d8fc13c5203ab24ba0944f4cb14658d1db6', + decimals: 18 }, +{ symbol: 'LND', + name: 'LendingBlock', + address: '0x0947b0e6d821378805c9598291385ce7c791a6b2', + decimals: 18 }, +{ symbol: 'AUC', + name: 'Auctus Token', + address: '0xc12d099be31567add4e4e4d0d45691c3f58f5663', + decimals: 18 }, +{ symbol: 'IVY', + name: 'IvyKoin', + address: '0xa4ea687a2a7f29cf2dc66b39c68e4411c0d00c49', + decimals: 18 }, +{ symbol: 'GET2', + name: 'Themis network', + address: '0x60c68a87be1e8a84144b543aacfa77199cd3d024', + decimals: 18 }, +{ symbol: 'UQC', + name: 'Uquid Coin', + address: '0xd01db73e047855efb414e6202098c4be4cd2423b', + decimals: 18 }, +{ symbol: 'ABYSS', + name: 'ABYSS', + address: '0x0e8d6b471e332f140e7d9dbb99e5e3822f728da6', + decimals: 18 }, +{ symbol: 'PAR', + name: 'Parachute', + address: '0x1beef31946fbbb40b877a72e4ae04a8d1a5cee06', + decimals: 18 }, +{ symbol: 'FTX', + name: 'FintruX Network', + address: '0xd559f20296ff4895da39b5bd9add54b442596a61', + decimals: 18 }, +{ symbol: 'ABT', + name: 'ArcBlock', + address: '0xb98d4c97425d9908e66e53a6fdf673acca0be986', + decimals: 18 }, +{ symbol: 'CEL', + name: 'Celsius', + address: '0xaaaebe6fe48e54f431b0c390cfaf0b017d09d42d', + decimals: 4 }, +{ symbol: 'NODE', + name: 'NODE', + address: '0xac956c72c262e5405a84dac655d5f3bea7ae9534', + decimals: 2 }, +{ symbol: 'IHT', + name: 'I HOUSE TOKEN', + address: '0xeda8b016efa8b1161208cf041cd86972eee0f31e', + decimals: 18 }, +{ symbol: 'VLD', + name: 'VETRI', + address: '0x922ac473a3cc241fd3a0049ed14536452d58d73c', + decimals: 18 }, +{ symbol: 'SS', + name: 'Sharder Chain', + address: '0xbbff862d906e348e9946bfb2132ecb157da3d4b4', + decimals: 18 }, +{ symbol: 'HBZ', + name: 'Helbiz', + address: '0xe34e1944e776f39b9252790a0527ebda647ae668', + decimals: 18 }, +{ symbol: 'SKCH', + name: 'Skychain Global Token', + address: '0x70c621f949b6556c4545707a2d5d73a776b98359', + decimals: 6 }, +{ symbol: 'ZCO', + name: 'Zebi Coin', + address: '0x2008e3057bd734e10ad13c9eae45ff132abc1722', + decimals: 8 }, +{ symbol: 'SHPING', + name: 'SHPING', + address: '0x7c84e62859d0715eb77d1b1c4154ecd6abb21bec', + decimals: 18 }, +{ symbol: 'HOT', + name: 'HoloToken', + address: '0x6c6ee5e31d828de241282b9606c8e98ea48526e2', + decimals: 18 }, +{ symbol: 'DML', + name: 'DecentralizedML', + address: '0xbcdfe338d55c061c084d81fd793ded00a27f226d', + decimals: 18 }, +{ symbol: 'APIS', + name: 'APIS', + address: '0x4c0fbe1bb46612915e7967d2c3213cd4d87257ad', + decimals: 18 }, +{ symbol: 'NBAI', + name: 'Nebula AI Token', + address: '0x17f8afb63dfcdcc90ebe6e84f060cc306a98257d', + decimals: 18 }, +{ symbol: 'XES', + name: 'PROXEUS', + address: '0xa017ac5fac5941f95010b12570b812c974469c2c', + decimals: 18 }, +{ symbol: 'GEN', + name: 'DAOstack', + address: '0x543ff227f64aa17ea132bf9886cab5db55dcaddf', + decimals: 18 }, +{ symbol: 'KRL', + name: 'Kryll', + address: '0x464ebe77c293e473b48cfe96ddcf88fcf7bfdac0', + decimals: 18 }, +{ symbol: 'TUSD', + name: 'True USD', + address: '0x8dd5fbce2f6a956c3022ba3663759011dd51e73e', + decimals: 18 }, +{ symbol: 'BZNT', + name: 'Bezant', + address: '0xe1aee98495365fc179699c1bb3e761fa716bee62', + decimals: 18 }, +{ symbol: 'WZI', + name: 'Wizzle Infinity Token', + address: '0xb8327f32127afe37a544c52b628653e222a93bad', + decimals: 18 }, +{ symbol: 'XTRD', + name: 'XTRD', + address: '0x9c794f933b4dd8b49031a79b0f924d68bef43992', + decimals: 18 }, +{ symbol: 'TKA', + name: 'Tokia Token', + address: '0xdae1baf249964bc4b6ac98c3122f0e3e785fd279', + decimals: 18 }, +{ symbol: 'UBT', + name: 'Unibright', + address: '0x8400d94a5cb0fa0d041a3788e395285d61c9ee5e', + decimals: 8 }, +{ symbol: 'EXRT', + name: 'EXRT', + address: '0xb20043f149817bff5322f1b928e89abfc65a9925', + decimals: 8 }, +{ symbol: 'CNN', + name: 'CNN Token', + address: '0x8713d26637cf49e1b6b4a7ce57106aabc9325343', + decimals: 18 }, +{ symbol: 'POA20', + name: 'POA Network', + address: '0x6758b7d441a9739b98552b373703d8d3d14f9e62', + decimals: 18 }, +{ symbol: 'SNTR', + name: 'SilentNotary', + address: '0x2859021ee7f2cb10162e67f33af2d22764b31aff', + decimals: 4 }, +{ symbol: 'FXT', + name: 'Fuzex', + address: '0x1829aa045e21e0d59580024a951db48096e01782', + decimals: 18 }, +{ symbol: 'BBK', + name: 'Brickblock Token', + address: '0x4a6058666cf1057eac3cd3a5a614620547559fc9', + decimals: 18 }, +{ symbol: 'WYS', + name: 'wys Token', + address: '0xd8950fdeaa10304b7a7fd03a2fc66bc39f3c711a', + decimals: 18 }, +{ symbol: 'SGN', + name: 'Signals Network Token', + address: '0xb2135ab9695a7678dd590b1a996cb0f37bcb0718', + decimals: 9 }, +{ symbol: 'CLN', + name: 'Colu Local Network', + address: '0x4162178b78d6985480a308b2190ee5517460406d', + decimals: 18 }, +{ symbol: 'LBA', + name: 'Libra Credit', + address: '0xfe5f141bf94fe84bc28ded0ab966c16b17490657', + decimals: 18 }, +{ symbol: 'CEDEX', + name: 'CEDEX Token', + address: '0xf4065e4477e91c177ded71a7a6fb5ee07dc46bc9', + decimals: 18 }, +{ symbol: 'HER', + name: 'HeroNode Token', + address: '0x491c9a23db85623eed455a8efdd6aba9b911c5df', + decimals: 18 }, +{ symbol: 'ELI', + name: 'EligmaToken', + address: '0xc7c03b8a3fc5719066e185ea616e87b88eba44a3', + decimals: 18 }, +{ symbol: 'SNOV', + name: 'Snovio', + address: '0xbdc5bac39dbe132b1e030e898ae3830017d7d969', + decimals: 18 }, +{ symbol: 'HYDRO', + name: 'HYDRO', + address: '0xebbdf302c940c6bfd49c6b165f457fdb324649bc', + decimals: 18 }, +{ symbol: 'IPL', + name: 'InsurePal', + address: '0x64cdf819d3e75ac8ec217b3496d7ce167be42e80', + decimals: 18 }, +{ symbol: 'FACE', + name: 'Faceter Token', + address: '0x1ccaa0f2a7210d76e1fdec740d5f323e2e1b1672', + decimals: 18 }, +{ symbol: 'LUC', + name: 'Play2live', + address: '0x5dbe296f97b23c4a6aa6183d73e574d02ba5c719', + decimals: 18 }, +{ symbol: 'TTV', + name: 'Token for Television', + address: '0xa838be6e4b760e6061d4732d6b9f11bf578f9a76', + decimals: 18 }, +{ symbol: 'XYO', + name: 'XY Oracle', + address: '0x55296f69f40ea6d20e478533c15a6b08b654e758', + decimals: 18 }, +{ symbol: 'BTT', + name: 'Blocktrade', + address: '0xfa456cf55250a839088b27ee32a424d7dacb54ff', + decimals: 18 }, +{ symbol: 'BBO', + name: 'Bigbom', + address: '0x84f7c44b6fed1080f647e354d552595be2cc602f', + decimals: 18 }, +{ symbol: 'PRYZ', + name: 'Pryze', + address: '0x6b834f43b7f5a1644e0c81caa0246969da23105e', + decimals: 18 }, +{ symbol: 'DTRC', + name: 'Datarius Credit', + address: '0xc20464e0c373486d2b3335576e83a218b1618a5e', + decimals: 18 }, +{ symbol: 'IOTX', + name: 'IoTeX Network', + address: '0x6fb3e0a217407efff7ca062d46c26e5d60a14d69', + decimals: 18 }, +{ symbol: 'RTE', + name: 'Rate3', + address: '0x436f0f3a982074c4a05084485d421466a994fe53', + decimals: 18 }, +{ symbol: 'ETK', + name: 'EnergiToken', + address: '0x3c4a3ffd813a107febd57b2f01bc344264d90fde', + decimals: 2 }, +{ symbol: 'SEELE', + name: 'Seele', + address: '0xb1eef147028e9f480dbc5ccaa3277d417d1b85f0', + decimals: 18 }, +{ symbol: 'IND', + name: 'Indorse', + address: '0xf8e386eda857484f5a12e4b5daa9984e06e73705', + decimals: 18 }, +{ symbol: 'OMX', + name: 'Omix', + address: '0xb5dbc6d3cf380079df3b27135664b6bcf45d1869', + decimals: 8 }, +{ symbol: 'WEB', + name: 'Webcoin', + address: '0x840fe75abfadc0f2d54037829571b2782e919ce4', + decimals: 18 }, +{ symbol: 'IQN', + name: 'IQeon', + address: '0x0db8d8b76bc361bacbb72e2c491e06085a97ab31', + decimals: 18 }, +{ symbol: 'XCD', + name: 'Capdax', + address: '0xca00bc15f67ebea4b20dfaaa847cace113cc5501', + decimals: 18 }, +{ symbol: 'EDR', + name: 'Endor Protocol Token', + address: '0xc528c28fec0a90c083328bc45f587ee215760a0f', + decimals: 18 }, +{ symbol: 'PI', + name: 'PCHAIN', + address: '0xb9bb08ab7e9fa0a1356bd4a39ec0ca267e03b0b3', + decimals: 18 }, +{ symbol: 'BETEX', + name: 'BETEX', + address: '0xbd270f9a96ed49a1c82055a22ad9b8eec564097f', + decimals: 18 }, +{ symbol: 'VME', + name: 'VeriME', + address: '0xc343f099d3e41aa5c1b59470450e21e92e2d840b', + decimals: 18 }, +{ symbol: 'ECOM', + name: 'Omnitude', + address: '0x171d750d42d661b62c277a6b486adb82348c3eca', + decimals: 18 }, +{ symbol: 'MRP', + name: 'MoneyRebel', + address: '0x21f0f0fd3141ee9e11b3d7f13a1028cd515f459c', + decimals: 18 }, +{ symbol: 'BKRX', + name: 'BlockRx Digital Token', + address: '0x3cf9e0c385a5abec9fd2a71790aa344c4e8e3570', + decimals: 18 }, +{ symbol: 'CEEK', + name: 'CEEK', + address: '0xb056c38f6b7dc4064367403e26424cd2c60655e1', + decimals: 18 }, +{ symbol: 'ICNQ', + name: 'Iconiq Lab Token', + address: '0xb3e2cb7cccfe139f8ff84013823bf22da6b6390a', + decimals: 18 }, +{ symbol: 'COU', + name: 'Couchain', + address: '0xf091cf09c51811819db705710e9634b8bf18f164', + decimals: 18 }, +{ symbol: 'ZCN', + name: '0chain', + address: '0xb9ef770b6a5e12e45983c5d80545258aa38f3b78', + decimals: 10 }, +{ symbol: 'BIT', + name: 'Bitrewards', + address: '0x47da42696a866cdc61a4c809a515500a242909c1', + decimals: 18 }, +{ symbol: '0XBTC', + name: '0xBitcoin', + address: '0xb6ed7644c69416d67b522e20bc294a9a9b405b31', + decimals: 8 }, +{ symbol: 'QKC', + name: 'QuarkChain Token', + address: '0xea26c4ac16d4a5a106820bc8aee85fd0b7b2b664', + decimals: 18 }, +{ symbol: 'BITCAR', + name: 'BitCar', + address: '0x08b4c866ae9d1be56a06e0c302054b4ffe067b43', + decimals: 8 }, +{ symbol: 'LAN', + name: 'FreelancerCoin', + address: '0x64ff248ddd36430e3640fbea76999941a8bccbd7', + decimals: 18 }, +{ symbol: 'MVL', + name: 'Mass Vehicle Ledger', + address: '0xa849eaae994fb86afa73382e9bd88c2b6b18dc71', + decimals: 18 }, +{ symbol: 'METM', + name: 'MetaMorph', + address: '0xfef3884b603c33ef8ed4183346e093a173c94da6', + decimals: 18 }, +{ symbol: 'GMR', + name: 'GIMMER', + address: '0x9b8d5f3402f74c7a61d9f09c32d3ca07b45c1466', + decimals: 18 }, +{ symbol: 'PCO', + name: 'Pecunio', + address: '0xf5b815344641412401d8e868790dbd125e6761ca', + decimals: 8 }, +{ symbol: 'OMG', + name: 'OmiseGO', + address: '0xd26114cd6ee289accf82350c8d8487fedb8a0c07', + decimals: 18 }, +{ symbol: 'FMF', + name: 'Formosa Financial', + address: '0xb4d0fdfc8497aef97d3c2892ae682ee06064a2bc', + decimals: 18 }, +{ symbol: 'WT', + name: 'WeToken', + address: '0xaae81c0194d6459f320b70ca0cedf88e11a242ce', + decimals: 18 }, +{ symbol: 'CUZ', + name: 'Cool Cousin', + address: '0xf832484f0c9f6b7cd5c945488899035467508a5d', + decimals: 18 }, +{ symbol: 'MYB', + name: 'MyBit', + address: '0x5d60d8d7ef6d37e16ebabc324de3be57f135e0bc', + decimals: 18 }, +{ symbol: 'RMESH', + name: 'RightMesh', + address: '0x8d5682941ce456900b12d47ac06a88b47c764ce1', + decimals: 18 }, +{ symbol: 'CBC', + name: 'CashBetCoin', + address: '0x26db5439f651caf491a87d48799da81f191bdb6b', + decimals: 8 }, +{ symbol: 'OWN', + name: 'OwnData', + address: '0x170b275ced089fffaebfe927f445a350ed9160dc', + decimals: 8 }, +{ symbol: 'CFTY', + name: 'Crafty', + address: '0x6956983f8b3ce173b4ab84361aa0ad52f38d936f', + decimals: 8 }, +{ symbol: 'SPN', + name: 'Sapien Network', + address: '0x20f7a3ddf244dc9299975b4da1c39f8d5d75f05a', + decimals: 6 }, +{ symbol: 'HOLD', + name: 'HOLD', + address: '0xd6e1401a079922469e9b965cb090ea6ff64c6839', + decimals: 18 }, +{ symbol: 'WBT', + name: 'Whalesburg Token', + address: '0xe2ee1ac57b2e5564522b2de064a47b3f98b0e9c9', + decimals: 18 }, +{ symbol: 'MOT', + name: 'Mount Olympus Token', + address: '0x263c618480dbe35c300d8d5ecda19bbb986acaed', + decimals: 18 }, +{ symbol: 'ATMI', + name: 'Atonomi', + address: '0x97aeb5066e1a590e868b511457beb6fe99d329f5', + decimals: 18 }, +{ symbol: 'MVP', + name: 'Merculet', + address: '0x8a77e40936bbc27e80e9a3f526368c967869c86d', + decimals: 18 }, +{ symbol: '000', + name: 'Not a real coin', + address: '0xadc46ff5434910bd17b24ffb429e585223287d7f', + decimals: 8 }, +{ symbol: 'KYT', + name: 'Keyrpto Token', + address: '0x532843f66375d5257ea34f723c6c2723ccf7b7a2', + decimals: 18 }, +{ symbol: 'UPP', + name: 'Sentinel Protocol', + address: '0xc86d054809623432210c107af2e3f619dcfbf652', + decimals: 18 }, +{ symbol: 'SNX', + name: 'Synthetix Network', + address: '0xc011a72400e58ecd99ee497cf89e3775d4bd732f', + decimals: 18 }, +{ symbol: 'DGX', + name: 'Digix Gold', + address: '0x4f3afec4e5a3f2a6a1a411def7d7dfe50ee057bf', + decimals: 9 }, +{ symbol: 'PST', + name: 'Primas', + address: '0x5d4abc77b8405ad177d8ac6682d584ecbfd46cec', + decimals: 18 }, +{ symbol: 'TEN', + name: 'TOKENOMY', + address: '0xdd16ec0f66e54d453e6756713e533355989040e4', + decimals: 18 }, +{ symbol: 'AUTO', + name: 'CUBE', + address: '0x622dffcc4e83c64ba959530a5a5580687a57581b', + decimals: 18 }, +{ symbol: 'THRT', + name: 'Thrive', + address: '0x4f27053f32eda8af84956437bc00e5ffa7003287', + decimals: 18 }, +{ symbol: 'TGAME', + name: 'Truegame', + address: '0xf8e06e4e4a80287fdca5b02dccecaa9d0954840f', + decimals: 18 }, +{ symbol: 'LIKE', + name: 'LikeCoin', + address: '0x02f61fd266da6e8b102d4121f5ce7b992640cf98', + decimals: 18 }, +{ symbol: 'DAG', + name: 'Constellation', + address: '0xa8258abc8f2811dd48eccd209db68f25e3e34667', + decimals: 8 }, +{ symbol: 'LCK', + name: 'LuckCash', + address: '0x82adce3b6a226f9286af99841410b04a075b54d5', + decimals: 18 }, +{ symbol: 'PMA', + name: 'PumaPay', + address: '0x846c66cf71c43f80403b51fe3906b3599d63336f', + decimals: 18 }, +{ symbol: 'ZINC', + name: 'Zinc', + address: '0x4aac461c86abfa71e9d00d9a2cde8d74e4e1aeea', + decimals: 18 }, +{ symbol: 'DAV', + name: 'DAV Network', + address: '0xd82df0abd3f51425eb15ef7580fda55727875f14', + decimals: 18 }, +{ symbol: 'OLT', + name: 'OneLedger', + address: '0x64a60493d888728cf42616e034a0dfeae38efcf0', + decimals: 18 }, +{ symbol: 'MEDX', + name: 'MediBloc', + address: '0xfd1e80508f243e64ce234ea88a5fd2827c71d4b7', + decimals: 8 }, +{ symbol: 'VITE', + name: 'VITE', + address: '0x1b793e49237758dbd8b752afc9eb4b329d5da016', + decimals: 18 }, +{ symbol: 'MET', + name: 'Metronome', + address: '0xa3d58c4e56fedcae3a7c43a725aee9a71f0ece4e', + decimals: 18 }, +{ symbol: 'QNT', + name: 'Quant', + address: '0x4a220e6096b25eadb88358cb44068a3248254675', + decimals: 18 }, +{ symbol: 'C8', + name: 'Carboneum', + address: '0xd42debe4edc92bd5a3fbb4243e1eccf6d63a4a5d', + decimals: 18 }, +{ symbol: 'DIW', + name: 'DIW Token', + address: '0xa253be28580ae23548a4182d95bf8201c28369a8', + decimals: 18 }, +{ symbol: 'TTC', + name: 'TTC Protocol', + address: '0x9389434852b94bbad4c8afed5b7bdbc5ff0c2275', + decimals: 18 }, +{ symbol: 'BOB', + name: 'Bobs Repair', + address: '0xdf347911910b6c9a4286ba8e2ee5ea4a39eb2134', + decimals: 18 }, +{ symbol: 'EGT', + name: 'Egretia', + address: '0x8e1b448ec7adfc7fa35fc2e885678bd323176e34', + decimals: 18 }, +{ symbol: 'ELY', + name: 'Elysian', + address: '0xa95592dcffa3c080b4b40e459c5f5692f67db7f8', + decimals: 18 }, +{ symbol: 'PITCH', + name: 'PITCH', + address: '0x87f56ee356b434187105b40f96b230f5283c0ab4', + decimals: 9 }, +{ symbol: 'MRPH', + name: 'Morpheus Network', + address: '0x7b0c06043468469967dba22d1af33d77d44056c8', + decimals: 4 }, +{ symbol: 'AIC', + name: 'Akaiito', + address: '0x7ca936344d234034cf6936472d6bedbe8ae6667f', + decimals: 18 }, +{ symbol: 'BST', + name: 'Blocksquare Token', + address: '0x509a38b7a1cc0dcd83aa9d06214663d9ec7c7f4a', + decimals: 18 }, +{ symbol: 'GOT', + name: 'GoToken', + address: '0x423b5f62b328d0d6d44870f4eee316befa0b2df5', + decimals: 18 }, +{ symbol: 'VAI', + name: 'VIOLET', + address: '0xd4078bdb652610ad5383a747d130cbe905911102', + decimals: 18 }, +{ symbol: 'MFT', + name: 'Mainframe', + address: '0xdf2c7238198ad8b389666574f2d8bc411a4b7428', + decimals: 18 }, +{ symbol: 'ZXC', + name: '0xcert Protocol', + address: '0x83e2be8d114f9661221384b3a50d24b96a5653f5', + decimals: 18 }, +{ symbol: 'ESS', + name: 'ESSENTIA', + address: '0xfc05987bd2be489accf0f509e44b0145d68240f7', + decimals: 18 }, +{ symbol: 'BITX', + name: 'BitScreenerToken', + address: '0xff2b3353c3015e9f1fbf95b9bda23f58aa7ce007', + decimals: 18 }, +{ symbol: 'REP', + name: 'Augur', + address: '0x1985365e9f78359a9b6ad760e32412f4a445e862', + decimals: 18 }, +{ symbol: 'ZIPT', + name: 'Zippie', + address: '0xedd7c94fd7b4971b916d15067bc454b9e1bad980', + decimals: 18 }, +{ symbol: 'EBC', + name: 'EBCoin', + address: '0x31f3d9d1bece0c033ff78fa6da60a6048f3e13c5', + decimals: 18 }, +{ symbol: 'BOX', + name: 'ContentBox Token', + address: '0x63f584fa56e60e4d0fe8802b27c7e6e3b33e007f', + decimals: 18 }, +{ symbol: 'PNK', + name: 'Kleros', + address: '0x93ed3fbe21207ec2e8f2d3c3de6e058cb73bc04d', + decimals: 18 }, +{ symbol: 'R', + name: 'Revain', + address: '0x48f775efbe4f5ece6e0df2f7b5932df56823b990', + decimals: 0 }, +{ symbol: 'NCC', + name: 'NeuroChain', + address: '0x5d48f293baed247a2d0189058ba37aa238bd4725', + decimals: 18 }, +{ symbol: 'HYB', + name: 'Hybrid Block', + address: '0x6059f55751603ead7dc6d280ad83a7b33d837c90', + decimals: 18 }, +{ symbol: 'ALTX', + name: 'Alttex', + address: '0xb1ed41dc1fe9b723a31137afdd1201d17917fe91', + decimals: 8 }, +{ symbol: 'INCX', + name: 'InternationalCryptoX', + address: '0xa984a92731c088f1ea4d53b71a2565a399f7d8d5', + decimals: 18 }, +{ symbol: 'AXPR', + name: 'aXpire', + address: '0xc39e626a04c5971d770e319760d7926502975e47', + decimals: 18 }, +{ symbol: 'GARD', + name: 'Hashgard', + address: '0x5c64031c62061865e5fd0f53d3cdaef80f72e99d', + decimals: 18 }, +{ symbol: 'SEAL', + name: 'Seal Network', + address: '0xd7b3669c7d3e38ab5a441383d41f25e003e02148', + decimals: 18 }, +{ symbol: 'VIKKY', + name: 'Vikky', + address: '0xd2946be786f35c3cc402c29b323647abda799071', + decimals: 8 }, +{ symbol: 'SNR', + name: 'Sonder', + address: '0x47d1a59cbdd19aee060c859c0009277e245328ae', + decimals: 18 }, +{ symbol: 'DACC', + name: 'DACC', + address: '0xf8c595d070d104377f58715ce2e6c93e49a87f3c', + decimals: 6 }, +{ symbol: 'SAT', + name: 'Satisfaction Token', + address: '0x92736b3bff1bbd72a72478d78f18a6ab9b68b791', + decimals: 18 }, +{ symbol: 'CONTRACTIUM', + name: 'CTU', + address: '0x943aca8ed65fbf188a7d369cfc2bee0ae435ee1b', + decimals: 18 }, +{ symbol: 'PDX', + name: 'PDX', + address: '0x5f33d158ca7275848f70a3f149b421190df85b32', + decimals: 18 }, +{ symbol: 'T2T', + name: 'Traceto', + address: '0xe6824483e279d967ea6f8472ace7585862fa1185', + decimals: 18 }, +{ symbol: 'NTK2', + name: 'Netkoin', + address: '0x5d4d57cd06fa7fe99e26fdc481b468f77f05073c', + decimals: 18 }, +{ symbol: 'SET', + name: 'Swytch Energy', + address: '0xfa75b65e52a6cbc5503f45f4abba2c5df4688875', + decimals: 18 }, +{ symbol: 'PKG', + name: 'PKG Token', + address: '0x02f2d4a04e6e01ace88bd2cd632875543b2ef577', + decimals: 18 }, +{ symbol: 'ACAD', + name: 'Academy', + address: '0x1efc4dfd580df95426a0f04848870bd8cb5a338e', + decimals: 18 }, +{ symbol: 'XD', + name: 'Data Transaction Token', + address: '0x24dcc881e7dd730546834452f21872d5cb4b5293', + decimals: 18 }, +{ symbol: 'ONG', + name: 'onG.social', + address: '0xd341d1680eeee3255b8c4c75bcce7eb57f144dae', + decimals: 18 }, +{ symbol: 'EMTV', + name: 'Multiversum', + address: '0x07a7ed332c595b53a317afcee50733af571475e7', + decimals: 18 }, +{ symbol: 'BNC', + name: 'Bionic', + address: '0xef51c9377feb29856e61625caf9390bd0b67ea18', + decimals: 8 }, +{ symbol: 'MFTU', + name: 'MFTU', + address: '0x05d412ce18f24040bb3fa45cf2c69e506586d8e8', + decimals: 18 }, +{ symbol: 'ROX', + name: 'Robotina', + address: '0x574f84108a98c575794f75483d801d1d5dc861a5', + decimals: 18 }, +{ symbol: 'DX', + name: 'DXChain', + address: '0x973e52691176d36453868d9d86572788d27041a9', + decimals: 18 }, +{ symbol: 'IG', + name: 'IG', + address: '0x8a88f04e0c905054d2f33b26bb3a46d7091a039a', + decimals: 18 }, +{ symbol: 'AVINOC', + name: 'AVINOC', + address: '0xf1ca9cb74685755965c7458528a36934df52a3ef', + decimals: 18 }, +{ symbol: 'VXV', + name: 'Vectorspace AI', + address: '0x7d29a64504629172a429e64183d6673b9dacbfce', + decimals: 18 }, +{ symbol: 'TALAO', + name: 'TALAO', + address: '0x1d4ccc31dab6ea20f461d329a0562c1c58412515', + decimals: 18 }, +{ symbol: 'KIND', + name: 'Kind Ads', + address: '0x4618519de4c304f3444ffa7f812dddc2971cc688', + decimals: 8 }, +{ symbol: 'SVD', + name: 'savedroid', + address: '0xbdeb4b83251fb146687fa19d1c660f99411eefe3', + decimals: 18 }, +{ symbol: 'BNN', + name: 'BrokerNekoNetwork', + address: '0xda80b20038bdf968c7307bb5907a469482cf6251', + decimals: 8 }, +{ symbol: 'FTT', + name: 'Farmatrust', + address: '0x2aec18c5500f21359ce1bea5dc1777344df4c0dc', + decimals: 18 }, +{ symbol: 'ABL', + name: 'Airbloc', + address: '0xf8b358b3397a8ea5464f8cc753645d42e14b79ea', + decimals: 18 }, +{ symbol: 'ABLX', + name: 'ABLE', + address: '0x865bfd8232778f00cae81315bf75ef1fe6e30cdd', + decimals: 18 }, +{ symbol: 'BEAT', + name: 'BEAT', + address: '0x2fb12bccf6f5dd338b76be784a93ade072425690', + decimals: 18 }, +{ symbol: 'CDT', + name: 'Blox', + address: '0x177d39ac676ed1c67a2b268ad7f1e58826e5b0af', + decimals: 18 }, +{ symbol: 'OIO', + name: 'online.io', + address: '0xa3efef1a1e3d1ad72b9d0f4253e7c9c084c2c08b', + decimals: 18 }, +{ symbol: 'MUXE', + name: 'MUXE', + address: '0x515669d308f887fd83a471c7764f5d084886d34d', + decimals: 18 }, +{ symbol: 'DIP', + name: 'Etherisc', + address: '0xc719d010b63e5bbf2c0551872cd5316ed26acd83', + decimals: 18 }, +{ symbol: 'FTEC', + name: 'FTEC', + address: '0x6bec54e4fea5d541fb14de96993b8e11d81159b2', + decimals: 18 }, +{ symbol: 'UBEX', + name: 'UBEX', + address: '0x6704b673c70de9bf74c8fba4b4bd748f0e2190e1', + decimals: 18 }, +{ symbol: 'CST', + name: 'CryptosolarTech', + address: '0xbb49a51ee5a66ca3a8cbe529379ba44ba67e6771', + decimals: 18 }, +{ symbol: 'HAND', + name: 'SHOWHAND', + address: '0x48c1b2f3efa85fbafb2ab951bf4ba860a08cdbb7', + decimals: 0 }, +{ symbol: 'GENE', + name: 'GeneSourceCodeChain', + address: '0x884181554dfa9e578d36379919c05c25dc4a15bb', + decimals: 18 }, +{ symbol: 'FTXT', + name: 'FUTURAX', + address: '0x41875c2332b0877cdfaa699b641402b7d4642c32', + decimals: 8 }, +{ symbol: 'UUU', + name: 'UNetworkToken', + address: '0x3543638ed4a9006e4840b105944271bcea15605d', + decimals: 18 }, +{ symbol: 'DIT', + name: 'Inmediate', + address: '0xf14922001a2fb8541a433905437ae954419c2439', + decimals: 8 }, +{ symbol: 'BKU', + name: 'Blocktek University', + address: '0x60b5aa3334185d72eed79ac5ffc9870e98f502eb', + decimals: 18 }, +{ symbol: 'TILE', + name: 'Loomia Tile', + address: '0x25f735b108b4273fb0aceb87599ed8bba10065de', + decimals: 18 }, +{ symbol: 'UBC', + name: 'Ubcoin', + address: '0x2d3e7d4870a51b918919e7b851fe19983e4c38d5', + decimals: 18 }, +{ symbol: 'SKYFT', + name: 'SKYFchain', + address: '0x5dd0815a4cf119ad91ba045bbbf879f3f7de3c68', + decimals: 18 }, +{ symbol: 'USE', + name: 'UseChain Token', + address: '0xd9485499499d66b175cf5ed54c0a19f1a6bcb61a', + decimals: 18 }, +{ symbol: 'KIT', + name: 'KitToken', + address: '0x080eb7238031f97ff011e273d6cad5ad0c2de532', + decimals: 18 }, +{ symbol: 'ARCONA', + name: 'ARCONA', + address: '0x0f71b8de197a1c84d31de0f1fa7926c365f052b3', + decimals: 18 }, +{ symbol: 'SURE', + name: 'Surety Token', + address: '0x95382ac82e886a367bac9e1e23beabe569bcfed8', + decimals: 6 }, +{ symbol: 'TIP', + name: 'TIP', + address: '0x59ae863232238a8bd7953bdfc1b4796f8e9a5b4e', + decimals: 18 }, +{ symbol: 'HAVY', + name: 'Havy', + address: '0x7c2e5b7ec572199d3841f6a38f7d4868bd0798f1', + decimals: 8 }, +{ symbol: 'EEE', + name: 'Elementh token', + address: '0x4c567c3363cc42c5a42c6d8bf01503fd1d0b91cd', + decimals: 18 }, +{ symbol: 'CARD', + name: 'Cardstack', + address: '0x954b890704693af242613edef1b603825afcd708', + decimals: 18 }, +{ symbol: 'NPXS', + name: 'Pundi X', + address: '0xa15c7ebe1f07caf6bff097d8a589fb8ac49ae5b3', + decimals: 18 }, +{ symbol: 'EDN', + name: 'EdenCoin', + address: '0x05860d453c7974cbf46508c06cba14e211c629ce', + decimals: 18 }, +{ symbol: 'IHF', + name: 'Invictus Hyperion', + address: '0xaf1250fa68d7decd34fd75de8742bc03b29bd58e', + decimals: 18 }, +{ symbol: '3DES', + name: '3DES Token', + address: '0x115e7b7ecdd9792d6995cb426b2ef4d6119682a7', + decimals: 18 }, +{ symbol: 'UBBEY', + name: 'UBBEY', + address: '0x6cb1c2b61e24ad08bf5fff4d2b13ea987d211a88', + decimals: 18 }, +{ symbol: 'TBE', + name: 'TowerBee', + address: '0xb3c61539af156438951ea6cd48756d22a48fce62', + decimals: 18 }, +{ symbol: 'UCN', + name: 'UChain Token', + address: '0xaaf37055188feee4869de63464937e683d61b2a1', + decimals: 18 }, +{ symbol: 'MAS', + name: 'Midas Protocol', + address: '0x23ccc43365d9dd3882eab88f43d515208f832430', + decimals: 18 }, +{ symbol: 'DEC', + name: 'Darico Ecosystem Coin', + address: '0x89c6c856a6db3e46107163d0cda7a7ff211bd655', + decimals: 18 }, +{ symbol: 'TXN', + name: 'Traxion', + address: '0xaaf099a16cb37dfdaffc1a169f6e99f41aaaf75c', + decimals: 18 }, +{ symbol: 'USDC', + name: 'USD//Coin', + address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', + decimals: 6 }, +{ symbol: 'BIO', + name: 'BioCrypt', + address: '0xf18432ef894ef4b2a5726f933718f5a8cf9ff831', + decimals: 8 }, +{ symbol: 'S', + name: 'Sharpay', + address: '0x96b0bf939d9460095c15251f71fda11e41dcbddb', + decimals: 18 }, +{ symbol: 'TOL', + name: 'Tolar ', + address: '0xd07d9fe2d2cc067015e2b4917d24933804f42cfa', + decimals: 18 }, +{ symbol: 'ODEM', + name: 'ODEM', + address: '0xbf52f2ab39e26e0951d2a02b49b7702abe30406a', + decimals: 18 }, +{ symbol: 'XMOO', + name: 'MOO Token', + address: '0x221535cbced4c264e53373d81b73c29d010832a5', + decimals: 18 }, +{ symbol: 'MTCN', + name: 'Multicoin', + address: '0xf6117cc92d7247f605f11d4c942f0feda3399cb5', + decimals: 18 }, +{ symbol: 'PEP', + name: 'Peptoken', + address: '0xbb0ef9e617faddf54b8d16e29046f72b4d3ec77f', + decimals: 18 }, +{ symbol: 'UAC', + name: 'Ubiatar Coin', + address: '0x4297a285db467eb779fcc45f69a169bd8dccd0e9', + decimals: 18 }, +{ symbol: 'ONE', + name: 'Menlo Token', + address: '0x4d807509aece24c0fa5a102b6a3b059ec6e14392', + decimals: 18 }, +{ symbol: 'ALT', + name: 'Alt.Estate Token', + address: '0x419b8ed155180a8c9c64145e76dad49c0a4efb97', + decimals: 18 }, +{ symbol: 'JSE', + name: 'JSECOIN', + address: '0x2d184014b5658c453443aa87c8e9c4d57285620b', + decimals: 18 }, +{ symbol: 'AMO', + name: 'AMO Coin', + address: '0x38c87aa89b2b8cd9b95b736e1fa7b612ea972169', + decimals: 18 }, +{ symbol: 'TYPE', + name: 'Typerium', + address: '0xeaf61fc150cd5c3bea75744e830d916e60ea5a9f', + decimals: 4 }, +{ symbol: 'VOCO', + name: 'VOCO', + address: '0xb5ca46cf1da09248126682a7bd72401fd7a6b151', + decimals: 18 }, +{ symbol: 'FTM', + name: 'Fantom', + address: '0x4e15361fd6b4bb609fa63c81a2be19d873717870', + decimals: 18 }, +{ symbol: 'LQD', + name: 'Liquid', + address: '0xd29f0b5b3f50b07fe9a9511f7d86f4f4bac3f8c4', + decimals: 18 }, +{ symbol: 'PSK', + name: 'Pool of Stake Token', + address: '0x1c5f43710a1776b0ea7191b7ead75d4b98d69858', + decimals: 18 }, +{ symbol: 'POR', + name: 'Proof of Review Token', + address: '0x08c507046e12cd1538741d067d28411f2b922062', + decimals: 18 }, +{ symbol: 'WORK', + name: 'Aworker Token', + address: '0xa686514faf7d54289266f483d1e4852c99e13ec7', + decimals: 8 }, +{ symbol: 'VIU', + name: 'Viuly Token', + address: '0x464baddce9bd32581a7d59d9bb8350c7c7764668', + decimals: 18 }, +{ symbol: 'COIN', + name: 'Coinvest', + address: '0xeb547ed1d8a3ff1461abaa7f0022fed4836e00a4', + decimals: 18 }, +{ symbol: 'PEG', + name: 'Peg Network Token', + address: '0x8ae56a6850a7cbeac3c3ab2cb311e7620167eac8', + decimals: 18 }, +{ symbol: 'WCT', + name: 'Wealth Chain Token', + address: '0xff2ce8a8589e5de40ecb564604714025f3d1819d', + decimals: 18 }, +{ symbol: 'REDC', + name: 'RedCab', + address: '0xb563300a3bac79fc09b93b6f84ce0d4465a2ac27', + decimals: 18 }, +{ symbol: 'TVND', + name: 'TrueVND', + address: '0x3dc0501c32bee0cc1e629d590302a4b909797474', + decimals: 18 }, +{ symbol: 'ZEON', + name: 'ZEON', + address: '0xe5b826ca2ca02f09c1725e9bd98d9a8874c30532', + decimals: 18 }, +{ symbol: 'HEAL', + name: 'Etheal Token', + address: '0x6bd26bb09c992e09d2156b48f723e56e52eead9c', + decimals: 18 }, +{ symbol: 'AWC', + name: 'Atomic Wallet Token', + address: '0xad22f63404f7305e4713ccbd4f296f34770513f4', + decimals: 8 }, +{ symbol: 'MBT', + name: 'Metabase', + address: '0x599c49b932f08707888791a9b55949e385a00aeb', + decimals: 18 }, +{ symbol: 'KWH', + name: 'KWHCoin', + address: '0xb8ddc930c2bab6c71610a2be639036e829f9c10b', + decimals: 18 }, +{ symbol: 'FOAM', + name: 'FOAM Token', + address: '0x4946fcea7c692606e8908002e55a582af44ac121', + decimals: 18 }, +{ symbol: 'MXC', + name: 'MXC Token', + address: '0x5ca381bbfb58f0092df149bd3d243b08b9a8386e', + decimals: 18 }, +{ symbol: 'LPT', + name: 'LivePeer Token', + address: '0x58b6a8a3302369daec383334672404ee733ab239', + decimals: 18 }, +{ symbol: 'CMCT', + name: 'Crowd Machine Compute Token', + address: '0x47bc01597798dcd7506dcca36ac4302fc93a8cfb', + decimals: 8 }, +{ symbol: 'FXP', + name: 'FXPay', + address: '0x14ddda446688b73161aa1382f4e4343353af6fc8', + decimals: 8 }, +{ symbol: 'EXO', + name: 'EXOLOVER', + address: '0xe58e751aba3b9406367b5f3cbc39c2fa9b519789', + decimals: 18 }, +{ symbol: 'ECHT', + name: 'ECHAT TOKEN', + address: '0x1a2277c83930b7a64c3e3d5544eaa8c4f946b1b7', + decimals: 18 }, +{ symbol: 'KAT', + name: 'Kambria Token', + address: '0xa858bc1b71a895ee83b92f149616f9b3f6afa0fb', + decimals: 18 }, +{ symbol: 'TDP', + name: 'TrueDeck', + address: '0x5b11aacb6bddb9ffab908fdce739bf4aed554327', + decimals: 18 }, +{ symbol: 'TDT', + name: 'Trident', + address: '0x4eea6844a4dc5bf3127decf034b3f4a7211ef2e7', + decimals: 18 }, +{ symbol: 'DBLK', + name: 'DataOnBlock', + address: '0x526ccc90191a9472299323816bd2c784c0a1bcde', + decimals: 18 }, +{ symbol: 'UTS', + name: 'Utemis', + address: '0x979ebc09e55ea0ab563cf7175e4c4b1a03afc19a', + decimals: 18 }, +{ symbol: 'BOUNCY', + name: 'BouncyCoinToken', + address: '0xe9f9547c17fc9539df99a42dcb6ec38165994c45', + decimals: 18 }, +{ symbol: 'ATF', + name: 'AgroTechFarm', + address: '0x014e42ae89b24738591e2f695e1ef6d95bd38619', + decimals: 18 }, +{ symbol: 'GMB', + name: 'GAMB', + address: '0xa0008f510fe9ee696e7e320c9e5cbf61e27791ee', + decimals: 18 }, +{ symbol: 'HBX', + name: 'Hyperbridge Token', + address: '0x2793a23341012e0970cf478bab08606b56504c3e', + decimals: 18 }, +{ symbol: 'LIQUID', + name: 'Netkoin Liquid', + address: '0xac2385e183d9301dd5e2bb08da932cbf9800dc9c', + decimals: 18 }, +{ symbol: 'XCHF', + name: 'CryptoFranc', + address: '0xb4272071ecadd69d933adcd19ca99fe80664fc08', + decimals: 18 }, +{ symbol: 'BNFT', + name: 'Benefits Coin', + address: '0xda2c424fc98c741c2d4ef2f42897cefed897ca75', + decimals: 9 }, +{ symbol: 'NKN', + name: 'NKN', + address: '0x5cf04716ba20127f1e2297addcf4b5035000c9eb', + decimals: 18 }, +{ symbol: 'TVNT', + name: 'TravelNote', + address: '0x5635ddeabf9cdda686995fe90beb5411831563fc', + decimals: 8 }, +{ symbol: 'COVA', + name: 'Covalent Token', + address: '0xb37a769b37224449d92aac57de379e1267cd3b00', + decimals: 18 }, +{ symbol: 'LTO', + name: 'LTO Network Token', + address: '0x3db6ba6ab6f95efed1a6e794cad492faaabf294d', + decimals: 8 }, +{ symbol: 'FRECNX', + name: 'FreldoCoinX', + address: '0xd8b8e1eca89da014e67fdbc2014eaa8e171079bf', + decimals: 18 }, +{ symbol: 'STASH', + name: 'BitStash', + address: '0x965f109d31ccb77005858defae0ebaf7b4381652', + decimals: 18 }, +{ symbol: 'FOXT', + name: 'Fox Trading', + address: '0xfbe878ced08132bd8396988671b450793c44bc12', + decimals: 18 }, +{ symbol: 'EVR', + name: 'Everus', + address: '0x3137619705b5fc22a3048989f983905e456b59ab', + decimals: 8 }, +{ symbol: 'WBTC', + name: 'Bitcoin', + address: '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599', + decimals: 8 }, +{ symbol: 'XLG', + name: 'Ledgerium', + address: '0x598c9a4f069dc076984868873c01e78a905d50e6', + decimals: 8 }, +{ symbol: 'BETHER', + name: 'Bethereum', + address: '0x14c926f2290044b647e1bf2072e67b495eff1905', + decimals: 18 }, +{ symbol: 'SPRING', + name: 'Spring Token', + address: '0xfb0bdc444c8ae7e9b5beea5e4d1e8de93879e487', + decimals: 18 }, +{ symbol: 'ZCC', + name: 'ZeroCarbon', + address: '0x6737fe98389ffb356f64ebb726aa1a92390d94fb', + decimals: 18 }, +{ symbol: 'WMB', + name: 'WatermelonBloc Tokens', + address: '0x7a18919f0b05fa5e91f3ef43afe8a72105c9d4b8', + decimals: 6 }, +{ symbol: 'CCC', + name: 'Container Crypto Coin', + address: '0x9e3359f862b6c7f5c660cfd6d1aa6909b1d9504d', + decimals: 18 }, +{ symbol: 'VNT', + name: 'Vanta Token', + address: '0xdcc27bbaa14cafd8a6aeb847e1b01c5dffb70935', + decimals: 18 }, +{ symbol: 'COT', + name: 'CoTrader', + address: '0x5c872500c00565505f3624ab435c222e558e9ff8', + decimals: 18 }, +{ symbol: 'HXRO', + name: 'Hxro', + address: '0x4bd70556ae3f8a6ec6c4080a0c327b24325438f3', + decimals: 18 }, +{ symbol: 'PFR', + name: 'PayFair Token', + address: '0xb41422d5a1d5d5c73c229686935b40f881502785', + decimals: 8 }, +{ symbol: 'INNBCL', + name: 'InnovativeBioresearchClassic', + address: '0x8cc3e2bdc17682c622eb789eda23fbd6988c84da', + decimals: 10 }, +{ symbol: 'BIRD', + name: 'BirdCoin', + address: '0x026e62dded1a6ad07d93d39f96b9eabd59665e0d', + decimals: 18 }, +{ symbol: 'FXC', + name: 'Flexacoin', + address: '0x4a57e687b9126435a9b19e4a802113e266adebde', + decimals: 18 }, +{ symbol: 'UGAS', + name: 'UltrainGas', + address: '0x8716fc5da009d3a208f0178b637a50f4ef42400f', + decimals: 18 }, +{ symbol: 'ARR', + name: 'ARROUND', + address: '0xcb089b8ae76b5df461d40e957603f7a59aea9e0d', + decimals: 18 }, +{ symbol: 'NRP', + name: 'Neural Protocol', + address: '0x3918c42f14f2eb1168365f911f63e540e5a306b5', + decimals: 8 }, +{ symbol: 'PLA', + name: 'PlayChip', + address: '0x0198f46f520f33cd4329bd4be380a25a90536cd5', + decimals: 18 }, +{ symbol: 'IMT', + name: 'Money Token', + address: '0x13119e34e140097a507b07a5564bde1bc375d9e6', + decimals: 18 }, +{ symbol: 'CCN', + name: 'CustomContractNetwork', + address: '0x17b26400621695c2d8c2d8869f6259e82d7544c4', + decimals: 18 }, +{ symbol: 'FET', + name: 'Fetch', + address: '0x1d287cc25dad7ccaf76a26bc660c5f7c8e2a05bd', + decimals: 18 }, +{ symbol: 'TASH', + name: 'TripCash', + address: '0x002f06abe6995fd0ea4be011c53bfc989fa53ce0', + decimals: 18 }, +{ symbol: 'WBBC', + name: 'Wibcoin', + address: '0x195a179bbfe539bb8a485d944ac60d3a0329f0ec', + decimals: 18 }, +{ symbol: 'DAGT', + name: 'DAGT', + address: '0x56d1ae30c97288da4b58bc39f026091778e4e316', + decimals: 18 }, +{ symbol: 'IMPCN', + name: 'IMPERIVMCoin', + address: '0x1d2aee5eaf5e4352965b710293513a5ad99796ff', + decimals: 6 }, +{ symbol: 'PCL', + name: 'Peculium', + address: '0x0f02e27745e3b6e9e1310d19469e2b5d7b5ec99a', + decimals: 8 }, +{ symbol: 'HUDDL', + name: 'Huddl', + address: '0x5137a403dd25e48de528912a4af62881e625d801', + decimals: 18 }, +{ symbol: 'ANKR', + name: 'Ankr Network', + address: '0x8290333cef9e6d528dd5618fb97a76f268f3edd4', + decimals: 18 }, +{ symbol: 'LED', + name: 'Terrawatt', + address: '0x93c9291523cb95c0eb0bc379b0483f4d7fc05072', + decimals: 18 }, +{ symbol: 'VIDT', + name: 'V-ID Token', + address: '0x445f51299ef3307dbd75036dd896565f5b4bf7a5', + decimals: 18 }, +{ symbol: 'SHK', + name: 'Shook', + address: '0xebe4a49df7885d015329c919bf43e6460a858f1e', + decimals: 18 }, +{ symbol: 'MESG', + name: 'MESG', + address: '0x420167d87d35c3a249b32ef6225872fbd9ab85d2', + decimals: 18 }, +{ symbol: 'PMNT', + name: 'Paymon', + address: '0x81b4d08645da11374a03749ab170836e4e539767', + decimals: 9 }, +{ symbol: 'UND', + name: 'United Network Distribution', + address: '0xbe6ac6b50f577205c9d107f37b6e205aa6acc5d4', + decimals: 18 }, +{ symbol: 'CRO', + name: 'Crypto.com Chain', + address: '0xa0b73e1ff0b80914ab6fe0444e65848c4c34450b', + decimals: 8 }, +{ symbol: 'BEZ', + name: 'Bezop', + address: '0x8a1e3930fde1f151471c368fdbb39f3f63a65b55', + decimals: 18 }, +{ symbol: 'AERGO', + name: 'AERGO', + address: '0xae31b85bfe62747d0836b82608b4830361a3d37a', + decimals: 18 }, +{ symbol: 'BTMX', + name: 'BitMax Token', + address: '0x1c289a12a8552b314d0d153d6991fd27a54aa640', + decimals: 18 }, +{ symbol: 'USDS', + name: 'StableUSD', + address: '0xa4bdb11dc0a2bec88d24a3aa1e6bb17201112ebe', + decimals: 6 }, +{ symbol: 'PAX', + name: 'Paxos Standard Token', + address: '0x8e870d67f660d95d5be530380d0ec0bd388289e1', + decimals: 18 }, +{ symbol: 'CSP', + name: 'Caspian', + address: '0xa6446d655a0c34bc4f05042ee88170d056cbaf45', + decimals: 18 }, +{ symbol: 'ZAP', + name: 'ZAP', + address: '0x6781a0f84c7e9e846dcb84a9a5bd49333067b104', + decimals: 18 }, +{ symbol: 'CYFM', + name: 'CYBERFM', + address: '0x3f06b5d78406cd97bdf10f5c420b241d32759c80', + decimals: 18 }, +{ symbol: 'W12', + name: 'W12.io', + address: '0xbf799a2f71d020a4a8c10e7406e2bf970b3d734b', + decimals: 18 }, +{ symbol: 'UDOO', + name: 'Howdoo', + address: '0x0df721639ca2f7ff0e1f618b918a65ffb199ac4e', + decimals: 18 }, +{ symbol: 'TGBP', + name: 'TrueGBP', + address: '0x00000000441378008ea67f4284a57932b1c000a5', + decimals: 18 }, +{ symbol: 'NFC', + name: 'NoFakeCoin', + address: '0xb0866289e870d2efc282406cf4123df6e5bcb652', + decimals: 18 }, +{ symbol: 'WETC', + name: 'WETC', + address: '0x86aabcc646f290b9fc9bd05ce17c3858d1511da1', + decimals: 18 }, +{ symbol: 'WHEN', + name: 'WHEN Token', + address: '0xf4fe95603881d0e07954fd7605e0e9a916e42c44', + decimals: 18 }, +{ symbol: 'BLOC', + name: 'Blockcloud', + address: '0x6f919d67967a97ea36195a2346d9244e60fe0ddb', + decimals: 18 }, +{ symbol: 'LIT', + name: 'LITION', + address: '0x763fa6806e1acf68130d2d0f0df754c93cc546b2', + decimals: 18 }, +{ symbol: 'HGO', + name: 'HireGo', + address: '0xaaa89105dab822dbc9a6de64a23d045d99d5fd36', + decimals: 18 }, +{ symbol: 'BUD', + name: 'BUDDY', + address: '0x57652fc91f522f9eff0b38cdf1d51f5fb5764215', + decimals: 18 }, +{ symbol: 'MOVI', + name: 'MoviToken', + address: '0x06f979e4f04ec565ae8d7479a94c60def8846832', + decimals: 6 }, +{ symbol: 'SNTVT', + name: 'Sentivate', + address: '0x7865af71cf0b288b4e7f654f4f7851eb46a2b7f8', + decimals: 18 }, +{ symbol: 'XBASE', + name: 'Eterbase Coin', + address: '0x4d13d624a87baa278733c068a174412afa9ca6c8', + decimals: 18 }, +{ symbol: 'NOW', + name: 'ChangeNOW', + address: '0xe9a95d175a5f4c9369f3b74222402eb1b837693b', + decimals: 8 }, +{ symbol: 'CUSD', + name: 'Carbon', + address: '0x1410d4ec3d276c0ebbf16ccbe88a4383ae734ed0', + decimals: 18 }, +{ symbol: 'ORBS', + name: 'Orbs', + address: '0xff56cc6b1e6ded347aa0b7676c85ab0b3d08b0fa', + decimals: 18 }, +{ symbol: 'RC20', + name: 'RoboCalls', + address: '0x61b2d3ea9f1c6b387c985c73d40e8fbfb284e5c7', + decimals: 18 }, +{ symbol: 'AER', + name: 'Aeryus Token', + address: '0xac4d22e40bf0b8ef4750a99ed4e935b99a42685e', + decimals: 18 }, +{ symbol: 'ORME', + name: 'Ormeus Coin', + address: '0xc96df921009b790dffca412375251ed1a2b75c60', + decimals: 8 }, +{ symbol: 'MATIC', + name: 'Matic Token', + address: '0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0', + decimals: 18 }, +{ symbol: 'RC', + name: 'ReceiptCoin', + address: '0xd6e49800decb64c0e195f791348c1e87a5864fd7', + decimals: 9 }, +{ symbol: 'ZNT', + name: 'Zenswap Network Token', + address: '0x4fa000df40c06fc8c7d9179661535846b7cd4f87', + decimals: 18 }, +{ symbol: 'IDEX', + name: 'IDEX Token', + address: '0xb705268213d593b8fd88d3fdeff93aff5cbdcfae', + decimals: 18 }, +{ symbol: 'EURS', + name: 'STASIS EURS', + address: '0xdb25f211ab05b1c97d595516f45794528a807ad8', + decimals: 2 }, +{ symbol: 'MBL', + name: 'MovieBloc', + address: '0xb879da8b24c9b8685de8526cf492e954f165d74b', + decimals: 18 }, +{ symbol: 'CRE', + name: 'Carry Token', + address: '0x115ec79f1de567ec68b7ae7eda501b406626478e', + decimals: 18 }, +{ symbol: 'RSR', + name: 'Reserve Rights', + address: '0x8762db106b2c2a0bccb3a80d1ed41273552616e8', + decimals: 18 }, +{ symbol: 'SSN', + name: 'SuperSkyNet', + address: '0xa5b46ff9a887180c8fb2d97146398ddfc5fef1cd', + decimals: 18 }, +{ symbol: 'BQQQ', + name: 'BITSDAQ', + address: '0x1b80eeeadcc590f305945bcc258cfa770bbe1890', + decimals: 18 }, +{ symbol: 'SMT', + name: 'Smathium', + address: '0x4b4787aace23eb70da046bcc0ccfe28d4e4fb899', + decimals: 18 }, +{ symbol: 'XNS', + name: 'Xeonbit Token', + address: '0x79c71d3436f39ce382d0f58f1b011d88100b9d91', + decimals: 18 }, +{ symbol: 'CHR', + name: 'CHROMA', + address: '0x915044526758533dfb918eceb6e44bc21632060d', + decimals: 6 }, +{ symbol: 'STPT', + name: 'Standard Tokenization Protocol', + address: '0xde7d85157d9714eadf595045cc12ca4a5f3e2adb', + decimals: 18 }, +{ symbol: 'VNC', + name: 'Vincoin Cash', + address: '0xdf413690fb785e56895551cc21086a15b6e90386', + decimals: 8 }, +{ symbol: 'JAR', + name: 'Jarvis+ Coins', + address: '0xa249de6948022783765fee4850d7b85e43118fcc', + decimals: 18 }, +{ symbol: 'AQU', + name: 'Aquest Token', + address: '0x7756edf05ef3c2b321a85d77b5cbf7c8a9a7c247', + decimals: 18 }, +{ symbol: 'CHZ', + name: 'chiliZ', + address: '0x3506424f91fd33084466f402d5d97f05f8e3b4af', + decimals: 18 }, +{ symbol: 'ESH', + name: 'Switch', + address: '0xdf329603bd378021698f9833cd5205b52f9e370e', + decimals: 18 }, +{ symbol: 'EQUAD', + name: 'Quadrant Protocol', + address: '0xc28e931814725bbeb9e670676fabbcb694fe7df2', + decimals: 18 }, +{ symbol: 'TFB', + name: 'TrueFeedBack', + address: '0x79cdfa04e3c4eb58c4f49dae78b322e5b0d38788', + decimals: 18 }, +{ symbol: 'COTI', + name: 'COTI Token', + address: '0xddb3422497e61e13543bea06989c0789117555c5', + decimals: 18 }, +{ symbol: 'XCT', + name: 'xCrypt Token', + address: '0xd2bb16cf38ca086cab5128d5c25de9477ebd596b', + decimals: 18 }, +{ symbol: 'URAC', + name: 'Uranus', + address: '0xff8be4b22cedc440591dcb1e641eb2a0dd9d25a5', + decimals: 18 }, +{ symbol: 'ENK', + name: 'Enkronos Token', + address: '0x92b914f1ddcbb1d117a718e83c9ed7eb32fc44d1', + decimals: 18 }, +{ symbol: 'EUULA', + name: 'Uulala', + address: '0x26de40bffafe73ff4e37089b2c71e35fd02eb1a7', + decimals: 2 }, +{ symbol: 'POLL', + name: 'ClearPoll', + address: '0x705ee96c1c160842c92c1aecfcffccc9c412e3d9', + decimals: 18 }, +{ symbol: 'LGO', + name: 'LGO Token', + address: '0x0a50c93c762fdd6e56d86215c24aaad43ab629aa', + decimals: 8 }, +{ symbol: '1UP', + name: 'Uptrennd', + address: '0x07597255910a51509ca469568b048f2597e72504', + decimals: 18 }, +] diff --git a/server/src/tokens/index.js b/server/src/tokens/index.js new file mode 100644 index 0000000..52f843a --- /dev/null +++ b/server/src/tokens/index.js @@ -0,0 +1,4 @@ +const idex = require("./idex"); +const uniswap = require("./uniswap"); + +module.exports = [...idex, ...uniswap]; diff --git a/server/src/tokens/uniswap.js b/server/src/tokens/uniswap.js new file mode 100644 index 0000000..c4c665a --- /dev/null +++ b/server/src/tokens/uniswap.js @@ -0,0 +1,1436 @@ +module.exports = [ + { + symbol: "WETH", + name: "WETH", + address: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + decimals: 18 + }, + { + symbol: "DAI", + name: "Dai", + address: "0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359", + decimals: 18 + }, + { + symbol: "WBTC", + name: "Wrapped Bitcoin", + address: "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", + decimals: 8 + }, + { + symbol: "TKN", + name: "TokenCard", + address: "0xaaaf91d9b90df800df4f55c205fd6989c977e73a", + decimals: 8 + }, + { + symbol: "SPANK", + name: "SpankChain", + address: "0x42d6622dece394b54999fbd73d108123806f6a18", + decimals: 18 + }, + { + symbol: "BAT", + name: "Basic Attention Token", + address: "0x0d8775f648430679a709e98d2b0cb6250d2887ef", + decimals: 18 + }, + { + symbol: "XCHF", + name: "CryptoFranc", + address: "0xb4272071ecadd69d933adcd19ca99fe80664fc08", + decimals: 18 + }, + { + symbol: "REP", + name: "Augur", + address: "0x1985365e9f78359a9b6ad760e32412f4a445e862", + decimals: 18 + }, + { + symbol: "DGX", + name: "Digix Gold Token", + address: "0x4f3afec4e5a3f2a6a1a411def7d7dfe50ee057bf", + decimals: 9 + }, + { + symbol: "USDC", + name: "USD Coin", + address: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + decimals: 6 + }, + { + symbol: "ANT", + name: "Aragon", + address: "0x960b236a07cf122663c4303350609a66a7b288c0", + decimals: 18 + }, + { + symbol: "GNO", + name: "Gnosis", + address: "0x6810e776880c02933d47db1b9fc05908e5386b96", + decimals: 18 + }, + { + symbol: "ZRX", + name: "0x", + address: "0xe41d2489571d322189246dafa5ebde1f4699f498", + decimals: 18 + }, + { + symbol: "LINK", + name: "Chainlink", + address: "0x514910771af9ca656af840dff83e8264ecf986ca", + decimals: 18 + }, + { + symbol: "FUN", + name: "FunFair", + address: "0x419d0d8bdd9af5e606ae2232ed285aff190e711b", + decimals: 8 + }, + { + symbol: "SNT", + name: "Status", + address: "0x744d70fdbe2ba4cf95131626614a1763df805b9e", + decimals: 18 + }, + { + symbol: "PNK", + name: "Kleros", + address: "0x93ed3fbe21207ec2e8f2d3c3de6e058cb73bc04d", + decimals: 18 + }, + { + symbol: "NMR", + name: "Numeraire", + address: "0x1776e1f26f98b1a5df9cd347953a26dd3cb46671", + decimals: 18 + }, + { + symbol: "RLC", + name: "iExec RLC", + address: "0x607f4c5bb672230e8672085532f7e901544a7375", + decimals: 9 + }, + { + symbol: "NEXO", + name: "Nexo", + address: "0xb62132e35a6c13ee1ee0f84dc5d40bad8d815206", + decimals: 18 + }, + { + symbol: "HOT", + name: "Holo", + address: "0x6c6ee5e31d828de241282b9606c8e98ea48526e2", + decimals: 18 + }, + { + symbol: "BNT", + name: "Bancor", + address: "0x1f573d6fb3f13d689ff844b4ce37794d79a7ff1c", + decimals: 18 + }, + { + symbol: "RDN", + name: "Raiden Network Token", + address: "0x255aa6df07540cb5d3d297f0d0d4d84cb52bc8e6", + decimals: 18 + }, + { + symbol: "LOOM", + name: "Loom Network", + address: "0xa4e8c3ec456107ea67d3075bf9e3df3a75823db0", + decimals: 18 + }, + { + symbol: "RPL", + name: "Rocket Pool", + address: "0xb4efd85c19999d84251304bda99e90b92300bd93", + decimals: 18 + }, + { + symbol: "DGD", + name: "DigixDAO", + address: "0xe0b7927c4af23765cb51314a0e0521a9645f0e2a", + decimals: 9 + }, + { + symbol: "BLT", + name: "Bloom", + address: "0x107c4504cd79c5d2696ea0030a8dd4e92601b82e", + decimals: 18 + }, + { + symbol: "KNC", + name: "Kyber Network", + address: "0xdd974d5c2e2928dea5f71b9825b8b646686bd200", + decimals: 18 + }, + { + symbol: "GRID", + name: "Grid+", + address: "0x12b19d3e2ccc14da04fae33e63652ce469b3f2fd", + decimals: 12 + }, + { + symbol: "MANA", + name: "Decentraland", + address: "0x0f5d2fb29fb7d3cfee444a200298f468908cc942", + decimals: 18 + }, + { + symbol: "RCN", + name: "Ripio Credit Network", + address: "0xf970b8e36e23f7fc3fd752eea86f8be8d83375a6", + decimals: 18 + }, + { + symbol: "LRC", + name: "Loopring", + address: "0xbbbbca6a901c926f240b89eacb641d8aec7aeafd", + decimals: 18 + }, + { + symbol: "GEN", + name: "DAOstack", + address: "0x543ff227f64aa17ea132bf9886cab5db55dcaddf", + decimals: 18 + }, + { + symbol: "FOAM", + name: "FOAM", + address: "0x4946fcea7c692606e8908002e55a582af44ac121", + decimals: 18 + }, + { + symbol: "AMPL", + name: "Ampleforth", + address: "0xd46ba6d942050d489dbd938a2c909a5d5039a161", + decimals: 9 + }, + { + symbol: "ENJ", + name: "Enjin Coin", + address: "0xf629cbd94d3791c9250152bd8dfbdf380e2a3b9c", + decimals: 18 + }, + { + symbol: "FTX", + name: "FintruX Network", + address: "0xd559f20296ff4895da39b5bd9add54b442596a61", + decimals: 18 + }, + { + symbol: "STORJ", + name: "Storj", + address: "0xb64ef51c888972c908cfacf59b47c1afbc0ab8ac", + decimals: 8 + }, + { + symbol: "TRST", + name: "WeTrust", + address: "0xcb94be6f13a1182e4a4b6140cb7bf2025d28e41b", + decimals: 6 + }, + { + symbol: "C20", + name: "CRYPTO20", + address: "0x26e75307fc0c021472feb8f727839531f112f317", + decimals: 18 + }, + { + symbol: "FT", + name: "Fabric Token", + address: "0x78a73b6cbc5d183ce56e786f6e905cadec63547b", + decimals: 18 + }, + { + symbol: "LPT", + name: "Livepeer", + address: "0x58b6a8a3302369daec383334672404ee733ab239", + decimals: 18 + }, + { + symbol: "SWT", + name: "Swarm City", + address: "0xb9e7f8568e08d5659f5d29c4997173d84cdf2607", + decimals: 18 + }, + { + symbol: "0xBTC", + name: "0xBitcoin", + address: "0xb6ed7644c69416d67b522e20bc294a9a9b405b31", + decimals: 8 + }, + { + symbol: "FND", + name: "FundRequest", + address: "0x4df47b4969b2911c966506e3592c41389493953b", + decimals: 18 + }, + { + symbol: "LEO", + name: "UNUS SED LEO", + address: "0x2af5d2ad76741191d15dfe7bf6ac92d4bd912ca3", + decimals: 18 + }, + { + symbol: "FXC", + name: "Flexacoin", + address: "0x4a57e687b9126435a9b19e4a802113e266adebde", + decimals: 18 + }, + { + symbol: "REQ", + name: "Request", + address: "0x8f8221afbb33998d8584a2b05749ba73c37a938a", + decimals: 18 + }, + { + symbol: "BEE", + name: "Bee Token", + address: "0x4d8fc1453a0f359e99c9675954e656d80d996fbf", + decimals: 18 + }, + { + symbol: "REN", + name: "Ren", + address: "0x408e41876cccdc0f92210600ef50372656052a38", + decimals: 18 + }, + { + symbol: "STX", + name: "Stox", + address: "0x006bea43baa3f7a6f765f14f10a1a1b08334ef45", + decimals: 18 + }, + { + symbol: "SALT", + name: "SALT", + address: "0x4156d3342d5c385a87d264f90653733592000581", + decimals: 8 + }, + { + symbol: "LQD", + name: "Liquidity Network", + address: "0xD29F0b5b3F50b07Fe9a9511F7d86F4f4bAc3f8c4", + decimals: 18 + }, + { + symbol: "DATA", + name: "Streamr DATAcoin", + address: "0x0cf0ee63788a0849fe5297f3407f701e122cc023", + decimals: 18 + }, + { + symbol: "XD", + name: "Data Transaction Token", + address: "0x24dcc881e7dd730546834452f21872d5cb4b5293", + decimals: 18 + }, + { + symbol: "DNT", + name: "district0x", + address: "0x0abdace70d3790235af448c88547603b945604ea", + decimals: 18 + }, + { + symbol: "KIN", + name: "Kin", + address: "0x818fc6c2ec5986bc6e2cbf00939d90556ab12ce5", + decimals: 18 + }, + { + symbol: "AMN", + name: "Amon", + address: "0x737f98ac8ca59f2c68ad658e3c3d8c8963e40a4c", + decimals: 18 + }, + { + symbol: "CVC", + name: "Civic", + address: "0x41e5560054824ea6b0732e656e3ad64e20e94e45", + decimals: 8 + }, + { + symbol: "QSP", + name: "Quantstamp", + address: "0x99ea4db9ee77acd40b119bd1dc4e33e1c070b80d", + decimals: 18 + }, + { + symbol: "LST", + name: "Lendroid Support Token", + address: "0x4de2573e27e648607b50e1cfff921a33e4a34405", + decimals: 18 + }, + { + symbol: "CAN", + name: "CanYaCoin", + address: "0x1d462414fe14cf489c7a21cac78509f4bf8cd7c0", + decimals: 6 + }, + { + symbol: "DICE", + name: "Etheroll", + address: "0x2e071D2966Aa7D8dECB1005885bA1977D6038A65", + decimals: 16 + }, + { + symbol: "IOTX", + name: "IoTeX", + address: "0x6fb3e0a217407efff7ca062d46c26e5d60a14d69", + decimals: 18 + }, + { + symbol: "SNX", + name: "Synthetix Network Token", + address: "0xc011a72400e58ecd99ee497cf89e3775d4bd732f", + decimals: 18 + }, + { + symbol: "UFR", + name: "Upfiring", + address: "0xea097a2b1db00627b2fa17460ad260c016016977", + decimals: 18 + }, + { + symbol: "RLX", + name: "Relex", + address: "0x4a42d2c580f83dce404acad18dab26db11a1750e", + decimals: 18 + }, + { + symbol: "AST", + name: "AirSwap", + address: "0x27054b13b1b798b345b591a4d22e6562d47ea75a", + decimals: 4 + }, + { + symbol: "DOS", + name: "DOS Network", + address: "0x70861e862e1ac0c96f853c8231826e469ead37b1", + decimals: 18 + }, + { + symbol: "ELET", + name: "Elementeum", + address: "0x6c37bf4f042712c978a73e3fd56d1f5738dd7c43", + decimals: 18 + }, + { + symbol: "MFT", + name: "Mainframe", + address: "0xdf2c7238198ad8b389666574f2d8bc411a4b7428", + decimals: 18 + }, + { + symbol: "MYB", + name: "MyBit", + address: "0x5d60d8d7ef6d37e16ebabc324de3be57f135e0bc", + decimals: 18 + }, + { + symbol: "PMA", + name: "PumaPay", + address: "0x846c66cf71c43f80403b51fe3906b3599d63336f", + decimals: 18 + }, + { + symbol: "SETH", + name: "Sether", + address: "0x78b039921e84e726eb72e7b1212bb35504c645ca", + decimals: 18 + }, + { + symbol: "SUB", + name: "Substratum", + address: "0x8D75959f1E61EC2571aa72798237101F084DE63a", + decimals: 18 + }, + { + symbol: "BNTY", + name: "Bounty0x", + address: "0xd2d6158683aee4cc838067727209a0aaf4359de3", + decimals: 18 + }, + { + symbol: "POWR", + name: "Power Ledger", + address: "0x595832f8fc6bf59c85c527fec3740a1b7a361269", + decimals: 6 + }, + { + symbol: "NOW", + name: "NOW Token", + address: "0xe9a95d175a5f4c9369f3b74222402eb1b837693b", + decimals: 8 + }, + { + symbol: "GUSD", + name: "Gemini Dollar", + address: "0x056Fd409E1d7A124BD7017459dFEa2F387b6d5Cd", + decimals: 2 + }, + { + symbol: "OST", + name: "OST", + address: "0x2c4e8f2d746113d0696ce89b35f0d8bf88e0aeca", + decimals: 18 + }, + { + symbol: "EDG", + name: "Edgeless", + address: "0x08711d3b02c8758f2fb3ab4e80228418a7f8e39c", + decimals: 0 + }, + { + symbol: "ETHPLO", + name: "ETHplode", + address: "0xe0c6ce3e73029f201e5c0bedb97f67572a93711c", + decimals: 6 + }, + { + symbol: "PAX", + name: "Paxos Standard Token", + address: "0x8e870d67f660d95d5be530380d0ec0bd388289e1", + decimals: 18 + }, + { + symbol: "DRGN", + name: "Dragonchain", + address: "0x419c4db4b9e25d6db2ad9691ccb832c8d9fda05e", + decimals: 18 + }, + { + symbol: "NPXS", + name: "Pundi X", + address: "0xa15c7ebe1f07caf6bff097d8a589fb8ac49ae5b3", + decimals: 18 + }, + { + symbol: "ART", + name: "Maecenas", + address: "0xfec0cf7fe078a500abf15f1284958f22049c2c7e", + decimals: 18 + }, + { + symbol: "WAX", + name: "WAX", + address: "0x39Bb259F66E1C59d5ABEF88375979b4D20D98022", + decimals: 8 + }, + { + symbol: "BTU", + name: "BTU Protocol", + address: "0xb683d83a532e2cb7dfa5275eed3698436371cc9f", + decimals: 18 + }, + { + symbol: "MET", + name: "Metronome", + address: "0xa3d58c4e56fedcae3a7c43a725aee9a71f0ece4e", + decimals: 18 + }, + { + symbol: "EOST", + name: "EOST TRUST", + address: "0x87210f1d3422ba75b6c40c63c78d79324dabcd55", + decimals: 18 + }, + { + symbol: "EVN", + name: "Envion", + address: "0xd780ae2bf04cd96e577d3d014762f831d97129d0", + decimals: 18 + }, + { + symbol: "ETHOS", + name: "Ethos", + address: "0x5af2be193a6abca9c8817001f45744777db30756", + decimals: 8 + }, + { + symbol: "DALC", + name: "Dalecoin", + address: "0x07d9e49ea402194bf48a8276dafb16e4ed633317", + decimals: 8 + }, + { + symbol: "CRED", + name: "Verify", + address: "0x672a1ad4f667fb18a333af13667aa0af1f5b5bdd", + decimals: 18 + }, + { + symbol: "KEY", + name: "Selfkey", + address: "0x4cc19356f2d37338b9802aa8e8fc58b0373296e7", + decimals: 18 + }, + { + symbol: "LIKE", + name: "LikeCoin", + address: "0x02f61fd266da6e8b102d4121f5ce7b992640cf98", + decimals: 18 + }, + { + symbol: "PRG", + name: "Paragon", + address: "0x7728dFEF5aBd468669EB7f9b48A7f70a501eD29D", + decimals: 6 + }, + { + symbol: "CLM", + name: "Claymore", + address: "0x0ed8343dfdee32e38b4c4ce15a3b00a59e90f3db", + decimals: 18 + }, + { + symbol: "STORM", + name: "Storm", + address: "0xd0a4b8946cb52f0661273bfbc6fd0e0c75fc6433", + decimals: 18 + }, + { + symbol: "DADI", + name: "DADI", + address: "0xfb2f26f266fb2805a387230f2aa0a331b4d96fba", + decimals: 18 + }, + { + symbol: "PI", + name: "PCHAIN", + address: "0xb9bb08ab7e9fa0a1356bd4a39ec0ca267e03b0b3", + decimals: 18 + }, + { + symbol: "FMF", + name: "Formosa Financial", + address: "0xb4d0fdfc8497aef97d3c2892ae682ee06064a2bc", + decimals: 18 + }, + { + symbol: "MCO", + name: "Crypto.com", + address: "0xb63b606ac810a52cca15e44bb630fd42d8d1d83d", + decimals: 8 + }, + { + symbol: "WINGS", + name: "Wings", + address: "0x667088b212ce3d06a1b553a7221E1fD19000d9aF", + decimals: 18 + }, + { + symbol: "LEND", + name: "ETHLend", + address: "0x80fb784b7ed66730e8b1dbd9820afd29931aab03", + decimals: 18 + }, + { + symbol: "WABI", + name: "Tael", + address: "0x286bda1413a2df81731d4930ce2f862a35a609fe", + decimals: 18 + }, + { + symbol: "SUSD", + name: "sUSD", + address: "0x57ab1e02fee23774580c119740129eac7081e9d3", + decimals: 18 + }, + { + symbol: "JSE", + name: "JSECOIN", + address: "0x2d184014b5658c453443aa87c8e9c4d57285620b", + decimals: 18 + }, + { + symbol: "TYPE", + name: "Typerium", + address: "0xeaf61fc150cd5c3bea75744e830d916e60ea5a9f", + decimals: 4 + }, + { + symbol: "HERC", + name: "Hercules", + address: "0x6251583e7d997df3604bc73b9779196e94a090ce", + decimals: 18 + }, + { + symbol: "TRAC", + name: "OriginTrail", + address: "0xaa7a9ca87d3694b5755f213b5d04094b8d0f0a6f", + decimals: 18 + }, + { + symbol: "LBA", + name: "Cred", + address: "0xfe5f141bf94fe84bc28ded0ab966c16b17490657", + decimals: 18 + }, + { + symbol: "NEU", + name: "Neumark", + address: "0xa823e6722006afe99e91c30ff5295052fe6b8e32", + decimals: 18 + }, + { + symbol: "RHOC", + name: "RChain", + address: "0x168296bb09e24a88805cb9c33356536b980d3fc5", + decimals: 8 + }, + { + symbol: "EVE", + name: "Devery", + address: "0x923108a439c4e8c2315c4f6521e5ce95b44e9b4c", + decimals: 18 + }, + { + symbol: "LIT", + name: "Lition", + address: "0x763fa6806e1acf68130d2d0f0df754c93cc546b2", + decimals: 18 + }, + { + symbol: "LA", + name: "LATOKEN", + address: "0xe50365f5d679cb98a1dd62d6f6e58e59321bcddf", + decimals: 18 + }, + { + symbol: "BLUE", + name: "Blue Protocol", + address: "0x539efe69bcdd21a83efd9122571a64cc25e0282b", + decimals: 8 + }, + { + symbol: "QCH", + name: "QChi", + address: "0x687bfc3e73f6af55f0ccca8450114d107e781a0e", + decimals: 18 + }, + { + symbol: "DCN", + name: "Dentacoin", + address: "0x08d32b0da63e2c3bcf8019c9c5d849d7a9d791e6", + decimals: 0 + }, + { + symbol: "HAND", + name: "ShowHand", + address: "0x48c1b2f3efa85fbafb2ab951bf4ba860a08cdbb7", + decimals: 0 + }, + { + symbol: "ENG", + name: "Enigma", + address: "0xf0ee6b27b759c9893ce4f094b49ad28fd15a23e4", + decimals: 8 + }, + { + symbol: "SAN", + name: "Santiment Network Token", + address: "0x7c5a0ce9267ed19b22f8cae653f198e3e8daf098", + decimals: 18 + }, + { + symbol: "DTH", + name: "Dether", + address: "0x5adc961d6ac3f7062d2ea45fefb8d8167d44b190", + decimals: 18 + }, + { + symbol: "AUC", + name: "Auctus", + address: "0xc12d099be31567add4e4e4d0d45691c3f58f5663", + decimals: 18 + }, + { + symbol: "TAAS", + name: "TaaS", + address: "0xe7775a6e9bcf904eb39da2b68c5efb4f9360e08c", + decimals: 6 + }, + { + symbol: "MITH", + name: "Mithril", + address: "0x3893b9422cd5d70a81edeffe3d5a1c6a978310bb", + decimals: 18 + }, + { + symbol: "AAA", + name: "Abulaba", + address: "0xd938137e6d96c72e4a6085412ada2dad78ff89c4", + decimals: 8 + }, + { + symbol: "ADX", + name: "AdEx", + address: "0x4470bb87d77b963a013db939be332f927f2b992e", + decimals: 4 + }, + { + symbol: "AERGO", + name: "Aergo", + address: "0xae31b85bfe62747d0836b82608b4830361a3d37a", + decimals: 18 + }, + { + symbol: "AGI", + name: "SingularityNET", + address: "0x8eb24319393716668d768dcec29356ae9cffe285", + decimals: 8 + }, + { + symbol: "AMB", + name: "Ambrosus", + address: "0x4dc3643dbc642b72c158e7f3d2ff232df61cb6ce", + decimals: 18 + }, + { + symbol: "AOA", + name: "Aurora", + address: "0x9ab165d795019b6d8b3e971dda91071421305e5a", + decimals: 18 + }, + { + symbol: "ARN", + name: "Aeron", + address: "0xBA5F11b16B155792Cf3B2E6880E8706859A8AEB6", + decimals: 8 + }, + { + symbol: "AWC", + name: "Atomic Wallet Coin", + address: "0xad22f63404f7305e4713ccbd4f296f34770513f4", + decimals: 8 + }, + { + symbol: "BAX", + name: "BABB", + address: "0x9a0242b7a33dacbe40edb927834f96eb39f8fbcb", + decimals: 18 + }, + { + symbol: "BBO", + name: "Bigbom", + address: "0x84f7c44b6fed1080f647e354d552595be2cc602f", + decimals: 18 + }, + { + symbol: "BCDT", + name: "Blockchain Certified Data Token", + address: "0xacfa209fb73bf3dd5bbfb1101b9bc999c49062a5", + decimals: 18 + }, + { + symbol: "BLZ", + name: "Bluzelle", + address: "0x5732046a883704404f284ce41ffadd5b007fd668", + decimals: 18 + }, + { + symbol: "BOMB", + name: "BOMB", + address: "0x1C95b093d6C236d3EF7c796fE33f9CC6b8606714", + decimals: 0 + }, + { + symbol: "BPT", + name: "Blockport", + address: "0x327682779bab2bf4d1337e8974ab9de8275a7ca8", + decimals: 18 + }, + { + symbol: "CAR", + name: "CarBlock", + address: "0x4d9e23a3842fe7eb7682b9725cf6c507c424a41b", + decimals: 18 + }, + { + symbol: "CAT", + name: "BitClave", + address: "0x1234567461d3f8db7496581774bd869c83d51c93", + decimals: 18 + }, + { + symbol: "CEL", + name: "Celsius", + address: "0xaaaebe6fe48e54f431b0c390cfaf0b017d09d42d", + decimals: 4 + }, + { + symbol: "CENNZ", + name: "Centrality", + address: "0x1122b6a0e00dce0563082b6e2953f3a943855c1f", + decimals: 18 + }, + { + symbol: "CET", + name: "CoinEx Token", + address: "0x081f67afa0ccf8c7b17540767bbe95df2ba8d97f", + decimals: 18 + }, + { + symbol: "CMCT", + name: "Crowd Machine", + address: "0x47bc01597798dcd7506dcca36ac4302fc93a8cfb", + decimals: 8 + }, + { + symbol: "CND", + name: "Cindicator", + address: "0xd4c435f5b09f855c3317c8524cb1f586e42795fa", + decimals: 18 + }, + { + symbol: "CNN", + name: "Content Neutrality Network", + address: "0x8713d26637cf49e1b6b4a7ce57106aabc9325343", + decimals: 18 + }, + { + symbol: "CNUS", + name: "CoinUs", + address: "0x722f2f3eac7e9597c73a593f7cf3de33fbfc3308", + decimals: 18 + }, + { + symbol: "COT", + name: "CoTrader", + address: "0x5c872500c00565505f3624ab435c222e558e9ff8", + decimals: 18 + }, + { + symbol: "CRO", + name: "Crypto.com Chain", + address: "0xa0b73e1ff0b80914ab6fe0444e65848c4c34450b", + decimals: 8 + }, + { + symbol: "CTRT", + name: "Cryptrust", + address: "0x8606a8f28e1e2fd50b9074d65c01548b1f040b32", + decimals: 8 + }, + { + symbol: "CYFM", + name: "CyberFM", + address: "0x3f06b5d78406cd97bdf10f5c420b241d32759c80", + decimals: 18 + }, + { + symbol: "DENT", + name: "Dent", + address: "0x3597bfd533a99c9aa083587b074434e61eb0a258", + decimals: 8 + }, + { + symbol: "DGTX", + name: "Digitex Futures", + address: "0x1c83501478f1320977047008496dacbd60bb15ef", + decimals: 18 + }, + { + symbol: "DREAM", + name: "DreamTeam Token", + address: "0x82f4ded9cec9b5750fbff5c2185aee35afc16587", + decimals: 6 + }, + { + symbol: "EDR", + name: "Endor Protocol", + address: "0xc528c28fec0a90c083328bc45f587ee215760a0f", + decimals: 18 + }, + { + symbol: "EDU", + name: "EduCoin", + address: "0xf263292e14d9d8ecd55b58dad1f1df825a874b7c", + decimals: 18 + }, + { + symbol: "ELEC", + name: "Electrify.Asia", + address: "0xd49ff13661451313ca1553fd6954bd1d9b6e02b9", + decimals: 18 + }, + { + symbol: "ELITE", + name: "Ethereum Lite", + address: "0x0a76aad21948ea1ef447d26dee91a54370e151e0", + decimals: 18 + }, + { + symbol: "ERC20", + name: "ERC20", + address: "0xc3761eb917cd790b30dad99f6cc5b4ff93c4f9ea", + decimals: 18 + }, + { + symbol: "EURS", + name: "STASIS EURS", + address: "0xdb25f211ab05b1c97d595516f45794528a807ad8", + decimals: 2 + }, + { + symbol: "FLIXX", + name: "Flixxo", + address: "0xf04a8ac553fcedb5ba99a64799155826c136b0be", + decimals: 18 + }, + { + symbol: "FREE", + name: "FREE Coin", + address: "0x2f141ce366a2462f02cea3d12cf93e4dca49e4fd", + decimals: 18 + }, + { + symbol: "FTM", + name: "Fantom", + address: "0x4e15361fd6b4bb609fa63c81a2be19d873717870", + decimals: 18 + }, + { + symbol: "FTXT", + name: "FUTURAX", + address: "0x41875c2332b0877cdfaa699b641402b7d4642c32", + decimals: 8 + }, + { + symbol: "GNT", + name: "Golem", + address: "0xa74476443119A942dE498590Fe1f2454d7D4aC0d", + decimals: 18 + }, + { + symbol: "GZE", + name: "GazeCoin", + address: "0x4ac00f287f36a6aad655281fe1ca6798c9cb727b", + decimals: 18 + }, + { + symbol: "HBZ", + name: "HBZ coin", + address: "0xe34e1944e776f39b9252790a0527ebda647ae668", + decimals: 18 + }, + { + symbol: "HERO", + name: "Hero", + address: "0x02585e4a14da274d02df09b222d4606b10a4e940", + decimals: 18 + }, + { + symbol: "HGT", + name: "HelloGold", + address: "0xba2184520a1cc49a6159c57e61e1844e085615b6", + decimals: 8 + }, + { + symbol: "HOT", + name: "Hydro Protocol", + address: "0x9af839687f6c94542ac5ece2e317daae355493a1", + decimals: 18 + }, + { + symbol: "HPT", + name: "Huobi Pool Token", + address: "0xa66Daa57432024023DB65477BA87D4E7F5f95213", + decimals: 18 + }, + { + symbol: "HYDRO", + name: "Hydro", + address: "0xebbdf302c940c6bfd49c6b165f457fdb324649bc", + decimals: 18 + }, + { + symbol: "IDT", + name: "InvestDigital", + address: "0x02c4c78c462e32cca4a90bc499bf411fb7bc6afb", + decimals: 18 + }, + { + symbol: "IDXM", + name: "IDEX Membership", + address: "0xcc13fc627effd6e35d2d2706ea3c4d7396c610ea", + decimals: 8 + }, + { + symbol: "IHF", + name: "Invictus Hyperion Fund", + address: "0xaf1250fa68d7decd34fd75de8742bc03b29bd58e", + decimals: 18 + }, + { + symbol: "INB", + name: "Insight Chain", + address: "0x17aa18a4b64a55abed7fa543f2ba4e91f2dce482", + decimals: 18 + }, + { + symbol: "IND", + name: "Indorse Token", + address: "0xf8e386eda857484f5a12e4b5daa9984e06e73705", + decimals: 18 + }, + { + symbol: "INE", + name: "IntelliShare", + address: "0x86e6a4f512b1290c043970b04e0b570d4fc98291", + decimals: 18 + }, + { + symbol: "IPSX", + name: "IP Exchange", + address: "0x001f0aa5da15585e5b2305dbab2bac425ea71007", + decimals: 18 + }, + { + symbol: "ITT", + name: "Intelligent Trading Foundation", + address: "0x0aef06dcccc531e581f0440059e6ffcc206039ee", + decimals: 8 + }, + { + symbol: "JS", + name: "JavaScript Token", + address: "0x5046e860ff274fb8c66106b0ffb8155849fb0787", + decimals: 8 + }, + { + symbol: "KBC", + name: "Karatgold Coin", + address: "0xf3586684107ce0859c44aa2b2e0fb8cd8731a15a", + decimals: 7 + }, + { + symbol: "KCS", + name: "KuCoin Shares", + address: "0x039b5649a59967e3e936d7471f9c3700100ee1ab", + decimals: 6 + }, + { + symbol: "LALA", + name: "LALA World", + address: "0xfd107b473ab90e8fbd89872144a3dc92c40fa8c9", + decimals: 18 + }, + { + symbol: "LIF", + name: "Winding Tree", + address: "0xeb9951021698b42e4399f9cbb6267aa35f82d59d", + decimals: 18 + }, + { + symbol: "LTO", + name: "LTO Network", + address: "0x3db6ba6ab6f95efed1a6e794cad492faaabf294d", + decimals: 8 + }, + { + symbol: "MAS", + name: "MidasProtocol", + address: "0x23ccc43365d9dd3882eab88f43d515208f832430", + decimals: 18 + }, + { + symbol: "MATIC", + name: "Matic Network", + address: "0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0", + decimals: 18 + }, + { + symbol: "MEDIBIT", + name: "MediBit", + address: "0x737fa0372c8d001904ae6acaf0552d4015f9c947", + decimals: 18 + }, + { + symbol: "MFG", + name: "SyncFab", + address: "0x6710c63432a2de02954fc0f851db07146a6c0312", + decimals: 18 + }, + { + symbol: "MLN", + name: "Melon", + address: "0xbeb9ef514a379b997e0798fdcc901ee474b6d9a1", + decimals: 18 + }, + { + symbol: "MRPH", + name: "Morpheus.Network", + address: "0x7b0c06043468469967dba22d1af33d77d44056c8", + decimals: 4 + }, + { + symbol: "MTL", + name: "Metal", + address: "0xF433089366899D83a9f26A773D59ec7eCF30355e", + decimals: 8 + }, + { + symbol: "MTN", + name: "Medicalchain", + address: "0x41dbecc1cdc5517c6f76f6a6e836adbee2754de3", + decimals: 18 + }, + { + symbol: "MTV", + name: "MultiVAC", + address: "0x8aa688AB789d1848d131C65D98CEAA8875D97eF1", + decimals: 18 + }, + { + symbol: "MYST", + name: "Mysterium", + address: "0xa645264c5603e96c3b0b078cdab68733794b0a71", + decimals: 8 + }, + { + symbol: "NTK", + name: "Neurotoken", + address: "0x69beab403438253f13b6e92db91f7fb849258263", + decimals: 18 + }, + { + symbol: "NUG", + name: "Nuggets", + address: "0x245ef47d4d0505ecf3ac463f4d81f41ade8f1fd1", + decimals: 18 + }, + { + symbol: "OCEAN", + name: "Ocean Protocol", + address: "0x985dd3d42de1e256d09e1c10f112bccb8015ad41", + decimals: 18 + }, + { + symbol: "OGO", + name: "Origo", + address: "0xff0e5e014cf97e0615cb50f6f39da6388e2fae6e", + decimals: 18 + }, + { + symbol: "OMG", + name: "OmiseGO", + address: "0xd26114cd6EE289AccF82350c8d8487fedB8A0C07", + decimals: 18 + }, + { + symbol: "PAY", + name: "TenX", + address: "0xb97048628db6b661d4c2aa833e95dbe1a905b280", + decimals: 18 + }, + { + symbol: "PLAY", + name: "HEROcoin", + address: "0xe477292f1b3268687a29376116b0ed27a9c76170", + decimals: 18 + }, + { + symbol: "PLR", + name: "Pillar", + address: "0xe3818504c1b32bf1557b16c238b2e01fd3149c17", + decimals: 18 + }, + { + symbol: "PPP", + name: "PayPie", + address: "0xc42209accc14029c1012fb5680d95fbd6036e2a0", + decimals: 18 + }, + { + symbol: "PRIX", + name: "Privatix", + address: "0x3adfc4999f77d04c8341bac5f3a76f58dff5b37a", + decimals: 8 + }, + { + symbol: "PTOY", + name: "Patientory", + address: "0x8ae4bf2c33a8e667de34b54938b0ccd03eb8cc06", + decimals: 8 + }, + { + symbol: "QNT", + name: "Quant", + address: "0x4a220e6096b25eadb88358cb44068a3248254675", + decimals: 18 + }, + { + symbol: "RC20", + name: "RoboCalls", + address: "0x61b2d3ea9f1c6b387c985c73d40e8fbfb284e5c7", + decimals: 18 + }, + { + symbol: "REAL", + name: "REAL", + address: "0x9214ec02cb71cba0ada6896b8da260736a67ab10", + decimals: 18 + }, + { + symbol: "RIYA", + name: "Etheriya", + address: "0x0b1724cc9fda0186911ef6a75949e9c0d3f0f2f3", + decimals: 8 + }, + { + symbol: "RSR", + name: "Reserve Rights", + address: "0x8762db106b2c2a0bccb3a80d1ed41273552616e8", + decimals: 18 + }, + { + symbol: "SENT", + name: "Sentinel", + address: "0xa44e5137293e855b1b7bc7e2c6f8cd796ffcb037", + decimals: 8 + }, + { + symbol: "SHP", + name: "Sharpe Platform Token", + address: "0xef2463099360a085f1f10b076ed72ef625497a06", + decimals: 18 + }, + { + symbol: "SNGLS", + name: "SingularDTV", + address: "0xaec2e87e0a235266d9c5adc9deb4b2e29b54d009", + decimals: 0 + }, + { + symbol: "STAR", + name: "Starbase", + address: "0xf70a642bd387f94380ffb90451c2c81d4eb82cbc", + decimals: 18 + }, + { + symbol: "STR", + name: "Staker", + address: "0xbae235823d7255d9d48635ced4735227244cd583", + decimals: 18 + }, + { + symbol: "SWM", + name: "Swarm", + address: "0x9e88613418cf03dca54d6a2cf6ad934a78c7a17a", + decimals: 18 + }, + { + symbol: "SXUT", + name: "Spectre.ai Utility Token", + address: "0x2c82c73d5b34aa015989462b2948cd616a37641f", + decimals: 18 + }, + { + symbol: "TAU", + name: "Lamden", + address: "0xc27a2f05fa577a83ba0fdb4c38443c0718356501", + decimals: 18 + }, + { + symbol: "TRAT", + name: "Tratok", + address: "0x0cbc9b02b8628ae08688b5cc8134dc09e36c443b", + decimals: 5 + }, + { + symbol: "TRXC", + name: "TRONCLASSIC", + address: "0xad5fe5b0b8ec8ff4565204990e4405b2da117d8e", + decimals: 0 + }, + { + symbol: "TUSD", + name: "TrueUSD", + address: "0x0000000000085d4780B73119b644AE5ecd22b376", + decimals: 18 + }, + { + symbol: "UBN", + name: "Ubricoin", + address: "0xdb13025b219db5e4529f48b65ff009a26b6ae733", + decimals: 18 + }, + { + symbol: "VERI", + name: "Veritaseum", + address: "0x8f3470A7388c05eE4e7AF3d01D8C722b0FF52374", + decimals: 18 + }, + { + symbol: "VIB", + name: "Viberate", + address: "0x2c974b2d0ba1716e644c1fc59982a89ddd2ff724", + decimals: 18 + }, + { + symbol: "VIDT", + name: "V-ID", + address: "0x445f51299ef3307dbd75036dd896565f5b4bf7a5", + decimals: 18 + }, + { + symbol: "VLD", + name: "Vetri", + address: "0x922ac473a3cc241fd3a0049ed14536452d58d73c", + decimals: 18 + }, + { + symbol: "WIB", + name: "Wibson", + address: "0x3f17dd476faf0a4855572f0b6ed5115d9bba22ad", + decimals: 9 + }, + { + symbol: "WPR", + name: "WePower", + address: "0x4CF488387F035FF08c371515562CBa712f9015d4", + decimals: 18 + }, + { + symbol: "X8X", + name: "X8X Token", + address: "0x910dfc18d6ea3d6a7124a6f8b5458f281060fa4c", + decimals: 18 + }, + { + symbol: "XES", + name: "Proxeus", + address: "0xa017ac5fac5941f95010b12570b812c974469c2c", + decimals: 18 + }, + { + symbol: "YUP", + name: "Crowdholding", + address: "0xd9a12cde03a86e800496469858de8581d3a5353d", + decimals: 18 + }, + { + symbol: "ZCN", + name: "0Chain", + address: "0xb9ef770b6a5e12e45983c5d80545258aa38f3b78", + decimals: 10 + }, + { + symbol: "ZCO", + name: "Zebi", + address: "0x2008e3057bd734e10ad13c9eae45ff132abc1722", + decimals: 8 + }, + { + symbol: "ZEON", + name: "ZEON", + address: "0xe5b826ca2ca02f09c1725e9bd98d9a8874c30532", + decimals: 18 + } +]; diff --git a/server/src/utils/formatter.js b/server/src/utils/formatter.js new file mode 100644 index 0000000..37ec1e3 --- /dev/null +++ b/server/src/utils/formatter.js @@ -0,0 +1,20 @@ +const BigNumber = require('bignumber.js'); + +//helper function to parse amount from csv and convert into ERC-20 token's 18 decimal digit +const parseAmount = (preformattedAmount) => { + bn = new BigNumber(Number(preformattedAmount.trim())); + tokenUnit = new BigNumber(10); + tokenUnit = tokenUnit.exponentiatedBy(18); + return (bn.multipliedBy(tokenUnit)).toPrecision(); +} + +//make amount to readable format +const readableBalance = (preformattedAmount) => { + bn = new BigNumber(Number(preformattedAmount)); + tokenUnit = new BigNumber(10); + tokenUnit = tokenUnit.exponentiatedBy(-18); + return (bn.multipliedBy(tokenUnit)).toPrecision(); + +} + +module.exports = { parseAmount, readableBalance } \ No newline at end of file diff --git a/server/src/utils/signer.js b/server/src/utils/signer.js new file mode 100644 index 0000000..f5ace35 --- /dev/null +++ b/server/src/utils/signer.js @@ -0,0 +1,88 @@ +require("dotenv").config(); +const Web3 = require("web3"); +const Common = require('ethereumjs-common'); +const Tx = require("ethereumjs-tx").Transaction; +//instantite web3 +let web3 = new Web3(process.env.INFURA_NODE); + +const customPacific = Common.default.forCustomChain( + 'ropsten', + { + name: 'pacific-network', + networkId: 846353, + chainId: 846353, + }, + 'petersburg' +) + +async function sendTx(txData, from, to, value) { + try { + //get current nonce + let nonce = await web3.eth.getTransactionCount(from, "pending"); + console.log(`Nonce for ${from} - ${nonce}`); + + //prepare unsigned tx + let gasPrice = "20000000000"; + let chainId = await getChainId(web3); + console.log("Chain Id - ", chainId); + + let rawTransaction = { + from: from, + nonce: nonce, + gasPrice: web3.utils.toHex(parseInt(gasPrice)), + gasLimit: web3.utils.toHex(parseInt("1000000")), + to: to, + value: 0, + data: txData, + chainId: chainId //846353 + }; + + let tx = new Tx(rawTransaction, { chain: 4 }); + //sign the transaction + console.log("The transaction's chain id is", tx.getChainId()) + let privKey = new Buffer.from(process.env.OCEAN_FROM_KEY, "hex"); + //sign the transaction + tx.sign(privKey); + console.log(`Signed tx`); + //serialize the given tx to send it to blockchain + let serializedTx = tx.serialize(); + console.log(`Tx serialised`); + console.log(serializedTx) + // send our signed tx to ethereum blockchain + let signedTx = web3.eth.sendSignedTransaction( + "0x" + serializedTx.toString("hex") + ); + console.log(`Tx sent to the node`); + + //wait for confirmation + let txHash = await new Promise((resolve, reject) => { + signedTx + .on("transactionHash", function (hash) { + console.log(`Tx sent to network with id - ${hash}`); + signedTx.off("transactionHash"); + resolve(hash); + }) + .on("error", function (error) { + reject(error); + throw Error(error); + }); + }); + + return txHash; + } catch (error) { + throw Error(error); + } +} + +async function getChainId(web3) { + try { + console.log('Getting chain id') + const chainId = await web3.eth.net.getId() + console.log({ chainId }, 'Chain id obtained') + return chainId + } catch (e) { + throw new Error(`Chain Id cannot be obtained`) + } +} + +module.exports = { sendTx }; diff --git a/src/api.js b/src/api.js index 13476db..24a03ab 100644 --- a/src/api.js +++ b/src/api.js @@ -1,5 +1,17 @@ let baseUrl = process.env.REACT_APP_PAYFIAT_SERVER_URL; +const checkServerAvailability = options => { + return window + .fetch(`${baseUrl}/health`) + .then(res => { + if (res.status == 200) { + return true; + } else { + return false; + } + }); +} + const createPaymentIntent = options => { return window .fetch(`${baseUrl}/fiat/create-payment-intent`, { @@ -27,32 +39,6 @@ const createPaymentIntent = options => { }); }; -const getProductDetails = options => { - return window - .fetch(`${baseUrl}/fiat/product-details`, { - method: "GET", - headers: { - 'Content-Type': 'application/json', - 'Accept': 'application/json' - } - }) - .then(res => { - if (res.status === 200) { - return res.json(); - } else { - return null; - } - }) - .then(data => { - if (!data || data.error) { - console.log("API error:", { data }); - throw Error("API Error"); - } else { - return data; - } - }); -}; - const getPublicStripeKey = options => { return window .fetch(`${baseUrl}/fiat/public-key`, { @@ -116,6 +102,23 @@ const getCurrentOceanPrice = async options => { } } +const checkTxStatus = async options => { + let { txHash } = options; + let res = await window.fetch( + `${baseUrl}/crypto/checkTxStatus?txHash=${txHash}`, + { + method: "GET", + headers: { + 'Content-Type': 'application/json', + 'Accept': 'application/json' + } + } + ); + + let data = await res.json(); + return data; +} + const transferOCEAN = async options => { let { amount, receiverAddress } = options; let res = await window.fetch( @@ -138,12 +141,13 @@ const transferOCEAN = async options => { } } const api = { + checkServerAvailability, createPaymentIntent, - getPublicStripeKey: getPublicStripeKey, - getProductDetails: getProductDetails, + getPublicStripeKey, getTokenBalance, getCurrentOceanPrice, - transferOCEAN + transferOCEAN, + checkTxStatus }; export default api; diff --git a/src/components/Checkmark.js b/src/components/Checkmark.js index 6d1145c..14474b5 100644 --- a/src/components/Checkmark.js +++ b/src/components/Checkmark.js @@ -11,7 +11,6 @@ class Checkmark extends Component { } static getDerivedStateFromProps(nextProps, prevState) { - console.log(`Derived props - ${JSON.stringify(nextProps)} , ${JSON.stringify(prevState)}`) if (nextProps.loadComplete !== prevState.loadComplete && nextProps.loadComplete) { return { loadComplete: nextProps.loadComplete, loaderClassname: 'circle-loader load-complete' }; } diff --git a/src/components/fiat/FiatCheckoutForm.js b/src/components/fiat/FiatCheckoutForm.js index fda7c3e..1184491 100644 --- a/src/components/fiat/FiatCheckoutForm.js +++ b/src/components/fiat/FiatCheckoutForm.js @@ -28,7 +28,9 @@ class FiatCheckoutForm extends Component { tokenTransferError: null, transferSuccessful: null, transferFailed: null, - tooltipOpen: false + tooltipOpen: false, + txHash: null, + clearInterval: null }; this.handleSubmit = this.handleSubmit.bind(this); @@ -36,6 +38,7 @@ class FiatCheckoutForm extends Component { async componentDidMount() { + console.log(`Receiver Account - ${this.props.receiverAccount}`) if (!web3.currentProvider) { this.setState({ web3Connected: false }); //Unlock your metamask return; @@ -43,13 +46,22 @@ class FiatCheckoutForm extends Component { this.setState({ web3Connected: true }); let _accounts = await web3.eth.getAccounts(); - console.log(_accounts[0]); + console.log(`Injected Web3 account - ${_accounts[0]}`); + + if (!this.props.receiverAccount) { + this.setState({ + amount: this.props.totalAmount, + currency: this.props.currency, + currentAccount: _accounts[0] + }); + } else { + this.setState({ + amount: this.props.totalAmount, + currency: this.props.currency, + currentAccount: this.props.receiverAccount + }); + } - this.setState({ - amount: this.props.totalAmount, - currency: this.props.currency, - currentAccount: _accounts[0] - }); } } @@ -71,8 +83,10 @@ class FiatCheckoutForm extends Component { else { console.log(`TxHash - ${resp.txHash}`) //start checking for transaction receipt - setInterval(function () { this.checkForTokenTransferState(resp.txHash) }.bind(this), 5000); + let stopCheckingTxState = setInterval(function () { this.checkForTokenTransferState(resp.txHash) }.bind(this), 5000); this.setState({ + clearInterval: stopCheckingTxState, + txHash: resp.txHash, hasTransferInitiated: true, tokenTransferError: null }) @@ -81,25 +95,40 @@ class FiatCheckoutForm extends Component { } async checkForTokenTransferState(txHash) { + console.log("checking for tx finality...") try { - let receipt = await web3.eth.getTransactionReceipt(txHash); - if (receipt && receipt.status) { + console.log(`TxHash - ${txHash}`) + let resp = await api.checkTxStatus({ txHash: txHash }) + if (!resp.status) { + throw Error(resp.message); + } + + /*await web3.eth.getTransactionReceipt(txHash);*/ + if (resp.status == "success") { this.setState({ + clearInterval: null, transferSuccessful: true, transferFailed: false, transferProcessComplete: true }) - } else if (receipt && receipt.status == false) { + //clear interval + clearInterval(this.state.clearInterval); + } else if (resp.status == "fail") { this.setState({ + clearInterval: null, transferFailed: true, transferSuccessful: false, transferProcessComplete: true }) + //clear interval + clearInterval(this.state.clearInterval); } + } catch (err) { console.error(`Transfer receipt error - ${err.message}`) this.setState({ - tokenTransferError: err.message + tokenTransferError: err.message, + transferFailed: true }) } } @@ -139,7 +168,7 @@ class FiatCheckoutForm extends Component { error: "", metadata: payload.paymentIntent }); - console.log("[PaymentIntent]", payload.paymentIntent); + } }); }) @@ -190,6 +219,7 @@ class FiatCheckoutForm extends Component {

Transferring {this.props.oceanAmount} OCEAN to

{this.state.currentAccount}
+ {this.state.txHash ? (
Tx Hash - {this.state.txHash}
) : ''} ); } diff --git a/src/fiatcheckout.js b/src/fiatcheckout.js index cf66baa..2745acd 100644 --- a/src/fiatcheckout.js +++ b/src/fiatcheckout.js @@ -15,7 +15,6 @@ class FiatCheckout extends Component { componentDidMount() { api.getPublicStripeKey().then(apiKey => { - console.log(apiKey); this.setState({ apiKey: apiKey }); @@ -34,6 +33,7 @@ class FiatCheckout extends Component { currency={this.props.currency} closeModal={this.props.closeModal.bind(this)} oceanAmount={this.props.oceanAmount} + receiverAccount={this.props.receiverAccount} /> diff --git a/src/index.js b/src/index.js index 8d662f9..274f2d7 100644 --- a/src/index.js +++ b/src/index.js @@ -1,7 +1,8 @@ import React, { Component } from "react"; import PayButtons from "./paybuttons.js"; -import "./index.css"; +import api from "./api"; +import "./index.css"; import "./assets/vendor/nucleo/css/nucleo.css"; import "./assets/vendor/font-awesome/css/font-awesome.min.css"; import "./assets/scss/argon-design-system-react.scss"; @@ -11,6 +12,41 @@ export class PayFiat extends Component { constructor(props) { super(props); + this.state = { + isServerOk: false, + isServerCheckOngoing: true + } + } + + async componentDidMount() { + if (!this.state.isServerOk) { + let resp = await api.checkServerAvailability(); + this.setState({ + isServerOk: resp, + isServerCheckOngoing: false + }) + } + } + + renderInProgress() { + return ( +
Checking PayFiat Server availability...
+ ) + } + + renderServerUnavailable() { + return ( +
PayFiat server unavailable. Make sure Server is up and running and endpoint in configured correctly in .env file...
+ ) + } + + renderPayFiat() { + return ( + + ) } render() { @@ -18,11 +54,16 @@ export class PayFiat extends Component {
- + {this.state.isServerCheckOngoing ? + this.renderInProgress() : + (this.state.isServerOk ? + this.renderPayFiat() : + this.renderServerUnavailable())}
); + } } diff --git a/src/paybuttons.js b/src/paybuttons.js index 58ffdbd..554c239 100644 --- a/src/paybuttons.js +++ b/src/paybuttons.js @@ -22,7 +22,6 @@ class PayButtons extends Component { componentDidMount() { api.getCurrentOceanPrice({ contractAddress: "0x985dd3d42de1e256d09e1c10f112bccb8015ad41", currency: this.props.currency }).then(price => { - console.log(price); this.setState({ payable: price }); @@ -67,6 +66,7 @@ class PayButtons extends Component { this.setState({ modal: shouldClose }))} oceanAmount={this.props.oceanAmount} closeModal={this.showClosebutton.bind(this)} @@ -78,7 +78,6 @@ class PayButtons extends Component { } render() { - console.log(`Modal - ${this.state.modal}`); return (
{this.state.modal ? (