Skip to content

Commit

Permalink
Merge pull request #187 from ethereumproject/dev
Browse files Browse the repository at this point in the history
Dev into Master
  • Loading branch information
pyskell authored Nov 19, 2018
2 parents 481f36b + 04976b0 commit ae6de11
Show file tree
Hide file tree
Showing 36 changed files with 1,499 additions and 728 deletions.
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ services:
- docker
before_install:
- docker pull trufflesuite/ganache-cli
- docker run -d -p 8545:8545 -p 3000:3000 -p 27017:27017 trufflesuite/ganache-cli
- docker run -d -p 8545:8545 -p 27017:27017 trufflesuite/ganache-cli
- varA=`docker ps --no-trunc -q | cut -c 1-12`
- docker pull mongo
- docker run -d --network="container:$varA" mongo
Expand Down
4 changes: 2 additions & 2 deletions app.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ try {
config = require('./config.json');
} catch(e) {
if (e.code == 'MODULE_NOT_FOUND') {
console.log('No config file found. Using default configuration... (tools/config.json)');
config = require('./tools/config.json');
console.log('No config file found. Using default configuration... (config.example.json)');
config = require('./config.example.json');
} else {
throw e;
process.exit(1);
Expand Down
161 changes: 89 additions & 72 deletions app/app.js
Original file line number Diff line number Diff line change
@@ -1,73 +1,90 @@
#!/usr/bin/env node

require( './db' );

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var bodyParser = require('body-parser');

var app = express();
app.set('port', process.env.PORT || 3000);

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

app.use(favicon(__dirname + '/public/favicon.ico'));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(express.static(path.join(__dirname, 'public')));

// app libraries
global.__lib = __dirname + '/lib/';


// client

app.get('/', function(req, res) {
res.render('index');
});

require('./routes')(app);

// let angular catch them
app.use(function(req, res) {
res.render('index');
});

// error handlers

// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: err
});
});
}


// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: {}
});
});

var http = require('http').Server(app);
//var io = require('socket.io')(http);

// web3socket(io);

http.listen(app.get('port'), '0.0.0.0', function() {
console.log('Express server listening on port ' + app.get('port'));
#!/usr/bin/env node

require( './db' );

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var bodyParser = require('body-parser');

var config = {};
try {
config = require('./config.json');
} catch(e) {
if (e.code == 'MODULE_NOT_FOUND') {
console.log('No config file found. Using default configuration... (tools/config.json)');
config = require('./tools/config.json');
} else {
throw e;
process.exit(1);
}
}

var app = express();
app.set('port', process.env.PORT || 3000);

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

app.use(favicon(__dirname + '/public/favicon.ico'));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(express.static(path.join(__dirname, 'public')));

// app libraries
global.__lib = __dirname + '/lib/';


// client

app.get('/', function(req, res) {
res.render('index', config);
});

app.get('/config', function(req, res) {
res.json(config.settings);
});

require('./routes')(app);

// let angular catch them
app.use(function(req, res) {
res.render('index', config);
});

// error handlers

// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: err
});
});
}


// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: {}
});
});

var http = require('http').Server(app);
//var io = require('socket.io')(http);

// web3socket(io);

