Added Utils, db, and updated block schema
This commit is contained in:
parent
6b7496e0c7
commit
ee160d9e7b
48
index.js
48
index.js
@ -1,18 +1,18 @@
|
|||||||
const FullNode = require('bcoin/lib/node/fullnode');
|
const FullNode = require('bcoin/lib/node/fullnode');
|
||||||
const mongoose = require('mongoose');
|
const config = require(`${__dirname}/config/config.js`);
|
||||||
const config = require('./config/config.js');
|
|
||||||
const logger = require('./lib/logger');
|
const logger = require('./lib/logger');
|
||||||
const Block = require('./models/block');
|
const Block = require('./models/block');
|
||||||
const Server = require('./lib/server');
|
const Server = require('./lib/server');
|
||||||
|
const db = require('./lib/db');
|
||||||
mongoose.connect(config.mongodb.uri, config.mongodb.options);
|
const util = require('./lib/util');
|
||||||
|
const node = new FullNode(config.bcoin);
|
||||||
|
|
||||||
logger.log('debug',
|
logger.log('debug',
|
||||||
'Debug mode started');
|
'Debug mode started');
|
||||||
|
|
||||||
const node = new FullNode(config.bcoin);
|
|
||||||
|
|
||||||
(async () => {
|
(async () => {
|
||||||
|
logger.log('debug',
|
||||||
|
'Starting Full Node');
|
||||||
await node.open();
|
await node.open();
|
||||||
await node.connect();
|
await node.connect();
|
||||||
|
|
||||||
@ -29,38 +29,38 @@ const node = new FullNode(config.bcoin);
|
|||||||
})();
|
})();
|
||||||
|
|
||||||
function processBlock(block) {
|
function processBlock(block) {
|
||||||
block.hash = revHex(block.hash().toString('hex'));
|
block.hash = util.revHex(block.hash().toString('hex'));
|
||||||
logger.log('debug',
|
logger.log('debug',
|
||||||
`New Block Height: ${block.height}, Hash: ${block.hash}`);
|
`New Block Height: ${block.height}, Hash: ${block.hash}`);
|
||||||
|
|
||||||
let b = new Block({
|
const b = new Block({
|
||||||
mainChain: true,
|
|
||||||
height: block.height,
|
|
||||||
hash: block.hash,
|
hash: block.hash,
|
||||||
|
size: block.size,
|
||||||
|
height: block.height,
|
||||||
version: block.version,
|
version: block.version,
|
||||||
merkleRoot: block.merkleRoot,
|
merkleRoot: block.merkleRoot,
|
||||||
|
tx: block.txs.map(tx => util.revHex(tx.hash().toString('hex'))),
|
||||||
time: block.ts,
|
time: block.ts,
|
||||||
timeNormalized: block.ts,
|
|
||||||
nonce: block.nonce,
|
nonce: block.nonce,
|
||||||
previousBlockHash: block.prevBlock,
|
bits: block.bits,
|
||||||
|
difficulty: block.bits,
|
||||||
|
chainwork: 0,
|
||||||
|
confirmations: 0,
|
||||||
|
previousBlockHash: block.previousBlockHash,
|
||||||
|
nextBlockHash: 0,
|
||||||
|
reward: 0,
|
||||||
|
timeNormalized: block.ts,
|
||||||
|
isMainChain: true,
|
||||||
|
poolInfo: Object,
|
||||||
transactionCount: block.txs.length,
|
transactionCount: block.txs.length,
|
||||||
});
|
});
|
||||||
b.save((err) => {
|
b.save((err) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
console.log(err);
|
console.log(err);
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function revHex(hexString) {
|
Server.listen(3000, () => {
|
||||||
let out = '';
|
|
||||||
for (let i = 0; i < hexString.length; i += 2) {
|
|
||||||
out = hexString.slice(i, i + 2) + out;
|
|
||||||
}
|
|
||||||
|
|
||||||
return out;
|
|
||||||
}
|
|
||||||
|
|
||||||
Server.listen(3000, function() {
|
|
||||||
console.log('listening on port 3000');
|
console.log('listening on port 3000');
|
||||||
})
|
});
|
||||||
|
|||||||
6
lib/db/index.js
Normal file
6
lib/db/index.js
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
const mongoose = require('mongoose');
|
||||||
|
const config = require('../../config/config.js');
|
||||||
|
|
||||||
|
mongoose.connect(config.mongodb.uri, config.mongodb.options);
|
||||||
|
|
||||||
|
module.exports = mongoose;
|
||||||
@ -10,4 +10,14 @@ app.get('/block/:blockhash', (req, res) => {
|
|||||||
res.send(req.params.blockhash);
|
res.send(req.params.blockhash);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
app.get('/blocks', (req, res) => {
|
||||||
|
res.send({
|
||||||
|
blocks: [],
|
||||||
|
length: 0,
|
||||||
|
pagination: {
|
||||||
|
next:
|
||||||
|
}
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
module.exports = app;
|
module.exports = app;
|
||||||
|
|||||||
12
lib/util/index.js
Normal file
12
lib/util/index.js
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
function revHex(hex) {
|
||||||
|
let rev = '';
|
||||||
|
for (let i = 0; i < hex.length; i += 2) {
|
||||||
|
rev = hex.slice(i, i + 2) + rev;
|
||||||
|
}
|
||||||
|
|
||||||
|
return rev;
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
revHex,
|
||||||
|
};
|
||||||
31
test/data/bcoin-blocks.json
Normal file
31
test/data/bcoin-blocks.json
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
{ hash: '000000002dd5588a74784eaa7ab0507a18ad16a236e7b1ce69f00d7ddfb5d0a6',
|
||||||
|
height: -1,
|
||||||
|
size: 215,
|
||||||
|
virtualSize: 215,
|
||||||
|
date: '2010-01-06T03:37:04Z',
|
||||||
|
version: '00000001',
|
||||||
|
prevBlock: '00000000920c6a17d60885cd045953e2449197770745d269903d6de71a5d5ea0',
|
||||||
|
merkleRoot: 'e73bbe87262db43b5d36d05dbb0f6d6fcfaaac86e5340e6c72523bbc179469be',
|
||||||
|
commitmentHash: null,
|
||||||
|
ts: 1262749024,
|
||||||
|
bits: 486594666,
|
||||||
|
nonce: 134870029,
|
||||||
|
txs:
|
||||||
|
[ { hash: 'e73bbe87262db43b5d36d05dbb0f6d6fcfaaac86e5340e6c72523bbc179469be',
|
||||||
|
witnessHash: 'e73bbe87262db43b5d36d05dbb0f6d6fcfaaac86e5340e6c72523bbc179469be',
|
||||||
|
size: 134,
|
||||||
|
virtualSize: 134,
|
||||||
|
value: '50.0',
|
||||||
|
fee: '0.0',
|
||||||
|
rate: '0.0',
|
||||||
|
minFee: '0.00000134',
|
||||||
|
height: -1,
|
||||||
|
block: null,
|
||||||
|
ts: 0,
|
||||||
|
date: null,
|
||||||
|
index: 0,
|
||||||
|
version: 1,
|
||||||
|
flag: 1,
|
||||||
|
inputs: [Array],
|
||||||
|
outputs: [Array],
|
||||||
|
locktime: 0 } ] }
|
||||||
4285
test/data/insight-blocks.json
Normal file
4285
test/data/insight-blocks.json
Normal file
File diff suppressed because it is too large
Load Diff
7
test/model.test.js
Normal file
7
test/model.test.js
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
const db = require('../lib/db');
|
||||||
|
const Block = require('../models/block.js');
|
||||||
|
|
||||||
|
Block.findOne({}, function(err, block) {
|
||||||
|
console.log(err)
|
||||||
|
console.log(block)
|
||||||
|
})
|
||||||
Loading…
Reference in New Issue
Block a user