GetEmptyBlcoksPre Info

// Part 1 Import Related Package
var Web3 = require('web3');
var mongoose = require('mongoose');
var moment = require('moment');

const startBlock = 14983823;
const endBlock = 14983831;
var preBlockNum = 0;
var preBlockMiner = "";
var preBlockBasefee = 0;
var preBlockTxcount = 0;
var preBlockGasusage = 0;


const ethContractSchema = mongoose.Schema({
    blockNumber: String,
    miner: String,
	basefee:String,
	txcount:String,
	gasusage:String,
	preblockNumber: String,
    preminer: String,
	prebasefee:String,
	pretxcount:String,
	pregasusage:String
    //code: String,
    //storage: String,
});

const EthContract = mongoose.model('emptypreinfo', ethContractSchema);

EthContract.addContract = function(newContract, callback) {
    newContract.save(callback);
};

EthContract.updateContract = function(contractAddress, newblockNumber, newminer,newbasefee,newcount,newgasusage,newpreblockNumber, newpreminer,newprebasefee,newprecount,newpregasusage) {
    EthContract.update({address: contractAddress}, { $set: {
        "blockNumber": newblockNumber,
        "miner": newminer,
	    "basefee":newbasefee,
	    "txcount":newcount,
		"gasusage":newgasusage,
        "preblockNumber": newpreblockNumber,
        "preminer": newpreminer,
	    "prebasefee":newprebasefee,
	    "pretxcount":newprecount,
		"pregasusage":newpregasusage
        }}, (err, suc) => {});
}

EthContract.checkUnique = function(contractAddress) {
    let res = EthContract.find({address: contractAddress});
    console.log(res);
    if(res) return false;
    return true;
};

async function connectDB() {
    mongoose.connect('mongodb://localhost:27017/eth_blockminer');
    mongoose.connection.on('connected', () => {
        console.log('MongoDB has started successfully.');
    });
    mongoose.connection.on('error', (err) => {
        console.log('Database error' + err);
    });
}

// Part  Connection to Local RPC
async function connectWeb3() {
    web3 = new Web3(new Web3.providers.HttpProvider("https://mainnet.infura.io/v3/daa578881869407da748a2603f5cee52"));
    //web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8546"));
    global.web3 = web3;
    console.log('web3 has connected successfully.');
}

async function scanTheChain() {
    for(let i = startBlock; i <= endBlock; i++) {
        console.log('scanning the chain.');
        console.log("[ " + moment().format('MMMM Do YYYY, h:mm:ss a') + " ] " + "Scanning Block " + i);
        var blockInfo = await web3.eth.getBlock(i);
        var blockMiner = blockInfo.miner;
		var blockBasefee = blockInfo.baseFeePerGas;
		var blockTxCnt = await web3.eth.getBlockTransactionCount(i);
		var blockGasusage = blockInfo.gasUsed;
		console.log('TxCount.'+blockTxCnt);
		if (blockTxCnt = 0){
			EthContract.addContract(new EthContract({
            blockNumber: i,
            miner: blockMiner,
			basefee: blockBasefee,
			txcount: blockTxCnt,
			gasusage: blockGasusage,
            preblockNumber: preBlockNum,
            preminer: preBlockMiner,
			prebasefee: preBlockBasefee,
			pretxcount: preBlockTxcount,
			pregasusage: preBlockGasusage
			}));
		}
		preBlockNum = i;
		preBlockMiner = blockMiner;
		preBlockBasefee = blockBasefee;
		preBlockTxcount = blockTxCnt;
		preBlockGasusage = blockGasusage;
    }
}
// Part Main Function
(async function main(){
    moment.locale('zh-cn');
    await connectDB();
    await connectWeb3();
    await scanTheChain();
})();
nohup node EmptyPreInfo.js >>EmptyPreInfo.log 2>&1 &
use eth_blockminer;
db.emptypreinfos.count()

json

mongoexport --forceTableScan -d  eth_blockminer  -c emptypreinfos -o ./emptypreinfos.json

json–csv

cat emptypreinfos.json | jsoncsv | mkexcel > emptypreinfos.csv
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值