/** * @param ScriptInterface $redeemScript */ public function __construct(ScriptInterface $redeemScript) { $classifier = ScriptFactory::scriptPubKey()->classify($redeemScript); if ($classifier->isPayToScriptHash()) { throw new \InvalidArgumentException('Provided script is a pay-to-script-hash output script'); } switch ($classifier->classify()) { case OutputClassifier::MULTISIG: $handler = new Multisig($redeemScript); break; case OutputClassifier::PAYTOPUBKEY: $handler = new PayToPubkey($redeemScript); break; case OutputClassifier::PAYTOPUBKEYHASH: $handler = new PayToPubkeyHash($redeemScript); break; default: throw new \InvalidArgumentException('redeemScript not yet supported'); } $this->redeemScript = $redeemScript; $this->outputScript = ScriptFactory::scriptPubKey()->payToScriptHash($redeemScript); $this->p2shAddress = AddressFactory::fromScript($redeemScript); $this->handler = $handler; }
/** * @return \BitWasp\Bitcoin\Address\ScriptHashAddress */ public function getAddress() { return AddressFactory::fromScript($this); }
/** * @return \BitWasp\Bitcoin\Address\ScriptHashAddress */ public function getAddress() { return AddressFactory::fromScript($this->getRedeemScript()); }
/** * @return \BitWasp\Bitcoin\Address\ScriptHashAddress */ public function getAddress() { $address = AddressFactory::fromScript($this); return $address; }