/** * @param NetworkInterface $network * @param PrivateKeyInterface $privateKey * @return string */ public function serialize(NetworkInterface $network, PrivateKeyInterface $privateKey) { $serialized = Buffertools::concat(Buffer::hex($network->getPrivByte()), $this->hexSerializer->serialize($privateKey)); if ($privateKey->isCompressed()) { $serialized = Buffertools::concat($serialized, new Buffer("", 1)); } return Base58::encodeCheck($serialized); }
/** * @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 Parser $parser * @return HierarchicalKey * @throws ParserOutOfRange */ public function fromParser(Parser &$parser) { try { list($bytes, $depth, $parentFingerprint, $sequence, $chainCode, $keyData) = $this->getTemplate()->parse($parser); $bytes = $bytes->getHex(); } catch (ParserOutOfRange $e) { throw new ParserOutOfRange('Failed to extract HierarchicalKey from parser'); } if ($bytes !== $this->network->getHDPubByte() && $bytes !== $this->network->getHDPrivByte()) { throw new \InvalidArgumentException("HD key magic bytes do not match network magic bytes"); } $key = $this->network->getHDPrivByte() == $bytes ? PrivateKeyFactory::fromHex($keyData->slice(1)->getHex(), true, $this->ecAdapter) : PublicKeyFactory::fromHex($keyData->getHex(), $this->ecAdapter); return new HierarchicalKey($this->ecAdapter, $depth, $parentFingerprint, $sequence, $chainCode, $key); }
/** * @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); }
/** * @param NetworkInterface $network * @return string */ public function getPrefixByte(NetworkInterface $network) { return $network->getP2WPKHByte(); }
/** * @param NetworkInterface $network * @param PrivateKeyInterface $privateKey * @return string */ public function serialize(NetworkInterface $network, PrivateKeyInterface $privateKey) { $payload = Buffer::hex($network->getPrivByte() . $this->hexSerializer->serialize($privateKey)->getHex() . ($privateKey->isCompressed() ? '01' : '')); return Base58::encodeCheck($payload); }