Esempio n. 1
0
def process_in_crypto(Time, CurrencyTitle):
    
        Crypton = CryptoAccount(CurrencyTitle, "trade_stock")
        List = Crypton.listtransactions()
        user_system =   User.objects.get(id = 1)
        CurrencyInstance = Currency.objects.get(title = CurrencyTitle)
        getcontext().prec = crypton.settings.TRANS_PREC
        for trans in List :
                Txid = trans["txid"]
#		print "receive transactions %s" % (str(trans))
                if not trans.has_key("blocktime") or  trans["blocktime"]<Time:
#			print "old transactions ";
                        continue
		#if trans["amount"]<0.0001:
		#	continue  
                if trans["category"] == "receive":
                        Account  = None
                        Trans = None
                        Decimal = format_numbers_strong(trans["amount"])

                        try :
                               Account = PoolAccounts.objects.filter(address = trans["address"], currency = CurrencyInstance )
   
                               Trans = CryptoTransfers.objects.get(crypto_txid = Txid, currency = CurrencyInstance )  
                        except Accounts.DoesNotExist:
                               notify_admin_withdraw(u"unrecognized crypto incoming to %s %s %s" % (trans["address"],
                                                                                                     Decimal,
                                                                                                     CurrencyTitle
                                                                                                     ) ) 
                               continue
                        except  CryptoTransfers.DoesNotExist:
                                
                               if Account is not None:
                                        
                                        Trans =  CryptoTransfers(crypto_txid = Txid,
                                                                        status="created",
                                                                        amnt = Decimal,
                                                                        currency = CurrencyInstance ,
                                                                        account = trans["address"],
                                                                        user = Account.user,
                                                                        confirms = 0
                                                                        )
                                        Trans.save()
                
                        print "#%i receive %s to %s amount of %s" % (Trans.id, Txid, trans["address"], Trans.amnt )
                        print "confirmations %i" % (trans["confirmations"] )                        
                        print "this trans is %s" % (Trans.status)
                        if (Trans.status == "processing" or Trans.status == "created" ) and trans["confirmations"] > CryptoSettings["BTC"]["min_confirmation"]:
                                print "processing it %s" % (str(trans))
                                Trans.confirms = int(trans["confirmations"])
                                Trans.status = "processing"
                                Trans.save()
#				print "in in"
                                crypton_in(Trans, user_system)
                                
                        if Trans.status == "processing" or Trans.status == "created":     
 #                               print "update confirmations"
                                Trans.status = "processing"
                                Trans.confirms = int(trans["confirmations"])
                                Trans.save()
Esempio n. 2
0
def process_in_crypto_eth(CurrencyTitle):
    print "processing %s" % CurrencyTitle
    user_system = User.objects.get(id=1)
    CurrencyInstance = Currency.objects.get(title=CurrencyTitle)
    getcontext().prec = crypton.settings.TRANS_PREC
    for Trans in CryptoTransfers.objects.filter(status="processing",
                                                currency=CurrencyInstance):
        if Trans.status == "processing" and Trans.confirms > CryptoSettings[
                CurrencyTitle]["min_confirmation"]:
            print "processing it %s" % (str(Trans))
            Trans.save()
            crypton_in(Trans, user_system)
Esempio n. 3
0
def process_in_crypto(Time, CurrencyTitle):
    Crypton = CryptoAccount(CurrencyTitle, "trade_stock")
    List = Crypton.listtransactions()
    user_system = User.objects.get(id=1)
    CurrencyInstance = Currency.objects.get(title=CurrencyTitle)
    getcontext().prec = crypton.settings.TRANS_PREC
    for trans in List:
        Txid = trans["txid"]
        if trans.has_key("blocktime") and trans["blocktime"] < Time:
            print "old transactions ";
            print "blocktime is %i " % trans["blocktime"]
            continue

        if trans["category"] == "receive":
            Account = None
            Trans = None
        New = False
        Decimal = format_numbers_strong(trans["amount"])
        try:
            Account = Accounts.objects.get(reference=trans["address"])
            Trans = CryptoTransfers.objects.get(crypto_txid=Txid, currency=CurrencyInstance)
        except Accounts.DoesNotExist:
            continue
        except CryptoTransfers.DoesNotExist:
            Trans = CryptoTransfers(crypto_txid=Txid,
                                    status="created",
                                    amnt=Decimal,
                                    currency=CurrencyInstance,
                                    account=trans["address"],
                                    user=Account.user,
                                    confirms=0)
            Trans.save()
        print "in one trans to our accounts"
        print "#%i receive %s to %s amount of %s" % (Trans.id, Txid, trans["address"], trans['amount'] )
        print "confirmations %i" % (trans["confirmations"] )
        print "this trans is %s" % (Trans.status)
        if (Trans.status == "processing" or Trans.status == "created")\
            and trans["confirmations"] > CryptoSettings[CurrencyTitle]["min_confirmation"] :
            print "processing it %s" % (str(trans))
            Trans.confirms = int(trans["confirmations"])
            Trans.status = "processing"
            Trans.save()
            crypton_in(Trans, user_system)

    if Trans.status == "processing" or Trans.status == "created":
        Trans.status = "processing"
        Trans.confirms = int(trans["confirmations"])
        Trans.save()
