Esempio n. 1
0
def dashboard():
    info = client.chain_get_info()
    head_block_num = info['head_block_num']
    transaction = client.chain_get_block(head_block_num)
    get_producers = client.chain_get_producers()
    producers = sorted(get_producers['rows'], key=lambda k: k['total_votes'])
    for idx in range(1, len(producers) + 1):
        accnt_name = producers[idx - 1]['owner']
        info = Producer.query.filter_by(accnt_name=accnt_name).first()
        if info is not None:
            producers[idx - 1]['team'] = info.name
    total_vote = get_producers['total_producer_vote_weight']
    blocks = [client.chain_get_block(head_block_num)]
    for block in reversed(range(head_block_num - 3, head_block_num)):
        blocks.append(client.chain_get_block(block))

    # Accounts
    last_account = Account.query.order_by(Account.idx.desc()).first()
    if last_account is None:
        accounts = []
    else:
        rows_first = last_account.idx - 8
        accounts = Account.query.filter(Account.idx>=rows_first).\
            filter(Account.idx<=last_account.idx).order_by(Account.idx.desc()).all()

    # Actions
    last_action = Action.query.order_by(Action.idx.desc()).first()
    if last_action is None:
        actions = []
    else:
        rows_first = last_action.idx - 8
        actions = Action.query.filter(Action.idx>=rows_first).\
            filter(Action.idx<=last_action.idx).order_by(Action.idx.desc()).all()
    count = {}
    count['trx_cnt'] = Transaction.query.count()
    count['action'] = Action.query.count()
    count['account'] = Account.query.count()
    return render_template('dashboard/index.html',
                           block_num=head_block_num,
                           producers=producers,
                           total_vote=total_vote,
                           blocks=blocks,
                           accounts=accounts,
                           actions=actions,
                           count=count)
Esempio n. 2
0
def block_info_from_hash(block_hash):
    if len(block_hash) != 64:
        abort(404)
    block = client.chain_get_block(block_hash)
    if block is None:
        abort(404)
    return render_template('block/block.html',
                           block_num=block_hash,
                           block=block)
Esempio n. 3
0
def block_info_from_id(block_num):
    if block_num.isnumeric() is False:
        abort(404)
    block = client.chain_get_block(block_num)
    if block is None:
        abort(404)
    return render_template('block/block.html',
                           block_num=block_num,
                           block=block)
Esempio n. 4
0
def block_parse():
    try:
        while True:
            loc_last_block = Block.query.order_by(Block.block_num.asc()).all()
            if len(loc_last_block) == 0:
                current_block = 0
            else:
                current_block = loc_last_block[-1].block_num
            parse_last_block = client.chain_get_info()['head_block_num']
            sync_count = 0
            while current_block < parse_last_block and sync_count < 100:
                current_block += 1
                block_info = client.chain_get_block(current_block)
                block_num = block_info['block_num']
                block_id = block_info['id']
                timestamp = block_info['timestamp']
                transactions = len(block_info['transactions'])
                producer = block_info['producer']
                block = Block(block_num, block_id, timestamp, transactions,
                              producer)
                db.session.add(block)
                if transactions != 0:
                    # Block info in transactions information, add transactions
                    for transaction in block_info['transactions']:
                        txn_id = transaction['trx']['id']
                        expiration = transaction['trx']['transaction'][
                            'expiration']
                        actions = transaction['trx']['transaction']['actions']
                        trx = Transaction(txn_id, timestamp, len(actions),
                                          block_num)
                        db.session.add(trx)
                        if len(actions) != 0:
                            acts, accounts = action_parse(txn_id)
                            for act in acts:
                                db.session.add(act)
                            for account in accounts:
                                db.session.add(account)
                db.session.commit()
                sync_count += 1
                # Sleep for node chain performance
                time.sleep(0.5)
            if sync_count < 100:
                time.sleep(10)
            else:
                time.sleep(5)
    except Exception as e:
        print(e)