Example #1
0
 function singleTransaction()
 {
     $base = $this->lib->issueCoin(new Binary('issuer key'), new Binary('coin'), 'I promise', new Output(new Binary('bart'), new Fraction(1)));
     $one = $this->lib->transferCoins(new Binary('bart key'), [$base], [new Output(new Binary('lisa'), new Fraction(1))]);
     $confirmed = $this->lib->confirmCoin(new Binary('bart key'), $one[0]);
     $this->assert->equals($confirmed->getOwner(), new Binary('lisa'));
     $this->assert->equals($confirmed->getValue(), new Fraction(1));
     /** @var Confirmation $confirmation */
     $confirmation = $confirmed->getInput()->getTransaction();
     $this->assert->isInstanceOf($confirmation, Confirmation::class);
     $this->assert->equals($confirmation->getHash(), Confirmation::hash('coin' . "" . 'I promise' . "" . 'bart' . "" . '1|1' . "" . '0' . "" . 'lisa' . "" . '1|1'));
 }
Example #2
0
 private function ConfirmationToArray(Confirmation $confirmation, Transcoder $transcoder)
 {
     return ['hash' => $transcoder->encode($confirmation->getHash()->getData()), 'bases' => array_map(function (Base $base) use($transcoder) {
         return $this->BaseToArray($base, $transcoder);
     }, $confirmation->getBases()), 'out' => $this->OutputToArray($confirmation->getOutput(), $transcoder), 'sig' => $confirmation->getSignature()];
 }
Example #3
0
 /**
  * @param Binary $backer
  * @param Signer $signer
  * @return Coin
  * @throws \Exception
  */
 public function confirm(Binary $backer, Signer $signer)
 {
     $allBases = $this->getBases();
     $myBases = array_values(array_filter($allBases, function (Base $base) use($backer) {
         return $base->getOutput()->getTarget() == $backer;
     }));
     if (!$myBases) {
         throw new \Exception('Not a backer');
     }
     $output = new Output($this->getOwner(), $this->getValue()->times($this->baseSum($myBases))->dividedBy($this->baseSum($allBases)));
     $confirmed = $this->input->getTransaction();
     return new Coin(new Input(Confirmation::signedConfirmation($myBases, $output, $confirmed, $signer), 0));
 }