示例#1
0
def read_distribution():
    supply = Address.select(fn.SUM(Address.balance)).execute()[0].sum

    res = {}
    sq = Address.select(Address.balance).order_by(Address.balance.desc()).limit(25)
    q = Address.select(fn.SUM(sq.c.balance)).from_(sq)

    res['0_24'] = {
        'percent': (q[0].sum / supply) * 100,
        'total': q[0].sum
    }
    sq = Address.select(Address.balance).order_by(Address.balance.desc()).offset(25).limit(25)
    q = Address.select(fn.SUM(sq.c.balance)).from_(sq)
    res['25_49'] = {
        'percent': (q[0].sum / supply) * 100,
        'total': q[0].sum
    }
    sq = Address.select(Address.balance).order_by(Address.balance.desc()).offset(50).limit(25)
    q = Address.select(fn.SUM(sq.c.balance)).from_(sq)
    res['50_99'] = {
        'percent': (q[0].sum / supply) * 100,
        'total': q[0].sum
    }
    sq = Address.select(Address.balance).order_by(Address.balance.desc()).offset(100)
    q = Address.select(fn.SUM(sq.c.balance)).from_(sq)
    res['remain'] = {
        'percent': (q[0].sum / supply) * 100,
        'total': q[0].sum
    }

    return res
示例#2
0
def read_richlist(order=None):
    q = Address.select()
    if order == 'sent':
        q = q.order_by(Address.sent.desc())
    elif order == 'received':
        q = q.order_by(Address.received.desc())
    else:
        q = q.order_by(Address.balance.desc())
    res = q.limit(100)
    return list(map(lambda addr : addr.to_dict(), res))
示例#3
0
async def read_address(address : str):
    try:
        record = Address.get(address=address)
    except:
        return HTMLResponse(status_code=404)
    res = record.to_dict()
    unconfirmed = 0
    utxos = Utxo.select().where((Utxo.address == address) & (Utxo.spent == True)).execute()
    for utxo in utxos:
        unconfirmed += utxo.amount
    res['balance'] -= unconfirmed
    res['unconfirmed'] = unconfirmed
    return res
示例#4
0
def read_misc():
    supply = Address.select(fn.SUM(Address.balance)).execute()[0].sum

    return {
        'supply': int(supply),
    }