From ed9359d649c9b9cc5e1c1a5b4a44da682f9b7a23 Mon Sep 17 00:00:00 2001 From: Forrest Voight Date: Thu, 3 May 2012 18:15:56 -0400 Subject: [PATCH] made stale_info an EnumType instead of just an integer --- p2pool/data.py | 8 ++++---- p2pool/main.py | 12 ++++++------ p2pool/web.py | 4 ++-- web-static/share.html | 2 +- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/p2pool/data.py b/p2pool/data.py index f5434a4..af4cb14 100644 --- a/p2pool/data.py +++ b/p2pool/data.py @@ -73,7 +73,7 @@ class Share(object): ('pubkey_hash', pack.IntType(160)), ('subsidy', pack.IntType(64)), ('donation', pack.IntType(16)), - ('stale_info', pack.IntType(8)), # 0 nothing, 253 orphan, 254 doa + ('stale_info', pack.EnumType(pack.IntType(8), dict((k, {0: None, 253: 'orphan', 254: 'doa'}.get(k, 'unk%i' % (k,))) for k in xrange(256)))), ('desired_version', pack.VarIntType()), ]) @@ -338,8 +338,8 @@ class OkayTracker(forest.Tracker): work=lambda share: bitcoin_data.target_to_average_attempts(share.target), my_count=lambda share: 1 if share.hash in my_share_hashes else 0, my_doa_count=lambda share: 1 if share.hash in my_doa_share_hashes else 0, - my_orphan_announce_count=lambda share: 1 if share.hash in my_share_hashes and share.share_data['stale_info'] == 253 else 0, - my_dead_announce_count=lambda share: 1 if share.hash in my_share_hashes and share.share_data['stale_info'] == 254 else 0, + my_orphan_announce_count=lambda share: 1 if share.hash in my_share_hashes and share.share_data['stale_info'] == 'orphan' else 0, + my_dead_announce_count=lambda share: 1 if share.hash in my_share_hashes and share.share_data['stale_info'] == 'doa' else 0, )), subset_of=self) self.get_cumulative_weights = WeightsSkipList(self) @@ -527,7 +527,7 @@ def get_pool_attempts_per_second(tracker, previous_share_hash, dist, min_work=Fa return attempts/time def get_average_stale_prop(tracker, share_hash, lookbehind): - stales = sum(1 for share in tracker.get_chain(share_hash, lookbehind) if share.share_data['stale_info'] != 0) + stales = sum(1 for share in tracker.get_chain(share_hash, lookbehind) if share.share_data['stale_info'] is not None) return stales/(lookbehind + stales) def get_expected_payouts(tracker, best_share_hash, block_target, subsidy, net): diff --git a/p2pool/main.py b/p2pool/main.py index e479d6f..fa55a59 100644 --- a/p2pool/main.py +++ b/p2pool/main.py @@ -434,11 +434,11 @@ def main(args, net, datadir_path, merged_urls, worker_endpoint): @tracker.verified.removed.watch def _(share): if share.hash in my_share_hashes and tracker.is_child_of(share.hash, current_work.value['best_share_hash']): - assert share.share_data['stale_info'] in [0, 253, 254] # we made these shares in this instance + assert share.share_data['stale_info'] in [None, 'orphan', 'doa'] # we made these shares in this instance removed_unstales_var.set(( removed_unstales_var.value[0] + 1, - removed_unstales_var.value[1] + (1 if share.share_data['stale_info'] == 253 else 0), - removed_unstales_var.value[2] + (1 if share.share_data['stale_info'] == 254 else 0), + removed_unstales_var.value[1] + (1 if share.share_data['stale_info'] == 'orphan' else 0), + removed_unstales_var.value[2] + (1 if share.share_data['stale_info'] == 'doa' else 0), )) if share.hash in my_doa_share_hashes and tracker.is_child_of(share.hash, current_work.value['best_share_hash']): removed_doa_unstales.set(removed_doa_unstales.value + 1) @@ -547,9 +547,9 @@ def main(args, net, datadir_path, merged_urls, worker_endpoint): subsidy=current_work2.value['subsidy'], donation=math.perfect_round(65535*args.donation_percentage/100), stale_info=(lambda (orphans, doas), total, (orphans_recorded_in_chain, doas_recorded_in_chain): - 253 if orphans > orphans_recorded_in_chain else - 254 if doas > doas_recorded_in_chain else - 0 + 'orphan' if orphans > orphans_recorded_in_chain else + 'doa' if doas > doas_recorded_in_chain else + None )(*get_stale_counts()), desired_version=2, ), diff --git a/p2pool/web.py b/p2pool/web.py index 725b991..bbe0748 100644 --- a/p2pool/web.py +++ b/p2pool/web.py @@ -121,8 +121,8 @@ def get_web_root(tracker, current_work, current_work2, get_current_txouts, datad global_stale_prop = p2pool_data.get_average_stale_prop(tracker, current_work.value['best_share_hash'], lookbehind) my_unstale_count = sum(1 for share in tracker.get_chain(current_work.value['best_share_hash'], lookbehind) if share.hash in my_share_hashes) - my_orphan_count = sum(1 for share in tracker.get_chain(current_work.value['best_share_hash'], lookbehind) if share.hash in my_share_hashes and share.share_data['stale_info'] == 253) - my_doa_count = sum(1 for share in tracker.get_chain(current_work.value['best_share_hash'], lookbehind) if share.hash in my_share_hashes and share.share_data['stale_info'] == 254) + my_orphan_count = sum(1 for share in tracker.get_chain(current_work.value['best_share_hash'], lookbehind) if share.hash in my_share_hashes and share.share_data['stale_info'] == 'orphan') + my_doa_count = sum(1 for share in tracker.get_chain(current_work.value['best_share_hash'], lookbehind) if share.hash in my_share_hashes and share.share_data['stale_info'] == 'doa') my_share_count = my_unstale_count + my_orphan_count + my_doa_count my_stale_count = my_orphan_count + my_doa_count diff --git a/web-static/share.html b/web-static/share.html index 9990af8..39f0cdd 100644 --- a/web-static/share.html +++ b/web-static/share.html @@ -51,7 +51,7 @@ b.append('p').text('Minimum difficulty: ' + target_to_difficulty(share.share_data.max_target)); b.append('p').text('Payout address: ' + share.share_data.payout_address); b.append('p').text('Donation amount: ' + d3.format('.3p')(share.share_data.donation)); - b.append('p').text('Stale info: ' + (share.share_data.stale_info == 0 ? 'none' : share.share_data.stale_info == 253 ? 'had an orphan' : share.share_data.stale_info == 254 ? 'had a dead' : 'unknown')); + b.append('p').text('Last stale: ' + share.share_data.stale_info); b.append('p').text('Nonce: ' + share.share_data.nonce); b.append('p').text('Desired version: ' + share.share_data.desired_version); b.append('h2').text('Block'); -- 1.7.1