/**
  * @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);
 }
예제 #5
0
 /**
  * @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);
 }