From d2263ab1054fa8e502a1b8df5fe73d5dbd6df75d Mon Sep 17 00:00:00 2001 From: spekulaas Date: Sun, 12 Nov 2023 17:17:08 +0100 Subject: [PATCH] fixed finding nonces --- goodchain/src/classes/TxBlock.py | 34 ++++++++++++---------------- goodchain/src/helpers/BlockHelper.py | 2 +- 2 files changed, 16 insertions(+), 20 deletions(-) diff --git a/goodchain/src/classes/TxBlock.py b/goodchain/src/classes/TxBlock.py index 108e420..5dcb232 100644 --- a/goodchain/src/classes/TxBlock.py +++ b/goodchain/src/classes/TxBlock.py @@ -7,6 +7,7 @@ import random REWARD_VALUE = 50.0 leading_zeros = 2 +leading_extra = 1 next_char_limit = 20 class TxBlock (CBlock): @@ -21,16 +22,6 @@ class TxBlock (CBlock): def addTx(self, Tx_in): self.data.append(Tx_in) - def __count_totals(self): - total_in = 0 - total_out = 0 - for tx in self.data: - for addr, amt in tx.inputs: - total_in = total_in + amt - for addr, amt in tx.outputs: - total_out = total_out + amt - return total_in, total_out - def is_valid(self): if not super(TxBlock, self).is_valid(): return False @@ -42,12 +33,6 @@ class TxBlock (CBlock): if not self.good_nonce(): return False - # total_in, total_out = self.__count_totals() - - # Tx_Balance = round(total_out - total_in, 10) - # print("Tx_Balance: ", Tx_Balance) - # if Tx_Balance > REWARD_VALUE: - # return False return True def good_nonce(self): @@ -56,11 +41,22 @@ class TxBlock (CBlock): digest.update(bytes(str(self.previousHash), 'utf8')) digest.update(bytes(str(self.nonce), 'utf8')) this_hash = digest.finalize() - return this_hash[:leading_zeros] == b'\x00'*leading_zeros + + bytes_array = [b'\x00', b'\x01', b'\x02', b'\x03', b'\x04', b'\x05', b'\x06'] + if this_hash[:leading_zeros] == b'\x00'*leading_zeros: + + for i in range(leading_extra): + if this_hash[:leading_extra + i + 1][leading_extra+i:] in bytes_array: + continue + + else: + return False + + return True def find_nonce(self): - for i in range(10000000): - self.nonce = i + for i in range(200000): + self.nonce = "".join([random.choice("1234567890ABCDEF") for n in range(next_char_limit)]) if self.good_nonce(): return self.nonce return None diff --git a/goodchain/src/helpers/BlockHelper.py b/goodchain/src/helpers/BlockHelper.py index 1b25188..3734ff0 100644 --- a/goodchain/src/helpers/BlockHelper.py +++ b/goodchain/src/helpers/BlockHelper.py @@ -3,7 +3,7 @@ from classes.TxBlock import TxBlock from helpers import UtilityHelper as utilityHelper import time -MIN_MINING_TIME = 0 +MIN_MINING_TIME = 10 MAX_MINING_TIME = 20 def exploreBlocks(self):