# 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: