removed previous_block, nonce, subsidy, new_script, previous_share_hash, donation...
authorForrest Voight <forrest@forre.st>
Mon, 6 Feb 2012 15:21:02 +0000 (10:21 -0500)
committerForrest Voight <forrest@forre.st>
Mon, 6 Feb 2012 21:21:31 +0000 (16:21 -0500)
p2pool/data.py
p2pool/skiplists.py

index c79bc1a..0024442 100644 (file)
@@ -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 '<Share %s>' % (' '.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:
index 63f8884..ac55bec 100644 (file)
@@ -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