/** * @return \BitWasp\Bitcoin\Block\BlockInterface */ public function getGenesisBlock() { $timestamp = new Buffer('The Times 03/Jan/2009 Chancellor on brink of second bailout for banks', null, $this->math); $publicKey = Buffer::hex('04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f', null, $this->math); $inputScript = ScriptFactory::sequence([Buffer::int('486604799', 4, $this->math)->flip(), Buffer::int('4', null, $this->math), $timestamp]); $outputScript = ScriptFactory::sequence([$publicKey, Opcodes::OP_CHECKSIG]); return new Block($this->math, $this->getGenesisBlockHeader(), new TransactionCollection([(new TxBuilder())->version('1')->input(new Buffer('', 32), 4294967295.0, $inputScript)->output(5000000000.0, $outputScript)->locktime(0)->get()])); }
/** * @param TransactionSignatureInterface[] $signatures * @param PublicKeyInterface[] $publicKeys * @return Script|ScriptInterface */ public function makeScriptSig(array $signatures = [], array $publicKeys = []) { $newScript = new Script(); if (count($signatures) === $this->getRequiredSigCount()) { $newScript = ScriptFactory::sequence([$signatures[0]->getBuffer()]); } return $newScript; }
/** * @param TransactionSignatureInterface[] $signatures * @param PublicKeyInterface[] $publicKeys * @return Script|ScriptInterface */ public function makeScriptSig(array $signatures = [], array $publicKeys = []) { $newScript = new Script(); if (count($signatures) > 0) { $sequence = [Opcodes::OP_0]; foreach ($signatures as $sig) { $sequence[] = $sig->getBuffer(); } $newScript = ScriptFactory::sequence($sequence); } return $newScript; }
/** * @param string $outputType * @param $answer * @return bool */ private function serializeSimpleSig($outputType, &$answer) { if ($outputType === OutputClassifier::UNKNOWN) { throw new \RuntimeException('Cannot sign unknown script type'); } if ($outputType === OutputClassifier::PAYTOPUBKEY && $this->isFullySigned()) { $answer = new SigValues(ScriptFactory::sequence([$this->signatures[0]->getBuffer()]), new ScriptWitness([])); return true; } if ($outputType === OutputClassifier::PAYTOPUBKEYHASH && $this->isFullySigned()) { $answer = new SigValues(ScriptFactory::sequence([$this->signatures[0]->getBuffer(), $this->publicKeys[0]->getBuffer()]), new ScriptWitness([])); return true; } if ($outputType === OutputClassifier::MULTISIG) { $sequence = [Opcodes::OP_0]; $nPubKeys = count($this->publicKeys); for ($i = 0; $i < $nPubKeys; $i++) { if (isset($this->signatures[$i])) { $sequence[] = $this->signatures[$i]->getBuffer(); } } $answer = new SigValues(ScriptFactory::sequence($sequence), new ScriptWitness([])); return true; } return false; }