You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
2.0 KiB
76 lines
2.0 KiB
#!/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()
|
|
|