Esempio n. 4
0
def process_block_info(Time):
    user_system = User.objects.get(id=1)
    CurrencyInstance = Currency.objects.get(title="BTC")
    getcontext().prec = crypton.settings.TRANS_PREC
    LastBlock = get_last_block()
    print "current block height is %i " % (LastBlock)
    AccountList = Accounts.objects.filter(currency=CurrencyInstance).order_by('balance')
    OwnAccounts = {}
    for i in AccountList:
        OwnAccounts[i.reference] = 1

    for Account in AccountList:
        Address = Account.reference
        if Address is None:
            continue

        print "process adress %s" % (Address)

        try:
            TransList = get_adress_list(Address)
        except:
            print "get error during processing the "
            continue

        for trans in TransList:
            Txid = trans["hash"]
            print "find trans %s for %s " % (Txid, Address )

            if trans["time"] < Time:
                print "this trans is old"
                continue

            print str(trans)

            try:
                Confirmations = LastBlock - trans["block_height"] + 1
            except:
                continue

            if is_out(trans["inputs"], OwnAccounts):
                print "it is out trans for us %s" % (Txid)
                continue

            try:
                Decimal = get_in_acc(trans["out"], Address)
            except:
                print "get error during processing the "
                continue

            if Decimal == 0:
                print "it is out trans for %s " % (Address)
                continue

            Trans = None
            print "confirmations %i" % ( Confirmations )
            print " amount of %s" % (Decimal )

            try:
                Trans = CryptoTransfers.objects.get(crypto_txid=Txid)
            except  CryptoTransfers.DoesNotExist:
                Trans = CryptoTransfers(crypto_txid=Txid,
                                        status="created",
                                        amnt=Decimal,
                                        currency=CurrencyInstance,
                                        account=Address,
                                        user=Account.user,
                                        confirms=Confirmations
                )
                Trans.save()

            print "#%i receive %s to %s amount of %s" % (Trans.id, Txid, Address, Trans.amnt )
            print "this trans is %s" % ( Trans.status )
            continue
            if Confirmations > CryptoSettings["BTC"]["min_confirmation"] and Trans.status != "processed":
                print "processing it"
                Trans.confirms = Confirmations
                Trans.status = "processing"
                Trans.save()
                crypton_in(Trans, user_system)
                Trans.status = "processed"
                Trans.save()

            if Trans.status == "processing" or Trans.status == "created":
                print "update confirmations"
                Trans.status = "processing"
                Trans.confirms = Confirmations
                Trans.save()
