Пример #1
0
def list_txs(currency, page=None):
    db = get_connection()
    results, paging_state = db.list_txs(currency, page)

    heights = [row.height for row in results]
    rates = list_rates(currency, heights)
    tx_list = [from_row(row, rates[row.height])
               for row in results]

    return Txs(next_page=paging_state, txs=tx_list)
def list_address_links(currency, address, neighbor):
    db = get_connection()
    links = db.list_address_links(currency, address, neighbor)

    heights = [row['height'] for row in links]
    rates = list_rates(currency, heights)

    return [Link(tx_hash=e['tx_hash'],
                 height=e['height'],
                 timestamp=e['timestamp'],
                 input_value=convert_value(
                     e['input_value'], rates[e['height']]),
                 output_value=convert_value(
                     e['output_value'], rates[e['height']]),
                 ) for e in links]
Пример #3
0
def list_txs(currency, paging_state=None):
    session = get_session(currency, 'raw')

    query = "SELECT * FROM transaction"
    statement = SimpleStatement(query, fetch_size=TXS_PAGE_SIZE)
    results = session.execute(statement, paging_state=paging_state)

    paging_state = results.paging_state
    heights = [row.height for row in results.current_rows]
    rates = list_rates(currency, heights)
    tx_list = [
        Tx.from_row(row, rates[row.height]).to_dict()
        for row in results.current_rows
    ]

    return paging_state, tx_list
def list_address_txs(currency, address, page=None, pagesize=None):
    db = get_connection()
    results, paging_state = \
        db.list_address_txs(currency, address, page, pagesize)
    address_txs = []
    if results:
        heights = [row.height for row in results]
        rates = list_rates(currency, heights)
        address_txs = [AddressTx(
                        address=address,
                        height=row.height,
                        timestamp=row.timestamp,
                        tx_hash=row.tx_hash.hex(),
                        value=convert_value(row.value, rates[row.height])
                        )
                       for row in results]
    return AddressTxs(next_page=paging_state, address_txs=address_txs)
def list_addresses_links(currency, address, neighbor):
    session = get_session(currency, 'transformed')

    address_id, address_id_group = get_address_id_id_group(currency, address)
    neighbor_id, neighbor_id_group = get_address_id_id_group(
        currency, neighbor)
    if address_id and neighbor_id:
        query = "SELECT tx_list FROM address_outgoing_relations WHERE " \
                "src_address_id_group = %s AND src_address_id = %s AND " \
                "dst_address_id = %s"
        results = session.execute(query,
                                  [address_id_group, address_id, neighbor_id])
        if results.current_rows:
            txs = [tx_hash for tx_hash in results.current_rows[0].tx_list]
            query = "SELECT * FROM address_transactions WHERE " \
                    "address_id_group = %s AND address_id = %s AND " \
                    "tx_hash IN %s"
            results1 = session.execute(
                query, [address_id_group, address_id,
                        ValueSequence(txs)])
            results2 = session.execute(
                query, [neighbor_id_group, neighbor_id,
                        ValueSequence(txs)])
            if results1.current_rows and results2.current_rows:
                links = dict()
                for row in results1.current_rows:
                    hsh = row.tx_hash.hex()
                    links[hsh] = dict()
                    links[hsh]['tx_hash'] = hsh
                    links[hsh]['height'] = row.height
                    links[hsh]['timestamp'] = row.timestamp
                    links[hsh]['input_value'] = row.value
                for row in results2.current_rows:
                    hsh = row.tx_hash.hex()
                    links[hsh]['output_value'] = row.value
                heights = [e['height'] for e in links.values()]
                rates = list_rates(currency, heights)
                return [
                    Link.from_dict(e, rates[e['height']]).to_dict()
                    for e in links.values()
                ]
    return []
def list_address_txs(currency, address, paging_state=None, pagesize=None):
    session = get_session(currency, 'transformed')

    address_id, address_id_group = get_address_id_id_group(currency, address)
    if address_id:
        query = "SELECT * FROM address_transactions WHERE address_id = %s " \
                "AND address_id_group = %s"
        fetch_size = ADDRESS_PAGE_SIZE
        if pagesize:
            fetch_size = pagesize
        statement = SimpleStatement(query, fetch_size=fetch_size)
        results = session.execute(statement, [address_id, address_id_group],
                                  paging_state=paging_state)
        paging_state = results.paging_state
        if results:
            heights = [row.height for row in results.current_rows]
            rates = list_rates(currency, heights)
            address_txs = [
                AddressTx.from_row(row, address, rates[row.height]).to_dict()
                for row in results.current_rows
            ]
            return paging_state, address_txs
    return None, None
def list_address_txs(test_case):
    """Test case for list_address_txs

    Get all transactions an address has been involved in
    """
    rates = list_rates(currency='btc', heights=[2])

    address_txs = AddressTxs(
        next_page=None,
        address_txs=[
            AddressTx(tx_hash="123456",
                      value=convert_value(1260000, rates[2]),
                      height=2,
                      address=addressWithoutTags.address,
                      timestamp=1510347493),
            AddressTx(tx_hash="abcdef",
                      value=convert_value(-1260000, rates[2]),
                      height=2,
                      address=addressWithoutTags.address,
                      timestamp=1511153263)
        ])

    result = service.list_address_txs('btc', addressWithoutTags.address)
    assertEqual(address_txs, result)