From f8646705e5214cfcaa0455156ca371cd697e7acf Mon Sep 17 00:00:00 2001 From: Forrest Voight Date: Mon, 6 Feb 2012 10:21:02 -0500 Subject: [PATCH] removed previous_block, nonce, subsidy, new_script, previous_share_hash, donation from Share. moved get_sigop_count check back to Share.__init__ --- p2pool/data.py | 21 +++++++-------------- p2pool/skiplists.py | 2 +- 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/p2pool/data.py b/p2pool/data.py index c79bc1a..0024442 100644 --- a/p2pool/data.py +++ b/p2pool/data.py @@ -50,7 +50,7 @@ share_type = pack.ComposedType([ ]) class Share(object): - __slots__ = 'header previous_block share_info merkle_branch other_txs timestamp share_data new_script subsidy previous_hash previous_share_hash target nonce pow_hash header_hash hash time_seen peer donation net'.split(' ') + __slots__ = 'header share_info merkle_branch other_txs timestamp share_data previous_hash target pow_hash header_hash hash time_seen peer net'.split(' ') @classmethod def from_share(cls, share, net): @@ -85,7 +85,6 @@ class Share(object): raise ValueError('merkle_branch too long!') self.header = header - self.previous_block = header['previous_block'] self.share_info = share_info self.merkle_branch = merkle_branch @@ -93,17 +92,14 @@ class Share(object): self.target = self.share_info['bits'].target self.timestamp = self.share_info['timestamp'] - self.new_script = self.share_data['new_script'] - self.subsidy = self.share_data['subsidy'] - self.donation = self.share_data['donation'] - - if len(self.new_script) > 100: + if len(self.share_data['new_script']) > 100: raise ValueError('new_script too long!') + if script.get_sigop_count(self.share_data['new_script']) > 1: + raise ValueError('too many sigops!') - self.previous_hash = self.previous_share_hash = self.share_data['previous_share_hash'] - self.nonce = self.share_data['nonce'] + self.previous_hash = self.share_data['previous_share_hash'] - if len(self.nonce) > 100: + if len(self.share_data['nonce']) > 100: raise ValueError('nonce too long!') if len(self.share_data['coinbase']) > 100: @@ -134,9 +130,6 @@ class Share(object): return '' % (' '.join('%s=%r' % (k, getattr(self, k)) for k in self.__slots__),) def check(self, tracker): - if script.get_sigop_count(self.new_script) > 1: - raise ValueError('too many sigops!') - share_info, gentx = generate_transaction(tracker, self.share_info['share_data'], self.header['bits'].target, self.share_info['timestamp'], self.net) if share_info != self.share_info: raise ValueError('share difficulty invalid') @@ -344,7 +337,7 @@ class OkayTracker(forest.Tracker): decorated_heads = sorted((( self.verified.get_work(self.verified.get_nth_parent_hash(h, min(5, self.verified.get_height(h)))), #self.verified.shares[h].peer is None, - (self.verified.shares[h].previous_block, self.verified.shares[h].header['bits']) == (previous_block, bits) or self.verified.shares[h].peer is None, + (self.verified.shares[h].header['previous_block'], self.verified.shares[h].header['bits']) == (previous_block, bits) or self.verified.shares[h].peer is None, -self.verified.shares[h].time_seen, ), h) for h in self.verified.tails.get(best_tail, [])) if p2pool.DEBUG: diff --git a/p2pool/skiplists.py b/p2pool/skiplists.py index 63f8884..ac55bec 100644 --- a/p2pool/skiplists.py +++ b/p2pool/skiplists.py @@ -7,7 +7,7 @@ class WeightsSkipList(forest.TrackerSkipList): from p2pool.bitcoin import data as bitcoin_data share = self.tracker.shares[element] att = bitcoin_data.target_to_average_attempts(share.target) - return 1, {share.new_script: att*(65535-share.donation)}, att*65535, att*share.donation + return 1, {share.share_data['new_script']: att*(65535-share.share_data['donation'])}, att*65535, att*share.share_data['donation'] def combine_deltas(self, (share_count1, weights1, total_weight1, total_donation_weight1), (share_count2, weights2, total_weight2, total_donation_weight2)): return share_count1 + share_count2, math.add_dicts(weights1, weights2), total_weight1 + total_weight2, total_donation_weight1 + total_donation_weight2 -- 1.7.1