-
Notifications
You must be signed in to change notification settings - Fork 323
/
Copy pathaccounts.js
61 lines (50 loc) · 1.81 KB
/
accounts.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
var express = require('express');
var router = express.Router();
var async = require('async');
var Web3 = require('web3');
router.get('/:offset?', function(req, res, next) {
var config = req.app.get('config');
var web3 = new Web3();
web3.setProvider(config.provider);
async.waterfall([
function(callback) {
web3.parity.listAccounts(20, req.params.offset, function(err, result) {
callback(err, result);
});
}, function(accounts, callback) {
var data = {};
if (!accounts) {
return callback({name:"FatDBDisabled", message: "Parity FatDB system is not enabled. Please restart Parity with the --fat-db=on parameter."});
}
if (accounts.length === 0) {
return callback({name:"NoAccountsFound", message: "Chain contains no accounts."});
}
var lastAccount = accounts[accounts.length - 1];
async.eachSeries(accounts, function(account, eachCallback) {
web3.eth.getCode(account, function(err, code) {
if (err) {
return eachCallback(err);
}
data[account] = {};
data[account].address = account;
data[account].type = code.length > 2 ? "Contract" : "Account";
web3.eth.getBalance(account, function(err, balance) {
if (err) {
return eachCallback(err);
}
data[account].balance = balance;
eachCallback();
});
});
}, function(err) {
callback(err, data, lastAccount);
});
}
], function(err, accounts, lastAccount) {
if (err) {
return next(err);
}
res.render("accounts", { accounts: accounts, lastAccount: lastAccount });
});
});
module.exports = router;