Browse Source

mmnode-blocks-info: add totals stats

The MMGen Project 4 years ago
parent
commit
db87c8e62e
1 changed files with 21 additions and 1 deletions
  1. 21 1
      mmgen/node_tools/BlocksInfo.py

+ 21 - 1
mmgen/node_tools/BlocksInfo.py

@@ -95,7 +95,7 @@ class BlocksInfo:
 	)
 	fs_lsqueeze2 = ('interval',)
 
-	all_stats = ['avg','range','diff']
+	all_stats = ['avg','totals','range','diff']
 	dfl_stats = ['range','diff']
 	noindent_stats = ['avg']
 
@@ -522,6 +522,26 @@ class BlocksInfo:
 		fs = ''.join(self.gen_fs(self.fnames,fill=skip,add_name=True)).strip()
 		return ('averages', ('Averages:', (fs, dict(gen())) ))
 
+	async def create_totals_stats(self):
+		coin = self.rpc.proto.coin
+		fields = {
+			'interval': ('Solve Time:    {} h/m/s', secs_to_dhms),
+			'subsidy':  ('Subsidy:       {} %s' % coin, self.fmt_funcs['su']),
+			'totalfee': ('Fees:          {} %s' % coin, self.fmt_funcs['tf']),
+			'earnings': ('Subsidy+Fees:  {} %s' % coin, self.fmt_funcs['tf']),
+			'nTx':      ('nTx:           {}', int),
+			'inputs':   ('Inputs:        {}', int),
+			'outputs':  ('Outputs:       {}', int),
+			'utxo_inc': ('UTXO change:  {:<+}', int),
+		}
+		fnames = list( set(fields) & set(self.fnames) )
+		vals = dict( ( name, sum(getattr(blk,name) for blk in self.res) ) for name in fnames )
+		if 'subsidy' in vals and 'totalfee' in vals:
+			vals['earnings'] = vals['subsidy'] + vals['totalfee']
+			fnames.append('earnings')
+		res = [( v[0], k, v[1], vals[k] ) for k,v in fields.items() if k in fnames]
+		return ( 'totals', ['Totals:'] + res )
+
 	def process_stats_pre(self,i):
 		if self.fnames or i != 0:
 			Msg('')