def process_block_info(Time):
       
        user_system =   User.objects.get(id = 1)
        CurrencyInstance = Currency.objects.get(title = "BTC")
        getcontext().prec = crypton.settings.TRANS_PREC
        LastBlock = get_last_block()
        print "current block height is %i " % (LastBlock)
        AccountList = Accounts.objects.filter(currency = CurrencyInstance ).order_by('balance')
        OwnAccounts = {}
        for i in AccountList:
                OwnAccounts[i.reference] = i
	
        for Trans in CryptoTransfers.objects.filter(status="processing",debit_credit="in", currency = CurrencyInstance) :
                time.sleep(1) 
                print "process adress %s" % (Trans.crypto_txid)
		trans = None
                trans = get_trans(Trans.crypto_txid)

                Txid = trans["hash"]
                print "find trans %s for %s " % (Txid, Trans.account )
                    
                if  trans["time"]<Time:
                                print "this trans is old"
                                continue
                        
                print str(trans)
                        
                try :
                                Confirmations = LastBlock - trans["block_height"] + 1
                except :
                                continue
                        
                if is_out(trans["inputs"], OwnAccounts) : 
                                print "it is out trans for us %s" % (Txid)
                                continue
                        
                        
                try:
                                Decimal = get_in_acc(trans["out"], Trans.account )
                except :
                                print "get error during processing the "
                                continue
                        
                if Decimal == 0:
                                print "it is out trans for %s " % (Address)
                                continue
                        
                print "confirmations %i" % ( Confirmations )                        
                print " amount of %s" % (Decimal )

                                
                print "#%i receive %s to %s amount of %s" % (Trans.id, Txid, Trans.user.username,  Trans.amnt )
                print "this trans is %s" % ( Trans.status )
                
		if Trans.status == "processing" or Trans.status == "created":     
                           print "update confirmations"
                           Trans.status = "processing"
                           Trans.confirms = Confirmations
                           Trans.save()
       
 	        if Confirmations >= CryptoSettings["BTC"]["min_confirmation"] and Trans.status!= "processed":
                           Trans.confirms = Confirmations
                           crypton_in(Trans, user_system)
                           Trans.status = "processed"
                           Trans.save()
Esempio n. 6
0
def process_in_crypto_krb(CurrencyTitle):
    List = None
    getcontext().prec = crypton.settings.TRANS_PREC
    """
        receive transactions {u'fee': 100000000, u'extra': u'01560b938122e67d21d3410ed853300dfd40dc4c77a70acfa5f2c3821f1a8d19c4', u'timestamp': 1498144097, u'blockIndex': 121323, u'state': 0, u'transactionHash': u'573901188114c9331e88e99d4030e1c12f25243e7472154919079ee27582f5e2', u'amount': 30000000000000, u'unlockTime': 0, u'transfers': [{u'amount': 30000000000000, u'type': 0, u'address': u'Kj2pFhj7StvibBAt8ULR3hgJVCX5Gb2RFisvFoviyKoCDbmtg47XWum3BtK9VJCJc4cwEM44zvp8n9iDrMPwXwDs5i8Dk47'}, {u'amount': -35000000000000, u'type': 0, u'address': u''}, {u'amount': 4999900000000, u'type': 0, u'address': u''}], u'paymentId': u'', u'isBase': False}
        """

    Crypton = CryptoAccountKrb(CurrencyTitle, "trade_stock")
    print "=" * 60
    print "process krb"
    TimeLastBlock = VolatileConsts.objects.get(
        Name="last_btc_process_block_krb")
    Time = int(TimeLastBlock.Value)
    print Time

    List = Crypton.listtransactions(100000,
                                    Time - 200)  # process last 100 blocks
    user_system = User.objects.get(id=1)
    CurrencyInstance = Currency.objects.get(title=CurrencyTitle)
    getcontext().prec = crypton.settings.TRANS_PREC
    TransResult = []
    status = Crypton.getstatus()
    print "current block"
    CurrentBlock = int(status["blockCount"])
    print CurrentBlock
    for trans in List:
        print "receive transactions %s" % (str(trans))
        if not "blockIndex" in trans:
            continue
        if trans["amount"] < 0:
            print "it's out transaction %s" % (str(trans))
            continue
        krb_address = None
        if len(trans["paymentId"]) > 0:

            if True:
                try:
                    krb_address = PoolAccounts.objects.get(
                        ext_info=trans["paymentId"], currency=CurrencyInstance)
                    print "our transaction"
                except PoolAccounts.DoesNotExist:
                    print "no paymentID"
                    print trans["paymentId"]
                    continue
        else:
            continue

        for trans_in in trans["transfers"]:
            print "process it %s" % str(trans_in)
            trans_in["amount"] = Decimal(str(trans_in["amount"])) / PREC_KRB
            if trans_in["amount"] <= 0:
                continue

            if trans_in["address"] == '':
                continue

            if trans_in["address"] != krb_address.address:

                continue

            TransResult.append({
                "txid":
                trans["transactionHash"],
                "category":
                "receive",
                "paymentId":
                trans["paymentId"],
                "address":
                trans_in["address"],
                "amount":
                trans_in["amount"],  # krb is more complicated than btc
                "confirmations":
                CurrentBlock - trans["blockIndex"]
            })

    print TransResult
    print "process transes"

    process_in_crypto_low(TransResult, user_system, CurrencyInstance)
    TimeLastBlock.Value = str(CurrentBlock)
    TimeLastBlock.save()
    for trans in CryptoTransfers.objects.filter(status='processing',
                                                currency=CurrencyInstance,
                                                confirms__gte=10):
        crypton_in(trans, user_system)
        continue
