Skip to content

Instantly share code, notes, and snippets.

@y-chan
Forked from bitzeny/stratum.patch
Last active June 27, 2018 06:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save y-chan/5da4d9228a50d3e3973835724610e45d to your computer and use it in GitHub Desktop.
Save y-chan/5da4d9228a50d3e3973835724610e45d to your computer and use it in GitHub Desktop.
diff --git a/externals/stratum b/externals/stratum
--- a/externals/stratum
+++ b/externals/stratum
@@ -1 +1 @@
-Subproject commit 8ba1b5fd8a802b981f31dace4cf920cfb4a3907c
+Subproject commit 8ba1b5fd8a802b981f31dace4cf920cfb4a3907c-dirty
diff --git a/lib/halfnode.py b/lib/halfnode.py
index 4ffc017..aca8cc8 100644
--- a/lib/halfnode.py
+++ b/lib/halfnode.py
@@ -26,6 +26,9 @@ if settings.COINDAEMON_ALGO == 'scrypt':
elif settings.COINDAEMON_ALGO == 'quark':
log.debug("########################################### Loading Quark Support #########################################################")
import quark_hash
+elif settings.COINDAEMON_ALGO == 'vips_vipstar':
+ log.debug("########################################### Loading vipstar Support #########################################################")
+ import vips_vipstar
else:
log.debug("########################################### Loading SHA256 Support ######################################################")
@@ -241,6 +244,8 @@ class CBlock(object):
self.quark = None
elif settings.COINDAEMON_ALGO == 'riecoin':
self.riecoin = None
+ elif settings.COINDAEMON_ALGO == 'vips_vipstar':
+ self.vips_vipstar = None
else: pass
if settings.COINDAEMON_Reward == 'POS':
self.signature = b""
@@ -282,7 +287,19 @@ class CBlock(object):
else: pass
return ''.join(r)
- if settings.COINDAEMON_ALGO == 'scrypt':
+ if settings.COINDAEMON_ALGO == 'vips_vipstar':
+ def calc_vips_vipstar(self):
+ if self.vips_vipstar is None:
+ r = []
+ r.append(struct.pack("<i", self.nVersion))
+ r.append(ser_uint256(self.hashPrevBlock))
+ r.append(ser_uint256(self.hashMerkleRoot))
+ r.append(struct.pack("<I", self.nTime))
+ r.append(struct.pack("<I", self.nBits))
+ r.append(struct.pack("<I", self.nNonce))
+ self.vips_vipstar = uint256_from_str(vips_vipstar.getPoWHash(''.join(r)))
+ return self.vips_vipstar
+ elif settings.COINDAEMON_ALGO == 'scrypt':
def calc_scrypt(self):
if self.scrypt is None:
r = []
@@ -333,7 +350,9 @@ class CBlock(object):
def is_valid(self):
- if settings.COINDAEMON_ALGO == 'riecoin':
+ if settings.COINDAEMON_ALGO == 'vips_vipstar':
+ self.calc_vips_vipstar()
+ elif settings.COINDAEMON_ALGO == 'riecoin':
self.calc_riecoin()
elif settings.COINDAEMON_ALGO == 'scrypt':
self.calc_scrypt()
@@ -347,6 +366,9 @@ class CBlock(object):
else:
target = uint256_from_compact(self.nBits)
+ if settings.COINDAEMON_ALGO == 'vips_vipstar':
+ if self.vips_vipstar > target:
+ return False
if settings.COINDAEMON_ALGO == 'riecoin':
if self.riecoin < target:
return False
diff --git a/lib/template_registry.py b/lib/template_registry.py
index 4202190..b9083db 100644
--- a/lib/template_registry.py
+++ b/lib/template_registry.py
@@ -11,6 +11,8 @@ elif settings.COINDAEMON_ALGO == 'quark':
import quark_hash
elif settings.COINDAEMON_ALGO == 'skeinhash':
import skeinhash
+elif settings.COINDAEMON_ALGO == 'vips_vipstar':
+ import vips_vipstar
else: pass
from twisted.internet import defer
from lib.exceptions import SubmitException
@@ -154,6 +156,8 @@ class TemplateRegistry(object):
diff1 = 0x0000ffff00000000000000000000000000000000000000000000000000000000
elif settings.COINDAEMON_ALGO == 'scrypt-jane':
diff1 = 0x0000ffff00000000000000000000000000000000000000000000000000000000
+ elif settings.COINDAEMON_ALGO == 'vips_vipstar':
+ diff1 = 0x0000ffff00000000000000000000000000000000000000000000000000000000
elif settings.COINDAEMON_ALGO == 'quark':
diff1 = 0x000000ffff000000000000000000000000000000000000000000000000000000
elif settings.COINDAEMON_ALGO == 'riecoin':
@@ -257,6 +261,8 @@ class TemplateRegistry(object):
hash_bin = ltc_scrypt.getPoWHash(''.join([ header_bin[i*4:i*4+4][::-1] for i in range(0, 20) ]))
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))
+ elif settings.COINDAEMON_ALGO == 'vips_vipstar':
+ hash_bin = vips_vipstar.getPoWHash(''.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) ]))
elif settings.COINDAEMON_ALGO == 'skeinhash':
@@ -285,6 +291,8 @@ class TemplateRegistry(object):
if hash_int < target_user:
raise SubmitException("Share does not meet target")
else:
+ log.debug("%064x" % hash_int)
+ log.debug("%064x" % target_user)
if hash_int > target_user:
raise SubmitException("Share is above target")
# Mostly for debugging purposes
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment