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()
Example #5
0
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()
Example #7
0
    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)
Example #8
0
 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)    
Example #9
0
    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)    
Example #10
0
 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)
Example #11
0
 def get_donations_script_pubkey(self):
     if settings.COINDAEMON_Reward == 'POW':
         return util.script_to_address(self.donations_address)
Example #12
0
 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)