public function __construct() { $this->haveTx = []; $this->math = Bitcoin::getMath(); $this->generator = Bitcoin::getGenerator(); $this->adapter = EcAdapterFactory::getPhpEcc($this->math, $this->generator); $this->order = $this->adapter->getGenerator()->getOrder(); $this->loop = \React\EventLoop\Factory::create(); $factory = new \BitWasp\Bitcoin\Networking\Factory($this->loop); $dns = $factory->getDns(); $peerFactory = $factory->getPeerFactory($dns); $locator = $peerFactory->getLocator(); $server = new ReactServer($this->loop); $listener = $peerFactory->getListener($server); $this->manager = $peerFactory->getManager(true); $this->manager->registerListener($listener); $this->manager->on('outbound', function (Peer $peer) { $this->setupPeer($peer); }); $this->manager->on('inbound', function (Peer $peer) { $this->setupPeer($peer); }); $locator->queryDnsSeeds()->then(function (Locator $locator) { $this->manager->connectToPeers($locator, 5); $this->loop->addPeriodicTimer(30, function () { echo "Have seen " . $this->inputs . " inputs and " . $this->counter . " high-S signatures \n"; echo "There are " . count($this->violators) . " violators \n"; $largest = 0; $worstPeer = null; foreach ($this->violators as $ip => $v) { if ($v > $largest) { $worstPeer = $ip; $largest = $v; } } if (!is_null($worstPeer)) { echo "Worst peer: {$worstPeer} ({$largest})\n"; } }); echo "Connecting..\n"; }); }