Merge pull request #19 from obigal/tx-comment

support for tx-comment / enable independant configuration
This commit is contained in:
ahmedbodi 2013-12-15 12:05:07 -08:00
commit cdac4ebada
2 changed files with 60 additions and 70 deletions

View File

@ -35,7 +35,9 @@ if settings.COINDAEMON_Reward == 'POW':
tx_out = halfnode.CTxOut() tx_out = halfnode.CTxOut()
tx_out.nValue = value tx_out.nValue = value
tx_out.scriptPubKey = coinbaser.get_script_pubkey() tx_out.scriptPubKey = coinbaser.get_script_pubkey()
if settings.COINDAEMON_SHA256_TX == 'yes':
self.strTxComment = ""
self.vin.append(tx_in) self.vin.append(tx_in)
self.vout.append(tx_out) self.vout.append(tx_out)
@ -48,7 +50,7 @@ if settings.COINDAEMON_Reward == 'POW':
(part1, part2) = self.vin[0]._scriptSig_template (part1, part2) = self.vin[0]._scriptSig_template
self.vin[0].scriptSig = part1 + extranonce + part2 self.vin[0].scriptSig = part1 + extranonce + part2
elif settings.COINDAEMON_Reward == 'POS' and settings.COINDAEMON_SHA256_TX == 'yes': elif settings.COINDAEMON_Reward == 'POS':
class CoinbaseTransaction(halfnode.CTransaction): class CoinbaseTransaction(halfnode.CTransaction):
'''Construct special transaction used for coinbase tx. '''Construct special transaction used for coinbase tx.
It also implements quick serialization using pre-cached It also implements quick serialization using pre-cached
@ -81,8 +83,9 @@ elif settings.COINDAEMON_Reward == 'POS' and settings.COINDAEMON_SHA256_TX == '
tx_out.nValue = value tx_out.nValue = value
tx_out.scriptPubKey = coinbaser.get_script_pubkey() tx_out.scriptPubKey = coinbaser.get_script_pubkey()
self.nTime = ntime self.nTime = ntime
self.strTxComment = "Mined By AhmedBodi's CryptoExpert Pools" if settings.COINDAEMON_SHA256_TX == 'yes':
self.strTxComment = ""
self.vin.append(tx_in) self.vin.append(tx_in)
self.vout.append(tx_out) self.vout.append(tx_out)
@ -128,7 +131,7 @@ else:
tx_out.nValue = value tx_out.nValue = value
tx_out.scriptPubKey = coinbaser.get_script_pubkey() tx_out.scriptPubKey = coinbaser.get_script_pubkey()
self.nTime = ntime self.nTime = ntime
self.vin.append(tx_in) self.vin.append(tx_in)
self.vout.append(tx_out) self.vout.append(tx_out)

View File

