Adjust fulfillment validation interface

This commit is contained in:
tim 2016-08-24 11:57:41 +02:00 committed by Sylvain Bellemare
parent b2b0f56e40
commit e5ce4df238

View File

@ -107,11 +107,8 @@ class TransactionLink(object):
self.txid = txid self.txid = txid
self.cid = cid self.cid = cid
def is_defined(self): def __bool__(self):
if self.txid is None and self.cid is None: return not (self.txid is None and self.cid is None)
return False
else:
return True
@classmethod @classmethod
def from_dict(cls, link): def from_dict(cls, link):
@ -278,7 +275,7 @@ class Transaction(object):
def transfer(self, conditions): def transfer(self, conditions):
# TODO: Check here if a condition is submitted or smth else # TODO: Check here if a condition is submitted or smth else
return Transaction(Transaction.TRANSFER, self._fulfillments_as_inputs(), conditions) return self.__class__(Transaction.TRANSFER, self._fulfillments_as_inputs(), conditions)
def simple_transfer(self, owners_after): def simple_transfer(self, owners_after):
condition = Fulfillment.gen_default(owners_after).gen_condition() condition = Fulfillment.gen_default(owners_after).gen_condition()
@ -401,21 +398,18 @@ class Transaction(object):
subfulfillment.sign(tx_serialized, private_key) subfulfillment.sign(tx_serialized, private_key)
def fulfillments_valid(self, input_condition_uris=None): def fulfillments_valid(self, input_conditions=None):
if isinstance(input_conditions, list):
return self._fulfillments_valid([cond.condition_uri for cond
in input_conditions])
elif input_conditions is None:
return self._fulfillments_valid()
else:
raise TypeError('`input_conditions` must be list instance or None')
def _fulfillments_valid(self, input_condition_uris=None):
# TODO: Update Comment # TODO: Update Comment
"""Verify the signature of a transaction if input_condition_uris is None:
A valid transaction should have been signed `current_owner` corresponding private key.
Args:
signed_transaction (dict): a transaction with the `signature` included.
Returns:
bool: True if the signature is correct, False otherwise.
"""
if not isinstance(input_condition_uris, list) and input_condition_uris is not None:
raise TypeError('`input_condition_uris` must be list instance')
elif input_condition_uris is None:
input_condition_uris = [] input_condition_uris = []
input_condition_uris_count = len(input_condition_uris) input_condition_uris_count = len(input_condition_uris)
@ -425,9 +419,9 @@ class Transaction(object):
def gen_tx(fulfillment, condition, input_condition_uri=None): def gen_tx(fulfillment, condition, input_condition_uri=None):
tx = Transaction(self.operation, [fulfillment], [condition], self.data, self.timestamp, self.version) tx = Transaction(self.operation, [fulfillment], [condition], self.data, self.timestamp, self.version)
if input_condition_uri is not None: if input_condition_uri is not None:
return tx.fulfillments_valid([input_condition_uri]) return tx._fulfillments_valid([input_condition_uri])
else: else:
return tx.fulfillments_valid() return tx._fulfillments_valid()
if self.operation in (Transaction.CREATE, Transaction.GENESIS): if self.operation in (Transaction.CREATE, Transaction.GENESIS):
if not fulfillments_count == conditions_count: if not fulfillments_count == conditions_count: