diff --git a/lib/halfnode.py b/lib/halfnode.py index e503a5d..d0a633a 100644 --- a/lib/halfnode.py +++ b/lib/halfnode.py @@ -19,6 +19,9 @@ import settings if settings.COINDAEMON_ALGO == 'scrypt': print("########################################### Loading LTC Scrypt Module #########################################################") import ltc_scrypt +elif settings.COINDAEMON_ALGO == 'quark': + print("########################################### Loading Quark Module #########################################################") + import quark_hash else: print("########################################### NOT Loading LTC Scrypt Module ######################################################") pass @@ -246,6 +249,8 @@ class CBlock(object): self.sha256 = None if settings.COINDAEMON_ALGO == 'scrypt': self.scrypt = None + elif settings.COINDAEMON_ALGO == 'quark': + self.quark = None else: pass if settings.COINDAEMON_Reward == 'POS': self.signature = b"" @@ -288,6 +293,18 @@ class CBlock(object): r.append(struct.pack(" target: return false + elif settings.COINDAEMON_ALGO == 'quark': + if self.quark > target: + return false else: if self.sha256 > target: return False diff --git a/lib/template_registry.py b/lib/template_registry.py index 1589998..7aa4370 100644 --- a/lib/template_registry.py +++ b/lib/template_registry.py @@ -7,6 +7,8 @@ if settings.COINDAEMON_ALGO == 'scrypt': import ltc_scrypt elif settings.COINDAEMON_ALGO == 'scrypt-jane': import yac_scrypt +elif settings.COINDAEMON_ALGO == 'quark': + import quark_hash else: pass from twisted.internet import defer from lib.exceptions import SubmitException @@ -147,6 +149,8 @@ class TemplateRegistry(object): '''Converts difficulty to target''' if settings.COINDAEMON_ALGO == 'scrypt': diff1 = 0x0000ffff00000000000000000000000000000000000000000000000000000000 + elif settings.COINDAEMON_ALGO == 'quark': + diff1 = 0x000000ffff000000000000000000000000000000000000000000000000000000 else: diff1 = 0x00000000ffff0000000000000000000000000000000000000000000000000000 return diff1 / difficulty @@ -231,15 +235,19 @@ class TemplateRegistry(object): # 4. Reverse header and compare it with target of the user if settings.COINDAEMON_ALGO == 'scrypt': hash_bin = ltc_scrypt.getPoWHash(''.join([ header_bin[i*4:i*4+4][::-1] for i in range(0, 20) ])) - elif settings.MAIN_COIN_ALGORITHM == 'scrypt-jane': + elif settings.COINDAEMON_ALGO == 'scrypt-jane': hash_bin = yac_scrypt.getPoWHash(''.join([ header_bin[i*4:i*4+4][::-1] for i in range(0, 20) ]), int(ntime, 16)) - else: hash_bin = util.doublesha(''.join([ header_bin[i*4:i*4+4][::-1] for i in range(0, 20) ])) + elif settings.COINDAEMON_ALGO == 'quark': + hash_bin = quark_hash.getPoWHash(''.join([ header_bin[i*4:i*4+4][::-1] for i in range(0, 20) ])) + else: hash_bin = util.doublesha(''.join([ header_bin[i*4:i*4+4][::-1] for i in range(0, 20) ])) hash_int = util.uint256_from_str(hash_bin) scrypt_hash_hex = "%064x" % hash_int header_hex = binascii.hexlify(header_bin) - if not settings.COINDAEMON_ALGO == 'sha256d': + if settings.COINDAEMON_ALGO == 'scrypt' or settings.COINDAEMON_ALGO == 'scrypt-jane': header_hex = header_hex+"000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000" - else: pass + elif settings.COINDAEMON_ALGO == 'quark': + header_hex = header_hex+"000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000" + else: pass target_user = self.diff_to_target(difficulty) if hash_int > target_user and \