From 1f492c8a29bfe7e680b96be9efa51cc1b5a541f6 Mon Sep 17 00:00:00 2001 From: spekulaas Date: Wed, 8 Nov 2023 13:43:02 +0100 Subject: [PATCH] TODO fix isvalid function --- goodchain/src/classes/Transaction.py | 80 ++++++++++++++-------------- 1 file changed, 41 insertions(+), 39 deletions(-) diff --git a/goodchain/src/classes/Transaction.py b/goodchain/src/classes/Transaction.py index 2f6f6f8..f175606 100644 --- a/goodchain/src/classes/Transaction.py +++ b/goodchain/src/classes/Transaction.py @@ -4,6 +4,7 @@ NORMAL = 0 REWARD = 1 from helpers import SignatureHelper as Signature +from helpers import UtilityHelper as utilityHelper class Tx: def __init__(self, type = NORMAL): @@ -24,45 +25,46 @@ class Tx: self.reqd.append(addr) def sign(self, private): + ser = Signature.privateBytesToKey(private) message = self.__gather() - newsig = Signature.sign(message, private) + newsig = Signature.sign(message, ser) self.sigs.append(newsig) def is_valid(self): - # if self.type == REWARD: - # if len(self.inputs)!=0 and len(self.outputs)!=1: - # return False - # return True + if self.type == REWARD: + if len(self.inputs)!=0 and len(self.outputs)!=1: + return False + return True - # else: - # total_in = 0 - # total_out = 0 - # message = self.__gather() - # for addr,amount in self.inputs: - # found = False - # for s in self.sigs: - # if Signature.verify(message, s, addr): - # found = True - # if not found: - # return False - # if amount < 0: - # return False - # total_in = total_in + amount - # for addr in self.reqd: - # found = False - # for s in self.sigs: - # if Signature.verify(message, s, addr): - # found = True - # if not found: - # return False - # for addr,amount in self.outputs: - # if amount < 0: - # return False - # total_out = total_out + amount + else: + # total_in = 0 + # total_out = 0 + # message = self.__gather() + # for addr,amount in self.inputs: + # found = False + # for s in self.sigs: + # if Signature.verify(message, s, addr): + # found = True + # if not found: + # return False + # if amount < 0: + # return False + # total_in = total_in + amount + # for addr in self.reqd: + # found = False + # for s in self.sigs: + # if Signature.verify(message, s, addr): + # found = True + # if not found: + # return False + # for addr,amount in self.outputs: + # if amount < 0: + # return False + # total_out = total_out + amount - # if total_out > total_in: - # return False + # if total_out > total_in: + # return False return True def __gather(self): @@ -94,17 +96,17 @@ class Tx: return repr_str - def createTransaction(self, public_key, private_key, amount, fee, recipient, reqd = None, type = NORMAL): - self.add_input(public_key, amount + fee) + def createTransaction(self, public_ser, private_ser, amount, fee, recipient, reqd = None, type = NORMAL): + self.add_input(public_ser, amount + fee) self.add_output(recipient, amount) self.type = type if reqd != None: self.add_reqd(reqd) - self.sign(private_key) + self.sign(private_ser) - def createRewardTransaction(self, public_key, private_key, type): - value = type == "mine" and MINE_REWARD_VALUE or REGISTRATION_REWARD_VALUE - self.add_output(public_key, value) + def createRewardTransaction(self, public_ser, private_ser, type): + value = type == "MINE" and MINE_REWARD_VALUE or REGISTRATION_REWARD_VALUE + self.add_output(public_ser, value) self.type = REWARD - self.sign(private_key) + self.sign(private_ser)