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 testBlockIndex() { $headerHex = '0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4a29ab5f49ffff001d1dac2b7c'; $header = BlockHeaderFactory::fromHex($headerHex); $hash = $header->getHash(); $height = 0; $work = 0; $index = new BlockIndex($hash, $height, $work, $header); $this->assertEquals($hash, $index->getHash()); $this->assertEquals($height, $index->getHeight()); $this->assertEquals($work, $index->getWork()); $this->assertSame($header, $index->getHeader()); }
public function testCreateInstance() { $ecAdapter = Bitcoin::getEcAdapter(); $params = new Params($ecAdapter->getMath()); $consensus = new Consensus($ecAdapter->getMath(), $params); $proofOfWork = new ProofOfWork($ecAdapter->getMath(), $params); $check = new HeaderCheck($consensus, $ecAdapter, $proofOfWork); $header = BlockHeaderFactory::fromHex($this->getGenesisHex()); $hash = $header->getHash(); $this->assertNoException(function () use($check, $hash, $header) { $check->check($hash, $header, false); }); $this->assertNoException(function () use($check, $hash, $header) { $check->check($hash, $header, true); }); $badHeader = new BlockHeader($header->getVersion(), $header->getPrevBlock(), $header->getMerkleRoot(), $header->getTimestamp(), $header->getBits(), 1); $this->assertException(function () use($check, $badHeader) { $hash = $badHeader->getHash(); $check->check($hash, $badHeader, true); }); }