/**
  * @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);
 }