You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

69 lines
1.2 KiB

from random import randint, random
from xxhash import xxh32
from time import time
# Settings
global zeros, MAX_NONCE
zeros = 6 #DON'T CHANGE!
MAX_NONCE = 10**10
# Generate fast hash
def sha(text):
text = str(text)
return xxh32(text).hexdigest()
# Check if hashes match
def check(new_hash, zeros):
if new_hash.startswith('0'*zeros):
return True
else:
return False
def mine(block):
start_time = time()
# New hash
text = block["ph"] + str(block["nonce"]) + block["ts"]
block["ph"] = sha(text)
while True:
text = block["ph"] + str(block["nonce"]) + block["ts"]
if check(sha(text), zeros):
print("NONCE: ", block["nonce"])
print("Hash: ", sha(text))
break
block["nonce"] = randint(1, MAX_NONCE)
print("--- %s seconds ---" % (time() - start_time))
return block
pblock = {
"ph": "5bb98b81",
"nonce": 1,
"ts": "Some transaction data"
}
# Block
ph = sha(pblock)
block = {
"ph": ph,
"nonce": 1,
"ts": "Some transaction data"
}
import data
#'''
while True:
block = mine(block)
# Write blocks
blocks = data.mine.read()
blocks.append(block)
data.mine.write(blocks)
#'''
#blocks = data.mine.read()
#print(len(blocks))