Skip to content

Instantly share code, notes, and snippets.

@gamalielhere
Last active April 19, 2018 23:13
Show Gist options
  • Save gamalielhere/c31796aa45d10af33e0de0d8a6664344 to your computer and use it in GitHub Desktop.
Save gamalielhere/c31796aa45d10af33e0de0d8a6664344 to your computer and use it in GitHub Desktop.
Token Tester for MEW

To run: npm install && node index.js

Note: You must have Geth running. Geth (hehe) it here. After installing, run geth --rpc

/*
This checker assumes you have geth installed and running.
*/
const fs = require('fs');
const Web3 = require('web3');
const fetch = require('node-fetch');
let web3 = new Web3();
web3.setProvider(new web3.providers.HttpProvider("http://127.0.0.1:8545"));
async function run() {
const response = await fetch('https://raw.githubusercontent.com/kvhnuke/etherwallet/mercury/app/scripts/tokens/ethTokens.json');
const tokens = await response.json();
parseTokens(tokens);
}
async function checkToken(token) {
let newToken = await web3.eth.getCode(token).then((err, res) => {
if(err) throw err;
return res;
}).catch(err => {
return err;
});
return newToken;
}
function parseTokens(arr) {
var newArr = [];
var nonErc20 = [];
var counter = 0;
arr.forEach(item => {
counter++;
checkToken(item.address).then(res => {
if(res !== '0x') {
newArr.push(item);
} else {
nonErc20.push(item);
}
if(counter === arr.length) {
if(newArr.length > 0) {
createNewFile('ethToken.json', newArr);
}
if(nonErc20.length > 0) {
createNewFile('nonErc20.json', nonErc20);
}
}
});
});
}
function createNewFile(name, arr) {
fs.writeFileSync(name, JSON.stringify(arr));
}
run();
{
"name": "token-tester",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"devDependencies": {
"node-fetch": "^2.1.2",
"web3": "^1.0.0-beta.33"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment