You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

84 lines
2.0 KiB

/*!
* scripts/createfirstblocks.js
* Copyright © 2019 – Katana Cryptographic Ltd. All Rights Reserved.
*/
'use strict'
const bitcoin = require('bitcoinjs-lib')
const Logger = require('../lib/logger')
const util = require('../lib/util')
const db = require('../lib/db/mysql-db-wrapper')
const network = require('../lib/bitcoin/network')
const RpcClient = require('../lib/bitcoind-rpc/rpc-client')
const keys = require('../keys')[network.key]
/**
* Script inserting first blocks into the database
* (without a scan of transactions)
*/
// RPC Client requests data from bitcoind
let client = new RpcClient()
// Database id of the previous block
let prevID = null;
async function processBlock(height) {
Logger.info('Start processing block ' + height)
const blockHash = await client.getblockhash(height)
if (blockHash) {
const header = await client.getblockheader(blockHash, true)
if (header) {
const dbBlock = {
blockHeight: header.height,
blockHash: header.hash,
blockTime: header.time,
blockParent: prevID
}
prevID = await db.addBlock(dbBlock)
Logger.info('Successfully processed block ' + height)
} else {
Logger.error(null, 'Unable to retrieve header of block ' + height)
return Promise.reject()
}
} else {
Logger.error(null, 'Unable to find hash of block ' + height)
return Promise.reject()
}
}
async function run(heights) {
return util.seriesCall(heights, processBlock)
}
/**
* Launch the script
*/
// Retrieves command line arguments
if (process.argv.length < 3) {
Logger.error(null, 'Missing arguments. Command = node create-first-blocks.js <number_of_blocks>')
return
}
// Create list of integers from 0 to index passed as parameter (included)
const n = parseInt(process.argv[2])
const heights = Array.from(Array(n).keys())
Logger.info('Start processing')
const startupTimeout = setTimeout(async function() {
return run(heights).then(() => {
Logger.info('Processing completed')
})
}, 1500)