diff --git a/goodchain/src/helpers/MenuHelper.py b/goodchain/src/helpers/MenuHelper.py index 43b5b1d..72984b0 100644 --- a/goodchain/src/helpers/MenuHelper.py +++ b/goodchain/src/helpers/MenuHelper.py @@ -157,7 +157,9 @@ class MenuHelper: print("TODO") case "Check balance": - print(f"Your balance is: {taskHelper.getBalance(self)}") + balance = taskHelper.getBalance(self) + print(f"Your balance is: {balance}") + print(f"Your balance after verification of outgoing transactions: {taskHelper.getBalanceWithOutgoingPool(self, balance)}") case "Check the pool": transactions = utilityHelper.loadFile("../data/transaction_pool.dat") diff --git a/goodchain/src/helpers/TaskHelper.py b/goodchain/src/helpers/TaskHelper.py index eda8a6a..bd54810 100644 --- a/goodchain/src/helpers/TaskHelper.py +++ b/goodchain/src/helpers/TaskHelper.py @@ -41,7 +41,7 @@ def transaction(self): print(f"Processing transaction of {amount + fee} coins, {receiver} will receive {amount} coins") - if amount + fee > getBalance(self): + if amount + fee > getBalanceWithOutgoingPool(self, getBalance(self)): print("You dont have enough money") return False @@ -222,11 +222,19 @@ def exploreBlocks(self): x = 0 for transaction in blocks[user_input].data: x += 1 + if transaction.type == 1: + input_amount = 0 + input_user = "Reward" + fee = 0 + else: + input_user = transaction.inputs[0][0] + input_amount = transaction.inputs[0][1] + fee = input_amount - transaction.outputs[0][1] print(f"---------------------------------------{x}-------------------------------------------") - print(f"Transaction input: {transaction.type == 1 and 'reward' or transaction.inputs[0][1]}") + print(f"Transaction input: {input_amount}") print(f"Transaction output: {transaction.outputs[0][1]}") - print(f"Transaction fees: {transaction.type == 1 and 0 or transaction.inputs[0][1] - transaction.outputs[0][1]}") - print(f"Transaction sender: \n{transaction.inputs[0][0]}") + print(f"Transaction fees: {fee}") + print(f"Transaction sender: \n{input_user}") print(f"Transaction recipient: \n{transaction.outputs[0][0]}") print("-----------------------------------------------------------------------------------") case "3": @@ -244,10 +252,17 @@ def getBalance(self): for transaction in block.data: if transaction.outputs[0][0] == self.user.public_ser: balance += transaction.outputs[0][1] - elif transaction.inputs[0][0] == self.user.public_ser: + elif transaction.type != 1 and transaction.inputs[0][0] == self.user.public_ser: balance -= transaction.inputs[0][1] return balance +def getBalanceWithOutgoingPool(self, balance): + transactions = utilityHelper.loadFile("../data/transaction_pool.dat") + for transaction in transactions: + if transaction.type != 1 and transaction.inputs[0][0] == self.user.public_ser: + balance -= transaction.inputs[0][1] + return balance + def getPersonalTransactions(self): blocks = utilityHelper.loadFile("../data/ledger.dat") total = 0 @@ -255,13 +270,21 @@ def getPersonalTransactions(self): total_output = 0 for block in blocks: for transaction in block.data: - if transaction.outputs[0][0] == self.user.public_ser or transaction.inputs[0][0] == self.user.public_ser: + if transaction.outputs[0][0] == self.user.public_ser or (transaction.type == 0 and transaction.inputs[0][0] == self.user.public_ser): total += 1 + if transaction.type == 1: + input_amount = 0 + input_user = "Reward" + fee = 0 + else: + input_user = transaction.inputs[0][0] + input_amount = transaction.inputs[0][1] + fee = input_amount - transaction.outputs[0][1] print(f"---------------------------------------{total}-------------------------------------------") - print(f"Transaction input: {transaction.inputs[0][1]}") + print(f"Transaction input: {input_amount}") print(f"Transaction output: {transaction.outputs[0][1]}") - print(f"Transaction fees: {transaction.inputs[0][1] - transaction.outputs[0][1]}") - print(f"Transaction sender: \n{transaction.inputs[0][0]}") + print(f"Transaction fees: {fee}") + print(f"Transaction sender: \n{input_user}") print(f"Transaction recipient: \n{transaction.outputs[0][0]}") if transaction.outputs[0][0] == self.user.public_ser: