public function testNetworkSerializer() { $network = Bitcoin::getDefaultNetwork(); $parser = new NetworkMessageSerializer(Bitcoin::getDefaultNetwork()); $factory = new Factory($network, new Random()); $version = '1'; $relayUntil = '9999999'; $expiration = '9898989'; $id = '123'; $cancel = '0'; $minVer = '0'; $maxVer = '0'; $priority = '50'; $comment = new Buffer('comment'); $statusBar = new Buffer('statusBar'); $setCancel = [1, 2]; $setSubVer = [50, 99]; $detail = new AlertDetail($version, $relayUntil, $expiration, $id, $cancel, $minVer, $maxVer, $priority, $comment, $statusBar, $setCancel, $setSubVer); $adapter = EcAdapterFactory::getPhpEcc(new Math(), EccFactory::getSecgCurves()->generator256k1()); $sig = new Signature($adapter, '1', '1'); $alert = $factory->alert($detail, $sig); $serialized = $alert->getNetworkMessage()->getBuffer(); $parsed = $parser->parse($serialized)->getPayload(); /** @var \BitWasp\Bitcoin\Networking\Messages\Alert $parsed */ $this->assertEquals($alert->getDetail(), $parsed->getDetail()); $this->assertEquals($alert->getSignature()->getR(), $parsed->getSignature()->getR()); $this->assertEquals($alert->getSignature()->getS(), $parsed->getSignature()->getS()); }
/** * @param Math $math * @param GeneratorPoint $generator * @return EcAdapterInterface */ public static function getEcAdapter(Math $math = null, GeneratorPoint $generator = null) { if (null === self::$adapter) { self::$adapter = EcAdapterFactory::getAdapter($math ?: self::getMath(), $generator ?: self::getGenerator()); } return self::$adapter; }
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"; }); }
/** * @param Math $math * @param GeneratorPoint $generator * @return EcAdapterInterface */ public static function getEcAdapter(Math $math = null, GeneratorPoint $generator = null) { return EcAdapterFactory::getAdapter($math ?: self::getMath(), $generator ?: self::getGenerator()); }