/**
  * @param PublicKeyInterface $publicKey
  * @return Buffer
  */
 public function serialize(PublicKeyInterface $publicKey)
 {
     $point = $publicKey->getPoint();
     $parser = new Parser();
     $parser->writeBytes(1, $this->getPrefix($publicKey->isCompressed(), $point));
     $math = $this->ecAdapter->getMath();
     $publicKey->isCompressed() ? $parser->writeBytes(32, $math->decHex($point->getX())) : $parser->writeBytes(32, $math->decHex($point->getX()))->writeBytes(32, $math->decHex($point->getY()));
     return $parser->getBuffer();
 }
 /**
  * @param \BitWasp\Bitcoin\Signature\TransactionSignature $signature
  * @param PublicKeyInterface $publicKey
  * @return Script
  */
 public function payToPubKeyHash(TransactionSignature $signature, PublicKeyInterface $publicKey)
 {
     return ScriptFactory::create()->push($signature->getBuffer())->push($publicKey->getBuffer());
 }
示例#3
0
 /**
  * @param int|string $sequence
  * @param bool $change
  * @return PrivateKeyInterface|PublicKeyInterface
  */
 public function deriveChild($sequence, $change = false)
 {
     return $this->publicKey->tweakAdd($this->getSequenceOffset($sequence, $change));
 }
示例#4
0
 /**
  * @param PublicKeyInterface $publicKey
  * @param int|string $integer
  * @return \BitWasp\Bitcoin\Key\PublicKey
  * @throws \Exception
  */
 public function publicKeyMul(PublicKeyInterface $publicKey, $integer)
 {
     $pubKey = $publicKey->getBuffer()->getBinary();
     $ret = (bool) \secp256k1_ec_pubkey_tweak_mul($pubKey, $this->getBinaryScalar($integer));
     if ($ret === false) {
         throw new \Exception('Secp256k1 pubkey tweak mul: failed');
     }
     return $this->getRelatedPublicKey($publicKey, $pubKey);
 }
 /**
  * Create a P2PKH output script
  *
  * @param PublicKeyInterface $public_key
  * @return Script
  */
 public function payToPubKeyHash(PublicKeyInterface $public_key)
 {
     return ScriptFactory::create()->op('OP_DUP')->op('OP_HASH160')->push($public_key->getPubKeyHash())->op('OP_EQUALVERIFY')->op('OP_CHECKSIG');
 }
示例#6
0
 /**
  * @param PublicKeyInterface $publicKey
  * @param $integer
  * @return \BitWasp\Bitcoin\Key\PublicKey
  */
 public function publicKeyMul(PublicKeyInterface $publicKey, $integer)
 {
     $newPoint = $publicKey->getPoint()->mul($integer);
     return $this->getRelatedPublicKey($publicKey, $newPoint);
 }