/**
  * @param PeerState $state
  * @param Peer $peer
  * @param GetHeaders $getHeaders
  */
 public function onGetHeaders(PeerState $state, Peer $peer, GetHeaders $getHeaders)
 {
     return;
     $chain = $this->node->chain();
     if ($chain->getIndex()->getHeader()->getTimestamp() >= time() - 60 * 60 * 24) {
         $locator = $getHeaders->getLocator();
         if (count($locator->getHashes()) === 0) {
             $start = $locator->getHashStop();
         } else {
             $start = $this->db->findFork($chain, $locator);
         }
         $headers = $this->db->fetchNextHeaders($start);
         $peer->headers($headers);
         $this->debug->log('peer.sentheaders', ['count' => count($headers), 'start' => $start->getHex()]);
     }
 }
Example #2
0
 /**
  * @param PeerState $state
  * @param Peer $peer
  * @param Headers $headersMsg
  */
 public function onHeaders(PeerState $state, Peer $peer, Headers $headersMsg)
 {
     $headers = $this->node->headers();
     try {
         $vHeaders = $headersMsg->getHeaders();
         $batch = $headers->prepareBatch($vHeaders);
         $count = count($batch->getIndices());
         if ($count > 0) {
             $headers->applyBatch($batch);
             $view = $batch->getTip();
             $indices = $batch->getIndices();
             $indexLast = end($indices);
             $state->updateBlockAvailability($view, $indexLast->getHash());
             if ($count >= 1999) {
                 $peer->getheaders($view->getHeadersLocator());
             }
         }
         $this->emit('headers', [$state, $peer, $batch]);
     } catch (\Exception $e) {
         $this->debug->log('error.onHeaders', ['error' => $e->getMessage(), 'trace' => $e->getTraceAsString()]);
     }
 }