function decodeInv(Peer $peer, \BitWasp\Bitcoin\Networking\Messages\Inv $inv) { $txs = []; $filtered = []; $blks = []; foreach ($inv->getItems() as $item) { $loc = null; if ($item->isBlock()) { $loc =& $blks; } else { if ($item->isTx()) { $loc =& $txs; } else { if ($item->isFilteredBlock()) { $loc =& $filtered; } } } $loc[] = $item->getHash(); } echo " [txs: " . count($txs) . ", blocks: " . count($blks) . ", filtered: " . count($filtered) . "]\n"; }
function decodeInv(Peer $peer, \BitWasp\Bitcoin\Networking\Messages\Inv $inv) { $txs = []; $filtered = []; $blks = []; foreach ($inv->getItems() as $item) { if ($item->isBlock()) { $blks[] = ''; } else { if ($item->isTx()) { $txs[] = ''; } else { if ($item->isFilteredBlock()) { $filtered[] = ''; } } } } if (count($blks) > 0 || count($filtered) > 0) { echo " [blocks: " . count($blks) . ", txs: " . count($txs) . ", filtered: " . count($filtered) . "]\n"; } }
/** * @param PeerState $state * @param Peer $peer * @param Inv $inv */ public function onInv(PeerState $state, Peer $peer, Inv $inv) { $txs = []; $blocks = []; $filtered = []; foreach ($inv->getItems() as $item) { if ($item->isBlock()) { $blocks[] = $item; } elseif ($item->isTx()) { $txs[] = $item; } elseif ($item->isFilteredBlock()) { $filtered[] = $item; } } if (count($blocks) > 0) { $this->emit('blocks', [$state, $peer, $blocks]); } if (count($txs) > 0) { $this->emit('transactions', [$state, $peer, $txs]); } if (count($filtered) > 0) { $this->emit('filtered', [$state, $peer, $filtered]); } }
/** * @param Peer $peer * @param Inv $inv */ public function onInv(Peer $peer, Inv $inv) { $count = count($inv->getItems()); $request = []; for ($i = 0; $i < $count; $i++) { $item = $inv->getItem($i); $hash = $item->getHash()->getBinary(); array_push($this->inventory, $hash); $request[] = $item; } if (count($request)) { echo "GET " . count($request) . " txs \n"; $peer->getdata($request); } }
/** * @param Inv $inv * @return \BitWasp\Buffertools\Buffer */ public function serialize(Inv $inv) { return $this->getTemplate()->write([$inv->getItems()]); }
/** * @param Peer $peer * @param Inv $inv */ public function onInv(Peer $peer, Inv $inv) { echo 'INV size: ' . count($inv->getItems()) . PHP_EOL; $best = $this->chain(); $vFetch = []; $blocks = []; foreach ($inv->getItems() as $item) { if ($item->isBlock()) { $blocks[] = $item; } else { $vFetch[] = $item; } } if (count($blocks) !== 0) { $blockView = $best->bestBlocksCache(); $this->blockDownload->advertised($best, $blockView, $peer, $blocks); } if (count($vFetch) !== 0) { $peer->getdata($vFetch); } }