#!/usr/bin/env python3 # # Copyright (c) 2016, Neil Booth # # All rights reserved. # # See the file "LICENCE" for information about the copyright # and warranty status of this software. '''Script to query the database for debugging purposes. Not currently documented; might become easier to use in future. ''' import sys from server.env import Env from server.db import DB from lib.hash import hash_to_str def count_entries(hist_db, utxo_db): utxos = 0 for key in utxo_db.iterator(prefix=b'u', include_value=False): utxos += 1 print("UTXO count:", utxos) hashX = 0 for key in utxo_db.iterator(prefix=b'h', include_value=False): hashX += 1 print("HashX count:", hashX) hist = 0 hist_len = 0 for key, value in hist_db.iterator(prefix=b'H'): hist += 1 hist_len += len(value) // 4 print("History rows {:,d} entries {:,d}".format(hist, hist_len)) def main(): env = Env() bp = DB(env) coin = env.coin if len(sys.argv) == 1: count_entries(bp.hist_db, bp.utxo_db) return argc = 1 try: limit = int(sys.argv[argc]) argc += 1 except Exception: limit = 10 for addr in sys.argv[argc:]: print('Address: ', addr) hashX = coin.address_to_hashX(addr) n = None for n, (tx_hash, height) in enumerate(bp.get_history(hashX, limit)): print('History #{:d}: hash: {} height: {:d}' .format(n + 1, hash_to_str(tx_hash), height)) n = None for n, utxo in enumerate(bp.get_utxos(hashX, limit)): print('UTXOs #{:d}: hash: {} pos: {:d} height: {:d} value: {:d}' .format(n + 1, hash_to_str(utxo.tx_hash), utxo.tx_pos, utxo.height, utxo.value)) if n is None: print('No UTXOs') balance = bp.get_balance(hashX) print('Balance: {} {}'.format(coin.decimal_value(balance), coin.SHORTNAME)) if __name__ == '__main__': main()