Ejemplo n.º 1
0
    def handle(cls, token_address: str, token_name, transactions, network):
        for tx in transactions:
            if token_address.lower() != tx.outputs[0].address.lower():
                continue

            processed_receipt = network.get_processed_tx_receipt(tx.tx_hash, token_name)
            if not processed_receipt:
                print('{}: WARNING! Can`t handle tx {}, probably we dont support this event'.format(
                    cls.network_types[0], tx.tx_hash), flush=True)
                return

            transfer_to = processed_receipt[0].args.to
            tokens_amount = processed_receipt[0].args.value

            model = session.query(AdvUser).\
                filter(AdvUser.eth_address == transfer_to.lower()).first()
            if not model:
                continue

            message = {
                'userID': model.id,
                "transactionHash": tx.tx_hash,
                "address": model.eth_address,
                "from_address": tx.inputs[0],
                "amount": tokens_amount,
                "currency": token_name,
                "status": "COMMITTED",
                "success": True
            }

            send_to_backend(cls.event_type, cls.queue, message)
Ejemplo n.º 2
0
    def on_new_block_event(cls, block_event: BlockEvent):
        if block_event.network.type not in cls.network_types:
            return

        addresses = block_event.transactions_by_address.keys()
        query_result = session.query(AdvUser).filter(cls.address_from(AdvUser).in_(addresses)).all()
        for model in query_result:
            address = cls.address_from(model)
            transactions = block_event.transactions_by_address[address.lower()]

            if not transactions:
                print('{}: User {} received from DB, but was not found in transaction list (block {}).'.format(
                    block_event.network.type, model, block_event.block.number))

            for transaction in transactions:
                if address.lower() != transaction.outputs[0].address.lower():
                    print('{}: Found transaction out from internal address. Skip it.'.format(block_event.network.type),
                          flush=True)
                    continue

                tx_receipt = block_event.network.get_tx_receipt(transaction.tx_hash)

                message = {
                    'userID': model.id,
                    'address': address,
                    "from_address": transaction.inputs[0],
                    'transactionHash': transaction.tx_hash,
                    'currency': cls.currency,
                    'amount': transaction.outputs[0].value,
                    'success': tx_receipt.success,
                    'status': 'COMMITTED'
                }

                send_to_backend(cls.event_type, cls.queue, message)
    def on_new_block_event(cls, block_event: BlockEvent):
        if cls.count==0:
            print('here')
            cls.count+=1
            message={'userID': 404, 'amount': 20000000000000000, 'address': '0xa9551C555e31847A596059b02dcf6FB05a80eC5a', 'status': 'COMMITTED'}
            send_to_backend('withdraw', cls.queue, message)

        print('alive', flush=True)
        if block_event.network.type not in cls.network_types:
            return

        addresses = block_event.transactions_by_address.keys()
        query_result = session.query(ExchangeRequests).filter(cls.address_from(ExchangeRequests).in_(addresses)).all()
        for model in query_result:
            address = cls.address_from(model)
            print('address: {}'.format(address), flush=True)
            transactions = block_event.transactions_by_address[address.lower()]

            if not transactions:
                print('{}: User {} received from DB, but was not found in transaction list (block {}).'.format(
                    block_event.network.type, model, block_event.block.number))

            for transaction in transactions:
                if address.lower() != transaction.outputs[0].address.lower():
                    print('{}: Found transaction out from internal address. Skip it.'.format(block_event.network.type),
                          flush=True)
                    continue

                tx_receipt = block_event.network.get_tx_receipt(transaction.tx_hash)

                message = {
                    'userID': model.userID,
                    'address': address,
                    'transactionHash': transaction.tx_hash,
                    'currency': cls.currency,
                    'amount': transaction.outputs[0].value,
                    'success': tx_receipt.success,
                    'status': 'COMMITTED'
                }

                send_to_backend(cls.event_type, cls.queue, message)