http.listen(app.get('port'), '0.0.0.0', function() {
console.log('Express server listening on port ' + app.get('port'));
});
48 changes: 45 additions & 3 deletions config.example.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,57 @@
"nodeAddr": "localhost",
"gethPort": 8545,
"startBlock": 0,
"endBlock": "latest",
"quiet": true,
"syncAll": true,
"patch": true,
"patchBlocks": 100,
"bulkSize": 100,
"settings": {
"symbol": "ETC",
"name": "Ethereum Classic",
"title": "Ethereum Classic Block Explorer",
"author": "Elaine"
"author": "Elaine, Cody, Hackmod, Bakon",
"contact": "mailto:[email protected]",
"about": "This is an open source Blockchain Explorer.",
"rss": "https://ethereumclassic.org",
"reddit": "https://www.reddit.com/r/EthereumClassic",
"twitter": "https://twitter.com/eth_classic",
"linkedin": "https://www.linkedin.com/company/ethereum-classic",
"github": "https://github.com/ethereumproject",
"logo": "/img/explorer-logo.png",
"customCss": "green-haze.min.css",
"copyright": "2018 © Ethereum Classic.",
"useEthFiat": false,
"poweredbyCustom": false,
"poweredbyEtcImage": "/img/powered-by-etcexplorer-w.png",
"poweredbyEtc": true,
"miners": {
"0xdf7d7e053933b5cc24372f878c90e62dadad5d42": "EtherMine",
"0xc91716199ccde49dc4fafaeb68925127ac80443f": "F2Pool",
"0x9eab4b0fc468a7f5d46228bf5a76cb52370d068d": "NanoPool",
"0x1C0FA194a9d3B44313DCD849F3C6be6Ad270a0A4": "MiningPoolHub",
"0x4750e296949b747df1585aa67beee8be903dd560": "UUPool",
"0xef224fa5fad302b51f38898f4df499d7af127af0": "91pool",
"0x0073Cf1B9230cF3EE8Cab1971B8DbeF21eA7B595": "2miners",
"0x4c2b4e716883a2c3f6b980b70b577e54b9441060": "ETCPool PL",
"0xd144e30a0571aaf0d0c050070ac435deba461fab": "Clona Network",
"0x568f58bf1667504fdf5aa02d776c156f940178a5": "Whalesburg",
"0x3b2d2613ad66d66ee0cb518aeeccc98e9e3b19c0": "private(0x3b2d2613)",
"0x919973eb38844313dc31c41e140700d6e333f8d5": "private(0x919973eb)",
"0xb205f337bad80e28351c7540b741c81470c4927f": "private(0xb205f337)",
"0x232cad0429e653ab610fbcf7e7ebee2f05f28410": "private(0x232cad04)",
"0x999c2944807874d3677ee3c6065c8a8a92721ac5": "NinjaPool.jp",
"0x39cd14977601184b7da518fd352261aad0cb9fd3": "91pool",
"0xf35074bbd0a9aee46f4ea137971feec024ab704e": "Solo Mining Pools",
"0xa97ed75172773ec705c2c78d999d3203199101bd": "epool",
"0x58b3cabd0c5c777da2c1c4d4f7ecc8afe5674f20": "private(0x58b3cabd0)",
"0x87cfd09c483fe65352456bb26c784a0e4c4ba389": "ArsMine",
"0x5bc9ccbd3115cefb6f382d33e8ce2a0aba084da4": "private(0x5bc9ccbd3)",
"0x4924414988feb1ee16e29298509f96317400eb57": "private(0x492441498)",
"0xa9a926bed50dc038b20bb20de361e4c35aae51fc": "private(0xa9a926bed)",
"0x0073cf1b9230cf3ee8cab1971b8dbef21ea7b595": "2miners",
"0x004730417cd2b1d19f6be2679906ded4fa8a64e2": "2miners",
"0x1c0fa194a9d3b44313dcd849f3c6be6ad270a0a4": "MiningPoolHub"
}
}
}
}
58 changes: 0 additions & 58 deletions config.json

This file was deleted.

20 changes: 18 additions & 2 deletions db.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,14 @@ var Block = new Schema(
"uncles": [String]
});

var Account = new Schema(
{
"address": {type: String, index: {unique: true}},
"balance": Number,
"blockNumber": Number,
"type": {type: Number, default: 0} // address: 0x0, contract: 0x1
});

var Contract = new Schema(
{
"address": {type: String, index: {unique: true}},
Expand Down Expand Up @@ -70,18 +78,26 @@ var BlockStat = new Schema(
Transaction.index({blockNumber:-1});
Transaction.index({from:1, blockNumber:-1});
Transaction.index({to:1, blockNumber:-1});
Account.index({balance:-1});
Account.index({balance:-1, blockNumber:-1});
Account.index({type:-1, balance:-1});
Block.index({miner:1});
Block.index({miner:1, blockNumber:-1});

mongoose.model('BlockStat', BlockStat);
mongoose.model('Block', Block);
mongoose.model('Account', Account);
mongoose.model('Contract', Contract);
mongoose.model('Transaction', Transaction);
module.exports.BlockStat = mongoose.model('BlockStat');
module.exports.Block = mongoose.model('Block');
module.exports.Contract = mongoose.model('Contract');
module.exports.Transaction = mongoose.model('Transaction');
module.exports.Account = mongoose.model('Account');


mongoose.connect(process.env.MONGO_URI || 'mongodb://localhost/blockDB');
mongoose.Promise = global.Promise;
mongoose.connect(process.env.MONGO_URI || 'mongodb://localhost/blockDB', {
useMongoClient: true
});

// mongoose.set('debug', true);
Loading

0 comments on commit ae6de11

Please sign in to comment.