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()
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)
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()
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()
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
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()