forked from MyEtherWallet/ethereum-lists
-
Notifications
You must be signed in to change notification settings - Fork 0
/
createTokens.js
84 lines (83 loc) · 2.52 KB
/
createTokens.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
const fs = require('fs');
const Web3 = require('web3');
const fetch = require('node-fetch');
const utils = Web3.utils;
const tokensDirectory = './src/tokens/eth/';
const notInListPath = './notinlist.json';
const notInList = JSON.parse(fs.readFileSync(notInListPath));
const api = 'https://api.coingecko.com/api/v3/coins/ethereum/contract';
const node = 'https://nodes.mewapi.io/rpc/eth';
const abi = [
{
"constant": true,
"inputs": [],
"name": "decimals",
"outputs": [
{
"name": "",
"type": "uint8"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
}];
const web3 = new Web3(node);
async function createToken() {
for (let index = 0; index < notInList.length; index++) {
try {
const contract = new web3.eth.Contract(abi, notInList[index]);
const decimal = await contract.methods.decimals().call().catch(res => {
console.log(notInList[index], res)
});
const tokenInfo = await fetch(`${api}/${notInList[index]}`).then(response => {
return response.json();
});
const homepage = tokenInfo.hasOwnProperty('links') ? tokenInfo.links.hasOwnProperty('homepage') ? tokenInfo.links.homepage[0] : '' : '';
const tokenTemp =
{
"symbol": tokenInfo.symbol.toUpperCase(),
"name": tokenInfo.name,
"type": "ERC20",
"address": utils.toChecksumAddress(notInList[index]),
"ens_address": "",
"decimals": Number(decimal),
"website": homepage,
"logo": {
"src": "",
"width": "",
"height": "",
"ipfs_hash": ""
},
"support": {
"email": "",
"url": ""
},
"social": {
"blog": "",
"chat": "",
"facebook": "",
"forum": "",
"github": "",
"gitter": "",
"instagram": "",
"linkedin": "",
"reddit": "",
"slack": "",
"telegram": "",
"twitter": "",
"youtube": ""
}
};
fs.writeFileSync(
`${tokensDirectory}/${utils.toChecksumAddress(
notInList[index].replace('.json', '')
)}.json`,
JSON.stringify(tokenTemp)
);
} catch(e) {
console.log(e, notInList[index])
}
}
}
createToken();