private function updateGreatestWork() { $segments = $this->segments; if (count($this->segments) > 1) { usort($segments, new ChainWorkComparator(Bitcoin::getMath())); } $best = end($segments); if (is_null($this->best) || $this->best instanceof ChainSegment && $this->best->getLast() !== $best->getLast()) { $this->best = $best; } }
/** * @return int|string */ public function count() { return $this->segment->getLast()->getHeight(); }
/** * @param ChainSegment $a * @param ChainSegment $b * @return int */ public function __invoke(ChainSegment $a, ChainSegment $b) { return $this->math->cmp(gmp_init($a->getLast()->getWork(), 10), gmp_init($b->getLast()->getWork(), 10)); }