示例#1
0
 private function uniqueInput(Transaction $transaction, $acc)
 {
     $inputs = isset($acc['inputs']) ? $acc['inputs'] : [];
     $transactions = isset($acc['transactions']) ? $acc['transactions'] : [];
     $squashedTransaction = Signer::squash($transaction);
     $acc['transactions'][] = $squashedTransaction;
     if (in_array($squashedTransaction, $transactions)) {
         return $acc;
     }
     foreach ($transaction->getInputs() as $input) {
         $squashed = Signer::squash($input);
         if (in_array($squashed, $inputs)) {
             $this->errors[] = "Output already used";
         }
         $inputs[] = $squashed;
     }
     $acc['inputs'] = $inputs;
     return $acc;
 }
示例#2
0
 /**
  * @return Binary
  */
 public function hash()
 {
     return new Binary(hash('sha256', Signer::squash($this), true));
 }
示例#3
0
 /**
  * @param Base[] $bases
  * @param Output $output
  * @param Transaction $confirmed
  * @param Signer $signer
  * @return Confirmation
  */
 public static function signedConfirmation($bases, Output $output, Transaction $confirmed, Signer $signer)
 {
     $hash = self::hash(Signer::squash($confirmed));
     return new Confirmation($bases, $output, $hash, $signer->sign([$bases, $output, $hash]));
 }