Skip to content

32teeth/ethereum-geth-console-report

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 

Repository files navigation

##Geth

console report tool


Start your geth console

geth -rpc console 2> geth.log

Installation

###Option 1

  • download and save the report.js file to your local machine
  • in the geth console:
> loadScript("[path to folder]/report.js")

once the file has been loaded

> report.start()

###Option 2 once the console is up an running, copy past the below code

var report = (function(){

	var graph = {rows:15,cols:36,vals:[],chars:["⠀", "⣀", "⣤", "⣶", "⣿"]};
	for(var n = 0; n < graph.cols; n++){graph.vals.push(0);};

	var colors = {black:"30",red:"31",green:"32",yellow:"33",blue:"34",magenta:"35",cyan:"36",white:"37"};
	var color = "\x1b[";
	var modifier = {normal:"m",bold:";1m",fill:";3m",underline:";4m",};

	var reset = color + "0" + modifier.normal;
	var clear = "\033c";

	var wait = 250;
	var interval = {};

	var wallet = eth.coinbase;
	var hashrate = 0;
	var date = new Date();
	function update()
	{
		!miner ? false : miner.start();
		date = new Date();
	};

	function mined(){};

	function matrix(x, y) {
	  var arr = new Array(y);
		for (var i = 0; i < y; i++){arr[i] = new Array(x);}
		return arr;
	};

	function padding(str, n) {
	  var linew = str.split('\n')[0].length;
	  var line = Array(linew).join(' ') + '\n';
	  str = Array(n).join(line) + str;
	  str = str + Array(n).join(line);
	  str = str.replace(/^/gm, Array(n).join(' '));
	  return str;
	};

	function string(out) {
	  var buf = [];
		for (var i = 0; i < out.length; i++){buf.push(out[i].join(''));}
	  return buf.join('\n');
	};

	function max(data) {
	  var n = data[0];
	  for (var i = 1; i < data.length; i++){n = data[i] > n ? data[i] : n;};
	  return n;
	};	

	function draw()
	{
		graph.vals.shift();
		graph.vals.push(hashrate);

	  var w = 80;
	  var h = 10;

	  var pad = 0;
	  w -= pad * 2;
	  h -= pad * 2;

	  var out = matrix(w, h);
	  var m = max(graph.vals) || 0;
	  var label = Math.abs(m).toString();
	  var labelw = label.length;
	  var labelp = 1;

	  var ch = h;
	  var cw = w - labelw - labelp;

	  for (var y = 0; y < h; y++) {
	    for (var x = 0; x < w; x++) {
	      out[y][x] = ' ';
	    };
	  };

	  for (var i = 0; i < labelw; i++) {out[0][i] = label[i];}
	  out[h - 1][labelw - labelp] = '0';
	  for (var y = 0; y < h; y++) {out[y][labelw + labelp] = '․';}

	  var x = labelw + labelp;
	  while (x < w) {
	    out[h - 1][x++] = '․';
	    out[h - 1][x++] = ' ';
	  }

	  var space = Math.floor(w / 2) - 1;
	  var excess = Math.max(0, graph.vals.length - space);
	  if (excess) graph.vals = graph.vals.slice(excess);

	  var x = labelw + labelp + 2;
	  for (var i = 0; i < graph.vals.length; i++) {
	    var d = graph.vals[i];
	    var p = d / m;
	    var dy = (h - 2) * p;
	    var y = Math.round(dy);
	    var c = y < 0 ? graph.chars[0] : graph.chars[4];
	    if (y < 0){y = -y};

	    dy = Math.floor(Math.abs((dy - y)*10));
	    if(dy < 0){dy = 0;}
	    var index = true;
	    while (y--) {
	      out[Math.abs(y - h) - 2][x] = dy != 0 && index ? graph.chars[dy] : c;
	      index = false;
	    }
	    x += 2;
	  }

	  return padding(string(out, h), pad);
	}

	function stats()
	{
		var d = "\tdate:\t\t" + new Date();
		var w = "\twallet:\t\t" + eth.coinbase;
		var h = "\thashrate:\t" + color + colors.green + modifier.bold + parseFloat((miner.hashrate/1000)/1000).toFixed(3) + " mhs";
		var b = "\tether:\t\t" + color + colors.green + modifier.bold + web3.fromWei(eth.getBalance(eth.coinbase), "ether") + " Ξ";
		var di = "\tdifficulty:\t" + eth.getBlock("latest").difficulty;
		var m = "\tmined:\t\t";
		var s = false;
		for(var n = eth.blockNumber; n >= (eth.blockNumber-10); n--){if(eth.getBlock(n).miner == eth.coinbase){m += " " + n;s = true;}};
		if(!s){m += color + colors.red + modifier.bold + "no block mined"};
		var message = reset + [d,w,h,b,di,m].join(" " + reset + "\n");
		return message;
	}

	function start()
	{
		miner.start();
		var message = clear;
		message += reset;
		message += color + colors.green + modifier.normal + "Starting Report\n";
		message += reset;
		message += "*please wait for initial response*";
		console.log(message);
		interval = setInterval(function(){
			hashrate = parseFloat((miner.hashrate/1000)/1000).toFixed(3);
			var s = stats();			
			var d = draw();		
			console.log("\033[2J" + "\033[0f" + reset + d + "\n\n" + reset + s + reset);
		}, wait);

	};

	function stop()
	{
		clearInterval(interval);
		var message = "";
		message += reset;
		message += color + colors.red + "Stopping Report\n";
		message += reset;
		message += "*please wait for shut down of reporting*";
		console.log(message);		
	};

	return {
		start:function(){start()},
		stop:function(){stop()}
	};

})();

###start the reporting

report.start()

you'll see this

example

###stop the reporting

report.stop()

###donations appreciated

var address = "0x30bb4357cd6910c86d2238bf727cbe8156680e62"
var amount = 0.01 // <- feel free to increase :)
eth.sendTransaction({from:eth.coinbase, to:address, value: web3.toWei(amount, "ether")})
var send = true
  • eth: 0x30bb4357cd6910c86d2238bf727cbe8156680e62
  • btc: 1NaVpK1qjx2ZT2e4xLDiiDjHiguR7DM8j2

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published