/** * @param Parser $parser * @return \BitWasp\Bitcoin\Block\Block * @throws \BitWasp\Buffertools\Exceptions\ParserOutOfRange */ public function fromParser(Parser &$parser) { list($bytes, $blockSize) = $this->getHeaderTemplate()->parse($parser); if ($bytes->getHex() !== $this->network->getNetMagicBytes()) { throw new \RuntimeException('Block version bytes did not match network'); } return $this->blockSerializer->fromParser(new Parser($parser->readBytes($blockSize))); }
/** * @param NetworkMessage $object * @return Buffer */ public function serialize(NetworkMessage $object) { $payload = $object->getPayload()->getBuffer(); $command = str_pad(unpack("H*", $object->getCommand())[1], 24, '0', STR_PAD_RIGHT); $header = $this->getHeaderTemplate()->write([Buffer::hex($this->network->getNetMagicBytes()), Buffer::hex($command), $payload->getSize(), $object->getChecksum()]); return Buffertools::concat($header, $payload); }