Ejemplo n.º 1
0
 /**
  * @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()]));
 }
Ejemplo n.º 2
0
 /**
  * @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;
 }
Ejemplo n.º 3
0
 /**
  * @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;
 }
Ejemplo n.º 4
0
 /**
  * @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;
 }