/** * @param Binary $currencyKey * @param string $rules * @param null|RuleBook $previous * @return RuleBook */ public function signRules(Binary $currencyKey, $rules, RuleBook $previous = null) { $address = $this->key->getAddress($currencyKey); $book = RuleBook::signed(new Signer($this->key, $currencyKey), $address, $rules, $previous); $allRules = [$book]; if ($previous) { $allRules[] = $previous; } (new Verification($this->key))->verifyCurrencyRules($allRules)->mustBeOk(); return $book; }
/** * @param RuleBook $object * @param Transcoder $transcoder * @return array */ public function toArray($object, Transcoder $transcoder) { $array = ['by' => $transcoder->encode($object->getCurrencyAddress()->getData()), 'rules' => $object->getRules()]; if ($object->getPreviousHash()) { $array['prev'] = $transcoder->encode($object->getPreviousHash()->getData()); } $array['sig'] = $object->getSignature(); return $array; }
/** * @param Signer $currency * @param Binary $address * @param string $rules * @param null|RuleBook $previous * @return RuleBook */ public static function signed(Signer $currency, Binary $address, $rules, RuleBook $previous = null) { $previousHash = $previous ? $previous->hash() : null; return new RuleBook($address, $rules, $currency->sign([$address, $rules, $previousHash]), $previousHash); }