mirror of
https://github.com/TheAlgorithms/Python.git
synced 2025-04-15 02:07:36 +00:00
[pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
This commit is contained in:
parent
cd42352303
commit
5e70415ced
@ -1,31 +1,32 @@
|
|||||||
import hashlib
|
import hashlib
|
||||||
import time
|
import time
|
||||||
|
|
||||||
|
|
||||||
def proof_of_work(difficulty: int) -> int:
|
def proof_of_work(difficulty: int) -> int:
|
||||||
"""
|
|
||||||
Simulates a Proof of Work mining process.
|
|
||||||
|
|
||||||
The miner must find a nonce such that the hash of the nonce starts
|
|
||||||
with a specific number of leading zeros (difficulty)
|
|
||||||
|
|
||||||
Args:
|
|
||||||
difficulty (int): The number of leading zeros required in the hash.
|
|
||||||
Returns:
|
|
||||||
int: The nonce value that solves the puzzle.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
>>> result = proof_of_work(2) # Difficulty of 2 should be fast
|
|
||||||
>>> isinstance(result, int)
|
|
||||||
True
|
|
||||||
"""
|
"""
|
||||||
prefix = '0' * difficulty
|
Simulates a Proof of Work mining process.
|
||||||
nonce = 0
|
|
||||||
start = time.time() # Timing starts
|
|
||||||
|
|
||||||
while True:
|
The miner must find a nonce such that the hash of the nonce starts
|
||||||
hash_result = hashlib.sha256(f"{nonce}".encode()).hexdigest()
|
with a specific number of leading zeros (difficulty)
|
||||||
if hash_result.startswith(prefix):
|
|
||||||
end = time.time() # Timing ends
|
Args:
|
||||||
print(f"Time taken: {end - start:.2f}s") # Print time taken
|
difficulty (int): The number of leading zeros required in the hash.
|
||||||
return nonce
|
Returns:
|
||||||
nonce += 1
|
int: The nonce value that solves the puzzle.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
>>> result = proof_of_work(2) # Difficulty of 2 should be fast
|
||||||
|
>>> isinstance(result, int)
|
||||||
|
True
|
||||||
|
"""
|
||||||
|
prefix = "0" * difficulty
|
||||||
|
nonce = 0
|
||||||
|
start = time.time() # Timing starts
|
||||||
|
|
||||||
|
while True:
|
||||||
|
hash_result = hashlib.sha256(f"{nonce}".encode()).hexdigest()
|
||||||
|
if hash_result.startswith(prefix):
|
||||||
|
end = time.time() # Timing ends
|
||||||
|
print(f"Time taken: {end - start:.2f}s") # Print time taken
|
||||||
|
return nonce
|
||||||
|
nonce += 1
|
||||||
|
Loading…
x
Reference in New Issue
Block a user