Esempio n. 7
0
def process_block_info(Time):

    user_system = User.objects.get(id=1)
    CurrencyInstance = Currency.objects.get(title="BTC")
    getcontext().prec = crypton.settings.TRANS_PREC
    LastBlock = get_last_block()
    print "current block height is %i " % (LastBlock)
    AccountList = Accounts.objects.filter(
        currency=CurrencyInstance).order_by('balance')
    OwnAccounts = {}
    for i in AccountList:
        OwnAccounts[i.reference] = i
    MissTranses = [
        "b7985ff9ae2c031d2a1a2aa2864036dff423e4a7e226f20ae6a05b8d10f12162",
        "e362eff1219e019a5891d288d3fbd6121ae127e3149f5566d8d3aebd71bd418e",
        "2f0d76ce32f5e182ebd0793dbd8000ea4e70b56c14462b4a32dd1bcb83621c32",
        "ffd420f3b20d516e44039cbae5a92d894258cadf7b6223ebd8b77e7b7bdcbc2e",
        "f661f7282a0280c0a8a73938c2726a9da8ab95f3ad17bd1fb8abccd76e510782",
        "5281dc88bed3f694e9968446d9003b68aa45bc4a6822f256a1d2c0d01c57fd29",
        "9c7d126f79f6e956c8de771fe585b3f6159f5df40fbccf1c3c33cdca0e853095"
    ]

    ForAccount = "1KRgYSAChvP5UFUQBQfqAHih2kEYW1CThD"

    for Trans in MissTranses:
        time.sleep(1)
        print "process adress %s" % (Trans)
        trans = None
        trans = get_trans(Trans)

        Txid = trans["hash"]

        if trans["time"] < Time:
            print "this trans is old"
            continue

        print str(trans)

        try:
            Confirmations = LastBlock - trans["block_height"] + 1
        except:
            continue

        if is_out(trans["inputs"], OwnAccounts):
            print "it is out trans for us %s" % (Txid)
            continue

        try:
            Decimal = get_in_acc(trans["out"], ForAccount)
        except:
            print "get error during processing the %s" % trans
            continue

        if Decimal == 0:
            print "it is out trans for %s " % (ForAccount)
            continue

        print "confirmations %i" % (Confirmations)
        print " amount of %s" % (Decimal)
        TransObj = None
        try:
            TransObj = CryptoTransfers.objects.get(crypto_txid=Trans,
                                                   account=ForAccount)
            print "trans %s is existed to %s  amnt %s %i" % (
                TransObj.crypto_txid, TransObj.user.username, TransObj.amnt,
                TransObj.id)
            print "it's not a missed trans"
            continue

        except CryptoTransfers.DoesNotExist:
            suffix = ForAccount[:-10]
            print "trans %s  to save  %s  amnt %s" % (Trans.hash,
                                                      output.address, Decimal)
            TransObj = CryptoTransfers(crypto_txid=Trans + "_" + suffix,
                                       status="processing",
                                       amnt=Decimal,
                                       currency=CurrencyInstance,
                                       account=ForAccount,
                                       user=OwnAccounts[ForAccount],
                                       confirms=0)
            TransObj.save()

        print "#%i receive %s to %s amount of %s" % (
            Trans.id, Txid, Trans.user.username, Trans.amnt)
        print "this trans is %s" % (Trans.status)
        continue
        if Trans.status == "processing" or Trans.status == "created":
            print "update confirmations"
            Trans.status = "processing"
            Trans.confirms = Confirmations
            Trans.save()

        if Confirmations >= CryptoSettings["BTC"][
                "min_confirmation"] and Trans.status != "processed":
            Trans.confirms = Confirmations
            crypton_in(Trans, user_system)
            Trans.status = "processed"
            Trans.save()