/** * @param NetworkInterface|null $network * @return string */ public function getAddress(NetworkInterface $network = null) { $network = $network ?: Bitcoin::getNetwork(); $witnessByte = dechex($this->witnessVersion); $witnessByte = strlen($witnessByte) % 2 == 0 ? $witnessByte : '0' . $witnessByte; $payload = Buffer::hex($this->getPrefixByte($network) . $witnessByte . "00" . $this->getHash()); return Base58::encodeCheck($payload); }
/** * @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 HierarchicalKey $key * @return string */ public function serialize(HierarchicalKey $key) { $bytes = $this->hexSerializer->serialize($key); return Base58::encodeCheck($bytes); }
/** * @param ScriptInterface $script * @param NetworkInterface $network * @return String * @throws \RuntimeException */ public static function getAssociatedAddress(ScriptInterface $script, NetworkInterface $network = null) { $classifier = new OutputClassifier($script); $network = $network ?: Bitcoin::getNetwork(); try { if ($classifier->isPayToPublicKey()) { $address = PublicKeyFactory::fromHex($script->getScriptParser()->decode()[0]->getData())->getAddress(); } else { $address = self::fromOutputScript($script); } return Base58::encodeCheck(Buffer::hex($network->getAddressByte() . $address->getHash(), 21)); } catch (\Exception $e) { throw new \RuntimeException('No address associated with this script type'); } }
/** * @param NetworkInterface|null $network * @return string */ public function getAddress(NetworkInterface $network = null) { $network = $network ?: Bitcoin::getNetwork(); $payload = Buffer::hex($this->getPrefixByte($network) . $this->getHash()); return Base58::encodeCheck($payload); }
/** * @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); }