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()); }
public function testMemPool() { $factory = new Factory(Bitcoin::getDefaultNetwork(), new Random()); $mem = $factory->mempool(); $this->assertSame('mempool', $mem->getNetworkCommand()); $this->assertEquals(new Buffer(), $mem->getBuffer()); }
public function testGetAddr() { $factory = new Factory(Bitcoin::getDefaultNetwork(), new Random()); $getaddr = $factory->getaddr(); $this->assertSame('getaddr', $getaddr->getNetworkCommand()); $this->assertEquals(new Buffer(), $getaddr->getBuffer()); }
public function testNetworkSerializable() { $factory = new Factory(Bitcoin::getDefaultNetwork(), new Random()); $filterclear = $factory->filterclear(); $serialized = $filterclear->getNetworkMessage()->getBuffer(); $parsed = $factory->parse(new Parser($serialized))->getPayload(); $this->assertEquals($parsed, $filterclear); }
public function testNetworkSerializer() { $net = Bitcoin::getDefaultNetwork(); $factory = new Factory($net, new Random()); $inv = $factory->inv([new Inventory(Inventory::MSG_BLOCK, Buffer::hex('4141414141414141414141414141414141414141414141414141414141414141'))]); $serialized = $inv->getNetworkMessage()->getBuffer(); $parsed = $factory->parse(new Parser($serialized))->getPayload(); $this->assertEquals($inv, $parsed); }
public function testNetworkMessage() { $net = Bitcoin::getDefaultNetwork(); $parser = new NetworkMessageSerializer($net); $factory = new Factory($net, new Random()); $headers = $factory->headers([BlockHeaderFactory::fromHex('0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4a29ab5f49ffff001d1dac2b7c')]); $serialized = $headers->getNetworkMessage()->getBuffer(); $parsed = $parser->parse($serialized)->getPayload(); $this->assertEquals($headers, $parsed); }
public function testNetworkSerializer() { $net = Bitcoin::getDefaultNetwork(); $serializer = new NetworkMessageSerializer($net); $factory = new Factory($net, new Random()); $ping = $factory->ping(); $serialized = $ping->getNetworkMessage()->getBuffer(); $parsed = $serializer->parse($serialized)->getPayload(); $this->assertEquals($ping, $parsed); }
public function testNetworkSerializer() { $net = Bitcoin::getDefaultNetwork(); $factory = new Factory($net, new Random()); $locator = new BlockLocator([Buffer::hex('4141414141414141414141414141414141414141414141414141414141414141')], Buffer::hex('0000000000000000000000000000000000000000000000000000000000000000')); $getblocks = $factory->getblocks('1', $locator); $serialized = $getblocks->getNetworkMessage()->getBuffer(); $parsed = $factory->parse(new Parser($serialized))->getPayload(); $this->assertEquals($getblocks, $parsed); }
public function testBlock() { $txHex = '01000000' . '01' . '0000000000000000000000000000000000000000000000000000000000000000FFFFFFFF' . '4D' . '04FFFF001D0104455468652054696D65732030332F4A616E2F32303039204368616E63656C6C6F72206F6E206272696E6B206F66207365636F6E64206261696C6F757420666F722062616E6B73' . 'FFFFFFFF' . '01' . '00F2052A01000000' . '43' . '4104678AFDB0FE5548271967F1A67130B7105CD6A828E03909A67962E0EA1F61DEB649F6BC3F4CEF38C4F35504E51EC112DE5C384DF7BA0B8D578A4C702B6BF11D5FAC' . '00000000'; $blockHex = '01000000' . '0000000000000000000000000000000000000000000000000000000000000000' . '3BA3EDFD7A7B12B27AC72C3E67768F617FC81BC3888A51323A9FB8AA4B1E5E4A' . '29AB5F49' . 'FFFF001D' . '1DAC2B7C' . '01' . $txHex; $newBlock = BlockFactory::fromHex($blockHex); $factory = new Factory(Bitcoin::getDefaultNetwork(), new Random()); $block = $factory->block($newBlock); $this->assertEquals('block', $block->getNetworkCommand()); $this->assertEquals($newBlock, $block->getBlock()); $this->assertEquals($newBlock->getHex(), $block->getHex()); }
public function testNetworkSerialize() { $math = new Math(); $factory = new Factory(Bitcoin::getDefaultNetwork(), new Random()); $filter = BloomFilter::create($math, 10, 1.0E-6, 0, new Flags(BloomFilter::UPDATE_ALL)); $filter->insertData(Buffer::hex('04943fdd508053c75000106d3bc6e2754dbcff19')); $filterload = $factory->filterload($filter); $serialized = $filterload->getNetworkMessage()->getBuffer(); $parsed = $factory->parse(new Parser($serialized))->getPayload(); $this->assertEquals($parsed, $filterload); }
public function testNetworkSerializer() { list($hex, $tx) = $this->getTestTx(); $net = Bitcoin::getDefaultNetwork(); $serializer = new NetworkMessageSerializer($net); $factory = new Factory($net, new Random()); $txMsg = $factory->tx($tx); $serialized = $txMsg->getNetworkMessage()->getBuffer(); $parsed = $serializer->parse($serialized)->getPayload(); $this->assertEquals($txMsg, $parsed); }
public function testVersionWithoutBlockchain() { $factory = new Factory(Bitcoin::getDefaultNetwork(), new Random()); $v = '60002'; $services = Buffer::hex('0000000000000000'); $time = (string) time(); $recipient = new NetworkAddress(Buffer::hex('1'), '10.0.0.1', '8332'); $sender = new NetworkAddress(Buffer::hex('1'), '10.0.0.2', '8332'); $userAgent = new Buffer("/Satoshi:0.7.2/"); $lastBlock = '212672'; $version = $factory->version($v, $services, $time, $recipient, $sender, $userAgent, $lastBlock, true); $this->assertFalse($version->hasBlockchain()); }
public function testNotFound() { $factory = new Factory(Bitcoin::getDefaultNetwork(), new Random()); $not = $factory->notfound([]); $this->assertEquals('notfound', $not->getNetworkCommand()); $this->assertEquals(0, count($not)); $empty = $not->getItems(); $this->assertEquals(0, count($empty)); $this->assertInternalType('array', $empty); $inv = new Inventory(Inventory::MSG_TX, Buffer::hex('4141414141414141414141414141414141414141414141414141414141414141')); $not = new NotFound([$inv]); $this->assertEquals(1, count($not)); $this->assertEquals($inv, $not->getItem(0)); }
public function testNetworkSerializer() { $network = Bitcoin::getDefaultNetwork(); $time = '9999999'; $ip = '192.168.0.1'; $port = '8333'; $services = Buffer::hex('0000000000000000', 8); $add = new NetworkAddressTimestamp($time, $services, $ip, $port); $parser = new NetworkMessageSerializer(Bitcoin::getDefaultNetwork()); $factory = new Factory($network, new Random()); $addr = $factory->addr([$add]); $serialized = $addr->getNetworkMessage()->getBuffer(); $parsed = $parser->parse($serialized)->getPayload(); $this->assertEquals($addr, $parsed); }
public function testMerkleBlock() { $factory = new Factory(NetworkFactory::bitcoin(), new Random()); $hex = '0100000079cda856b143d9db2c1caff01d1aecc8630d30625d10e8b4b8b0000000000000b50cc069d6a3e33e3ff84a5c41d9d3febe7c770fdcc96b2c3ff60abe184f196367291b4d4c86041b8fa45d630101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff08044c86041b020a02ffffffff0100f2052a01000000434104ecd3229b0571c3be876feaac0442a9f13c5a572742927af1dc623353ecf8c202225f64868137a18cdd85cbbb4c74fbccfd4f49639cf1bdc94a5672bb15ad5d4cac00000000'; $block = BlockFactory::fromHex($hex); $math = new Math(); $filter = BloomFilter::create($math, 10, 1.0E-6, 0, new Flags(BloomFilter::UPDATE_ALL)); $filter->insertHash('63194f18be0af63f2c6bc9dc0f777cbefed3d9415c4af83f3ee3a3d669c00cb5'); // Check that Merkleblock message is serialized correctly $filtered = $block->filter($filter); $this->assertEquals($block->getHeader(), $filtered->getHeader()); $merkle = $factory->merkleblock($filtered); $serialized = $merkle->getNetworkMessage()->getBuffer(); $parsed = $factory->parse(new Parser($serialized))->getPayload(); $this->assertEquals($merkle, $parsed); }
/** * Issue a Reject message, with a required $msg, $code, and $reason * * @param Buffer $msg * @param int $code * @param Buffer $reason * @param Buffer $data */ public function reject(Buffer $msg, $code, Buffer $reason, Buffer $data = null) { $this->send($this->msgs->reject($msg, $code, $reason, $data)); }
/** * @expectedException \InvalidArgumentException * @expectedExceptionMessage Invalid code provided to reject message */ public function testWithInvalidCode() { $net = Bitcoin::getDefaultNetwork(); $factory = new Factory($net, new Random()); $factory->reject(new Buffer(), 10, new Buffer(), new Buffer()); }