proofow/proofow.py

19 lines
511 B
Python

from os import urandom
from itertools import count
from hashlib import sha256
class proofow:
def __init__(self, difficulty, base=None):
self._base = urandom(32) if not base else base
self._target = 2 ** (256 - difficulty)
def work(self):
for nonce in count():
if self.verify(nonce):
return nonce
def verify(self, nonce):
hexresult = sha256(self._base + str(nonce).encode()).hexdigest()
return int(hexresult, 16) < self._target