11import hashlib
22
3- def proof_of_work(block_number: int, transactions: str, previous_hash: str,
4- difficulty: int) -> tuple[int, str]:
3+
4+ def proof_of_work(
5+ block_number: int, transactions: str, previous_hash: str, difficulty: int
6+ ) -> tuple[int, str]:
57 """
6- Finds a nonce such that the hash of the block
7- starts with a specfic number of zeros
8+ Finds a nonce such that the hash of the block
9+ starts with a specific number of zeros
810 """
9- prefix = '0' * difficulty
11+ prefix = "0" * difficulty
1012 nonce = 0
1113
1214 while True:
1315 # Create a single string representing all block data
1416 text = str(block_number) + transactions + previous_hash + str(nonce)
15-
17+
1618 # Calculate the SHA-256
1719 current_hash = hashlib.sha256(text.encode()).hexdigest()
1820
@@ -22,14 +24,15 @@ def proof_of_work(block_number: int, transactions: str, previous_hash: str,
2224
2325 nonce += 1
2426
27+
2528if __name__ == "__main__":
2629 # Example usage:
2730 example_tx = "Alice sends 1 BTC to Bob"
2831 prev_h = "00000abcdef1234567890"
29- diff = 5 # Increase to see get much slower
32+ diff = 5 # Increase to see get much slower
3033
3134 print(f"Mining block... (Difficulty: {diff})")
32- nonce,hash_found = proof_of_work(1, example_tx, prev_h, diff)
35+ nonce, hash_found = proof_of_work(1, example_tx, prev_h, diff)
3336
3437 print(f"Success! Nonce: {nonce}")
3538 print(f"Hash: {hash_found}")
0 commit comments