change ranking algorithm to maximum cumulative-work-10-parents-ago
authorForrest Voight <forrest@forre.st>
Fri, 29 Jul 2011 04:15:28 +0000 (00:15 -0400)
committerForrest Voight <forrest@forre.st>
Fri, 29 Jul 2011 04:15:28 +0000 (00:15 -0400)
p2pool/data.py

index 6dd1c5b..d322f03 100644 (file)
@@ -357,13 +357,13 @@ class OkayTracker(bitcoin_data.Tracker):
         # decide best tree
         best_tail = max(self.verified.tails, key=lambda h: self.score(max(self.verified.tails[h], key=self.verified.get_height), ht)) if self.verified.tails else None
         # decide best verified head
-        scores = sorted(self.verified.tails.get(best_tail, []), key=lambda h: (self.verified.get_work(h), ht.get_min_height(self.verified.shares[h].previous_block), self.verified.shares[h].peer is None, -self.verified.shares[h].time_seen))
+        scores = sorted(self.verified.tails.get(best_tail, []), key=lambda h: (self.verified.get_work(self.verified.get_nth_parent_hash(h, min(5, self.verified.get_height(h)))), ht.get_min_height(self.verified.shares[h].previous_block), self.verified.shares[h].peer is None, -self.verified.shares[h].time_seen))
         
         
-        #if __debug__:
-            #print len(self.verified.tails.get(best_tail, []))
-            #for a in scores:
-            #    print '   ', '%x'%a, self.score(a, ht)
+        if __debug__:
+            print len(self.verified.tails.get(best_tail, []))
+            for h in scores:
+                print '   ', format_hash(h), format_hash(self.verified.shares[h].previous_hash), (self.verified.get_work(self.verified.get_nth_parent_hash(h, min(5, self.verified.get_height(h)))), ht.get_min_height(self.verified.shares[h].previous_block), self.verified.shares[h].peer is None, -self.verified.shares[h].time_seen)
         
         for share_hash in scores[:-5]:
             if self.shares[share_hash].time_seen > time.time() - 30: