def get_script_pubkey(self): if settings.COINDAEMON_Reward == 'POW': log.debug("Initialize validate wallet %s" % self.wallet) self._validate() return util.script_to_address(self.address) else: return util.script_to_pubkey(self.pubkey)
def get_script_pubkey(self): if settings.COINDAEMON_Reward == 'POW': if not self.is_valid: self._validate() raise Exception("Wallet Address is Wrong") return util.script_to_address(self.address) else: return util.script_to_pubkey(self.pubkey)
def get_script_pubkey(self): if not self.is_valid: # Try again, maybe litecoind was down? self._validate() raise Exception("Coinbase address is not validated!") if settings.MAIN_COIN_TYPE == "proof-of-work": return util.script_to_address(self.address) else: return util.script_to_pubkey(self.address)
def fill_from_rpc(self, data): '''Convert getblocktemplate result into BlockTemplate instance''' payee = None if (data['payee'] != ''): payee = util.script_to_address(data['payee']) payee_amount = data.get('payee_amount', data['coinbasevalue'] / 5) #default to 20% #txhashes = [None] + [ binascii.unhexlify(t['hash']) for t in data['transactions'] ] txhashes = [None] + [ util.ser_uint256(int(t['hash'], 16)) for t in data['transactions'] ] mt = merkletree.MerkleTree(txhashes) coinbase = CoinbaseTransactionPOW(self.timestamper, self.coinbaser, payee, payee_amount, data['coinbasevalue'], data['coinbaseaux']['flags'], data['height'], settings.COINBASE_EXTRAS) self.height = data['height'] self.nVersion = data['version'] self.hashPrevBlock = int(data['previousblockhash'], 16) self.nBits = int(data['bits'], 16) self.hashMerkleRoot = 0 self.nTime = 0 self.nNonce = 0 self.masternode_payments = data['masternode_payments'] self.vtx = [ coinbase, ] for vote in data['votes']: v = halfnode.CMasterNodeVote() v.deserialize(StringIO.StringIO(binascii.unhexlify(vote))) self.vmn.append(v) for tx in data['transactions']: t = halfnode.CTransaction() t.deserialize(StringIO.StringIO(binascii.unhexlify(tx['data']))) self.vtx.append(t) self.curtime = data['curtime'] self.timedelta = self.curtime - int(self.timestamper.time()) self.merkletree = mt self.target = util.uint256_from_compact(self.nBits) # Reversed prevhash self.prevhash_bin = binascii.unhexlify( util.reverse_hash(data['previousblockhash'])) self.prevhash_hex = "%064x" % self.hashPrevBlock self.broadcast_args = self.build_broadcast_args()
def createcoinbasetx(data, address, msg): nTime = data['curtime'] extranonce_type = '>Q' extranonce_placeholder = struct.pack(extranonce_type, int('f000000ff111111f', 16)) extranonce_size = struct.calcsize(extranonce_type) height = data['height'] flags = data['coinbaseaux']['flags'] extradata = 'NeuralMiner' _time = nTime #in scriptSig_template = (util.ser_number(height) + binascii.unhexlify(flags) + util.ser_number(int(_time)) + chr(extranonce_size), util.ser_string('' + extradata)) scriptSig = scriptSig_template[ 0] + extranonce_placeholder + scriptSig_template[1] prevout_hash = 0L prevout_n = 2**32 - 1 nSequence = 0 txIn = "" txIn += "".zfill(64).decode('hex') txIn += struct.pack("<I", prevout_n) txIn += util.ser_string(scriptSig) txIn += struct.pack("<I", nSequence) #out scriptPubKey = util.script_to_address(address) nVersion = 1 nLockTime = 0 nValue = data['coinbasevalue'] txOut = "" txOut += struct.pack("<q", nValue) txOut += util.ser_string(scriptPubKey) coinbasetx = "" coinbasetx += struct.pack("<i", nVersion) coinbasetx += chr(01) coinbasetx += txIn coinbasetx += chr(01) coinbasetx += txOut coinbasetx += struct.pack("<I", nLockTime) coinbase = binascii.hexlify(coinbasetx) return coinbase
def fill_from_rpc(self, data): '''Convert getblocktemplate result into BlockTemplate instance''' payee = None if(data['payee'] != ''): payee = util.script_to_address(data['payee']) payee_amount = data.get('payee_amount', data['coinbasevalue']/5) #default to 20% #txhashes = [None] + [ binascii.unhexlify(t['hash']) for t in data['transactions'] ] txhashes = [None] + [ util.ser_uint256(int(t['hash'], 16)) for t in data['transactions'] ] mt = merkletree.MerkleTree(txhashes) coinbase = CoinbaseTransactionPOW(self.timestamper, self.coinbaser, payee, payee_amount, data['coinbasevalue'], data['coinbaseaux']['flags'], data['height'], settings.COINBASE_EXTRAS) self.height = data['height'] self.nVersion = data['version'] self.hashPrevBlock = int(data['previousblockhash'], 16) self.nBits = int(data['bits'], 16) self.hashMerkleRoot = 0 self.nTime = 0 self.nNonce = 0 self.masternode_payments = data['masternode_payments'] self.vtx = [ coinbase, ] for vote in data['votes']: v = halfnode.CMasterNodeVote() v.deserialize(StringIO.StringIO(binascii.unhexlify(vote))) self.vmn.append(v) for tx in data['transactions']: t = halfnode.CTransaction() t.deserialize(StringIO.StringIO(binascii.unhexlify(tx['data']))) self.vtx.append(t) self.curtime = data['curtime'] self.timedelta = self.curtime - int(self.timestamper.time()) self.merkletree = mt self.target = util.uint256_from_compact(self.nBits) # Reversed prevhash self.prevhash_bin = binascii.unhexlify(util.reverse_hash(data['previousblockhash'])) self.prevhash_hex = "%064x" % self.hashPrevBlock self.broadcast_args = self.build_broadcast_args()
def __init__(self, timestamper, coinbaser, value, flags, height, data, rewards): super(CoinbaseTransactionPOW, self).__init__() log.debug("Got to CoinBaseTX") #self.extranonce = 0 if len(self.extranonce_placeholder) != self.extranonce_size: raise Exception( "Extranonce placeholder don't match expected length!") tx_in = halfnode.CTxIn() tx_in.prevout.hash = 0L tx_in.prevout.n = 2**32 - 1 tx_in._scriptSig_template = ( util.ser_number(height) + binascii.unhexlify(flags) + util.ser_number(int(timestamper.time())) + \ chr(self.extranonce_size), util.ser_string(coinbaser.get_coinbase_data() + data) ) tx_in.scriptSig = tx_in._scriptSig_template[ 0] + self.extranonce_placeholder + tx_in._scriptSig_template[1] tx_out = halfnode.CTxOut() tx_out.nValue = value tx_out.scriptPubKey = coinbaser.get_script_pubkey() if settings.COINDAEMON_TX == 'yes': self.strTxComment = "http://github.com/ahmedbodi/stratum-mining" self.vin.append(tx_in) self.vout.append(tx_out) if rewards is not None: for key, val in rewards.items(): tx_out = halfnode.CTxOut() tx_out.nValue = val tx_out.scriptPubKey = util.script_to_address(key) self.vout.append(tx_out) # Two parts of serialized coinbase, just put part1 + extranonce + part2 to have final serialized tx self._serialized = super(CoinbaseTransactionPOW, self).serialize().split( self.extranonce_placeholder)
def get_script_pubkey(self): if not self.is_valid: # Try again, maybe bitcoind was down? self._validate() raise Exception("Coinbase address %s is not validated!" % self.address) return util.script_to_address(self.address)
def get_script_pubkey(self): if settings.COINDAEMON_Reward == 'POW': self._validate() return util.script_to_address(self.address) else: return util.script_to_pubkey(self.pubkey)
def get_script_pubkey(self): if settings.COINDAEMON_REWARD == 'POW': self._validate() return util.script_to_address(self.address) else: return util.script_to_pubkey(self.pubkey)
def get_donations_script_pubkey(self): if settings.COINDAEMON_Reward == 'POW': return util.script_to_address(self.donations_address)
def get_script_pubkey(self): if not self.is_valid: self._validate() raise Exception("Coinbase address is not validated!") return util.script_to_address(self.address)