/** * @param TransactionOutputInterface $txOutput * @return OutputBuf */ private function outputToBuf(TransactionOutputInterface $txOutput) { $output = new OutputBuf(); $output->setScript($txOutput->getScript()->getBuffer()->getBinary()); $output->setAmount($txOutput->getValue()); return $output; }
/** * @param PrivateKeyInterface $key * @param ScriptInterface $scriptCode * @param int $sigVersion * @return TransactionSignature */ public function calculateSignature(PrivateKeyInterface $key, ScriptInterface $scriptCode, $sigVersion) { if ($sigVersion == 1) { $hasher = new V1Hasher($this->tx, $this->txOut->getValue()); } else { $hasher = new Hasher($this->tx); } $hash = $hasher->calculate($scriptCode, $this->nInput, $this->sigHashType); return new TransactionSignature($this->ecAdapter, $this->ecAdapter->sign($hash, $key, new Rfc6979($this->ecAdapter, $key, $hash, 'sha256')), $this->sigHashType); }
/** * @param TransactionOutputInterface $output * @return BufferInterface */ public function serialize(TransactionOutputInterface $output) { return $this->getTemplate()->write([$output->getValue(), $output->getScript()->getBuffer()]); }
/** * @param ConsensusInterface $consensus * @param int $nInput * @param TransactionOutputInterface $output * @return bool */ public function checkSignature(ConsensusInterface $consensus, $nInput, TransactionOutputInterface $output) { $witnesses = $this->transaction->getWitnesses(); $witness = isset($witnesses[$nInput]) ? $witnesses[$nInput] : null; return $consensus->verify($this->transaction, $output->getScript(), $nInput, $output->getValue(), $witness); }
/** * @param TransactionOutputInterface $output * @return array */ public function convertTxoutToArray(TransactionOutputInterface $output) { return ['value' => $output->getValue(), 'scriptPubKey' => $output->getScript()->getHex()]; }
/** * @param array $array * @return $this */ private function replace(array $array) { $this->output = new TransactionOutput(array_key_exists('value', $array) ? $array['value'] : $this->output->getValue(), array_key_exists('script', $array) ? $array['script'] : $this->output->getScript()); return $this; }