diff --git a/proofow.py b/proofow.py index 5c049a5..e25c5f7 100644 --- a/proofow.py +++ b/proofow.py @@ -3,10 +3,11 @@ from itertools import count from hashlib import sha256 -class proofow: + +class pow_base: def __init__(self, difficulty, base=None): - self._base = urandom(32) if not base else base - self._target = 2 ** (256 - difficulty) + self._base = urandom(self._bits//8) if not base else base + self._target = 2 ** (self._bits - difficulty) def work(self): for nonce in count(): @@ -14,5 +15,17 @@ class proofow: return nonce def verify(self, nonce): - hexresult = sha256(self._base + str(nonce).encode()).hexdigest() + hexresult = self._hexdigest(self._base + str(nonce).encode()) return int(hexresult, 16) < self._target + + + +class pow_hashlib_base(pow_base): + def _hexdigest(self, data): + return self._hasher(data).hexdigest() + + + +class pow256(pow_hashlib_base): + _bits = 256 + _hasher = sha256