} } $loc[] = $item->getHash(); } echo " [txs: " . count($txs) . ", blocks: " . count($blks) . ", filtered: " . count($filtered) . "]\n"; } $loop = React\EventLoop\Factory::create(); $factory = new \BitWasp\Bitcoin\Networking\Factory($loop); $dns = $factory->getDns(); $peerFactory = $factory->getPeerFactory($dns); $local = $peerFactory->getAddress('192.168.192.39'); $host = $peerFactory->getAddress('192.168.192.101'); $locator = $peerFactory->getLocator(); $manager = $peerFactory->getManager($locator); $blockchain = new Blockchain($math, new \BitWasp\Bitcoin\Block\Block($math, new \BitWasp\Bitcoin\Block\BlockHeader('1', '0000000000000000000000000000000000000000000000000000000000000000', '4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b', 1231006505, \BitWasp\Buffertools\Buffer::hex('1d00ffff'), 2083236893)), new BlockStorage(new ArrayCache()), new BlockIndex(new BlockHashIndex(new ArrayCache()), new BlockHeightIndex(new ArrayCache())), new UtxoSet(new ArrayCache())); $node = new \BitWasp\Bitcoin\Networking\Node\Node($local, $blockchain, $manager); $locator->queryDnsSeeds()->then(function (\BitWasp\Bitcoin\Networking\Peer\Locator $locator) use($manager) { return $manager->connectNextPeer(); }, function ($error) { echo $error; throw $error; })->then(function (Peer $peer) use($node, $loop) { $height = $node->chain()->index()->height(); $peer->on('inv', function (Peer $peer, \BitWasp\Bitcoin\Networking\Messages\Inv $inv) use($node, $height) { decodeInv($peer, $inv); $unseen = []; foreach ($inv->getItems() as $inventory) { if ($inventory->isBlock()) { if (!$height->contains($inventory->getHash()->getHex())) { $unseen[] = $inventory; }
require_once "../vendor/autoload.php"; $math = BitWasp\Bitcoin\Bitcoin::getMath(); $loop = React\EventLoop\Factory::create(); $factory = new \BitWasp\Bitcoin\Networking\Factory($loop); $dns = $factory->getDns(); $peerFactory = $factory->getPeerFactory($dns); $locator = $peerFactory->getLocator(); $handler = $peerFactory->getPacketHandler(); $redis = new Redis(); $redis->connect('127.0.0.1'); $mkCache = function ($namespace) use($redis) { $cache = new \Doctrine\Common\Cache\RedisCache(); $cache->setRedis($redis); $cache->setNamespace($namespace); return $cache; }; $headerFS = $mkCache('headers'); $heightFS = $mkCache('height'); $hashFS = $mkCache('hash'); $peerRecorderFS = $mkCache('peer.recorder'); $headerchain = new \BitWasp\Bitcoin\Chain\Headerchain($math, new \BitWasp\Bitcoin\Block\BlockHeader('1', '0000000000000000000000000000000000000000000000000000000000000000', '4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b', 1231006505, \BitWasp\Buffertools\Buffer::hex('1d00ffff'), 2083236893), new \BitWasp\Bitcoin\Chain\HeaderStorage($headerFS), new \BitWasp\Bitcoin\Chain\BlockIndex(new \BitWasp\Bitcoin\Chain\BlockHashIndex($hashFS), new \BitWasp\Bitcoin\Chain\BlockHeightIndex($heightFS))); $headerService = new \BitWasp\Bitcoin\Networking\Peer\Services\HeaderIndexService($headerchain); $pingService = new \BitWasp\Bitcoin\Networking\Peer\Services\PingService($loop); $debugService = new \BitWasp\Bitcoin\Networking\Peer\Services\DebugPacketService(); $handler->addServices([$pingService, $debugService, $headerService]); $manager = $peerFactory->getManager($locator, $handler); $local = $peerFactory->getAddress('192.168.192.39', 32391); $node = new \BitWasp\Bitcoin\Networking\Node\Node($local, $manager); $node->start(2); $loop->run();
<?php require_once "../vendor/autoload.php"; use BitWasp\Bitcoin\Chain\BlockHashIndex; use BitWasp\Bitcoin\Chain\BlockHeightIndex; use BitWasp\Bitcoin\Chain\BlockIndex; $math = BitWasp\Bitcoin\Bitcoin::getMath(); $loop = React\EventLoop\Factory::create(); $factory = new \BitWasp\Bitcoin\Networking\Factory($loop); $dns = $factory->getDns(); $peerFactory = $factory->getPeerFactory($dns); $connector = $peerFactory->getConnector(); $redis = new Redis(); $redis->connect('127.0.0.1'); $mkCache = function ($namespace) use($redis) { $cache = new \Doctrine\Common\Cache\RedisCache(); $cache->setRedis($redis); $cache->setNamespace($namespace); return $cache; }; $headerFS = $mkCache('headers'); $heightFS = $mkCache('height'); $hashFS = $mkCache('hash'); $headerchain = new \BitWasp\Bitcoin\Chain\Headerchain($math, new \BitWasp\Bitcoin\Block\BlockHeader('1', '0000000000000000000000000000000000000000000000000000000000000000', '4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b', 1231006505, \BitWasp\Buffertools\Buffer::hex('1d00ffff'), 2083236893), new \BitWasp\Bitcoin\Chain\HeaderStorage($headerFS), new BlockIndex(new BlockHashIndex($hashFS), new BlockHeightIndex($heightFS))); $host = $peerFactory->getAddress('91.146.57.187'); $local = $peerFactory->getAddress('192.168.192.39', 32391); $locator = $peerFactory->getLocator(); $manager = $peerFactory->getManager($locator); $node = new \BitWasp\Bitcoin\Networking\Node\Node($local, $headerchain, $manager); $node->start(1); $loop->run();