@ -33,7 +33,7 @@ else:
print("########################################### NOT Loading POS Support ######################################################") print("########################################### NOT Loading POS Support ######################################################")
pass pass
if settings.COINDAEMON_Reward == 'POS' and settings.COINDAEMON_SHA256_TX == 'yes': if settings.COINDAEMON_SHA256_TX == 'yes':
print("########################################### Loading SHA256 Transaction Message Support #########################################################") print("########################################### Loading SHA256 Transaction Message Support #########################################################")
pass pass
else: else:
@ -155,74 +155,61 @@ class CTxOut(object):
class CTransaction(object): class CTransaction(object):
def __init__(self): def __init__(self):
if settings.COINDAEMON_Reward == 'POW': if settings.COINDAEMON_Reward == 'POW':
self.nVersion = 1 self.nVersion = 1
self.vin = [] if settings.COINDAEMON_SHA256_TX == 'yes':
self.vout = [] self.nVersion = 2
self.nLockTime = 0 self.vin = []
self.sha256 = None self.vout = []
elif settings.COINDAEMON_Reward == 'POS' and settings.COINDAEMON_SHA256_TX == 'yes': self.nLockTime = 0
self.nVersion = 1 self.sha256 = None
self.nTime = 0 elif settings.COINDAEMON_Reward == 'POS':
self.vin = [] self.nVersion = 1
self.vout = [] if settings.COINDAEMON_SHA256_TX == 'yes':
self.nLockTime = 0 self.nVersion = 2
self.sha256 = None self.nTime = 0
self.strTxComment = "" self.vin = []
else: self.vout = []
self.nVersion = 1 self.nLockTime = 0
self.nTime = 0 self.sha256 = None
self.vin = [] if settings.COINDAEMON_SHA256_TX == 'yes':
self.vout = [] self.strTxComment = ""
self.nLockTime = 0
self.sha256 = None
def deserialize(self, f): def deserialize(self, f):
if settings.COINDAEMON_Reward == 'POW': if settings.COINDAEMON_Reward == 'POW':
self.nVersion = struct.unpack("<i", f.read(4))[0] self.nVersion = struct.unpack("<i", f.read(4))[0]
self.vin = deser_vector(f, CTxIn) self.vin = deser_vector(f, CTxIn)
self.vout = deser_vector(f, CTxOut) self.vout = deser_vector(f, CTxOut)
self.nLockTime = struct.unpack("<I", f.read(4))[0] self.nLockTime = struct.unpack("<I", f.read(4))[0]
self.sha256 = None self.sha256 = None
elif settings.COINDAEMON_Reward == 'POS' and settings.COINDAEMON_SHA256_TX == 'yes': elif settings.COINDAEMON_Reward == 'POS':
self.nVersion = struct.unpack("<i", f.read(4))[0] self.nVersion = struct.unpack("<i", f.read(4))[0]
self.nTime = struct.unpack("<i", f.read(4))[0] self.nTime = struct.unpack("<i", f.read(4))[0]
self.vin = deser_vector(f, CTxIn) self.vin = deser_vector(f, CTxIn)
self.vout = deser_vector(f, CTxOut) self.vout = deser_vector(f, CTxOut)
self.nLockTime = struct.unpack("<I", f.read(4))[0] self.nLockTime = struct.unpack("<I", f.read(4))[0]
self.sha256 = None self.sha256 = None
self.strTxComment = deser_string(f) if settings.COINDAEMON_SHA256_TX == 'yes':
else: self.strTxComment = deser_string(f)
self.nVersion = struct.unpack("<i", f.read(4))[0]
self.nTime = struct.unpack("<i", f.read(4))[0]
self.vin = deser_vector(f, CTxIn)
self.vout = deser_vector(f, CTxOut)
self.nLockTime = struct.unpack("<I", f.read(4))[0]
self.sha256 = None
def serialize(self): def serialize(self):
if settings.COINDAEMON_Reward == 'POW': if settings.COINDAEMON_Reward == 'POW':
r = "" r = ""
r += struct.pack("<i", self.nVersion) r += struct.pack("<i", self.nVersion)
r += ser_vector(self.vin) r += ser_vector(self.vin)
r += ser_vector(self.vout) r += ser_vector(self.vout)
r += struct.pack("<I", self.nLockTime) r += struct.pack("<I", self.nLockTime)
return r elif settings.COINDAEMON_Reward == 'POS':
elif settings.COINDAEMON_Reward == 'POS' and settings.COINDAEMON_SHA256_TX == 'yes': r = ""
r = "" r += struct.pack("<i", self.nVersion)
r += struct.pack("<i", self.nVersion) r += struct.pack("<i", self.nTime)
r += struct.pack("<i", self.nTime) r += ser_vector(self.vin)
r += ser_vector(self.vin) r += ser_vector(self.vout)
r += ser_vector(self.vout) r += struct.pack("<I", self.nLockTime)
r += struct.pack("<I", self.nLockTime) if settings.COINDAEMON_SHA256_TX == 'yes':
r += ser_string(self.strTxComment) r += ser_string(self.strTxComment)
return r return r
else:
r = ""
r += struct.pack("<i", self.nVersion)
r += struct.pack("<i", self.nTime)
r += ser_vector(self.vin)
r += ser_vector(self.vout)
r += struct.pack("<I", self.nLockTime)
return r
def calc_sha256(self): def calc_sha256(self):
if self.sha256 is None: if self.sha256 is None:
self.sha256 = uint256_from_str(SHA256.new(SHA256.new(self.serialize()).digest()).digest()) self.sha256 = uint256_from_str(SHA256.new(SHA256.new(self.serialize()).digest()).digest())