def balances (address): address_data = util.get_address(db, address=address) balances = address_data['balances'] table = PrettyTable(['Asset', 'Amount']) table.add_row(['BTC', bitcoin.get_btc_balance(address)]) # BTC for balance in balances: asset = balance['asset'] amount = util.devise(db, balance['amount'], balance['asset'], 'output') table.add_row([asset, amount]) print('Balances') print(table.get_string())
def balances (address): if not bitcoin.base58_decode(address, config.ADDRESSVERSION): raise exceptions.InvalidAddressError('Not a valid Bitcoin address:', address) address_data = util.get_address(db, address=address) balances = address_data['balances'] table = PrettyTable(['Asset', 'Amount']) table.add_row(['BTC', bitcoin.get_btc_balance(address, normalize=True)]) # BTC for balance in balances: asset = balance['asset'] quantity = util.devise(db, balance['quantity'], balance['asset'], 'output') table.add_row([asset, quantity]) print('Balances') print(table.get_string())
def balances (address): if not bitcoin.base58_decode(address, config.ADDRESSVERSION): raise exceptions.AddressError('Not a valid Bitcoin address:', address) address_data = get_address(db, address=address) balances = address_data['balances'] table = PrettyTable(['Asset', 'Amount']) table.add_row(['BTC', bitcoin.get_btc_balance(address, normalize=True)]) # BTC for balance in balances: asset = balance['asset'] quantity = util.devise(db, balance['quantity'], balance['asset'], 'output') table.add_row([asset, quantity]) print('Balances') print(table.get_string())
def compose (db, source, give_asset, give_quantity, get_asset, get_quantity, expiration, fee_required): cursor = db.cursor() # Check balance. if give_asset == config.BTC: if bitcoin.get_btc_balance(source) * config.UNIT < give_quantity: logging.warning('WARNING: insufficient funds for {}pay.'.format(config.BTC)) else: balances = list(cursor.execute('''SELECT * FROM balances WHERE (address = ? AND asset = ?)''', (source, give_asset))) if (not balances or balances[0]['quantity'] < give_quantity): raise exceptions.ComposeError('insufficient funds') problems = validate(db, source, give_asset, give_quantity, get_asset, get_quantity, expiration, fee_required, util.last_block(db)['block_index']) if problems: raise exceptions.ComposeError(problems) give_id = util.get_asset_id(give_asset, util.last_block(db)['block_index']) get_id = util.get_asset_id(get_asset, util.last_block(db)['block_index']) data = struct.pack(config.TXTYPE_FORMAT, ID) data += struct.pack(FORMAT, give_id, give_quantity, get_id, get_quantity, expiration, fee_required) cursor.close() return (source, [], data)
def compose (db, source, give_asset, give_quantity, get_asset, get_quantity, expiration, fee_required): cursor = db.cursor() # Check balance. if give_asset == config.BTC: if bitcoin.get_btc_balance(source) * config.UNIT < give_quantity: logging.warning('WARNING: insufficient funds for {}pay.'.format(config.BTC)) else: balances = list(cursor.execute('''SELECT * FROM balances WHERE (address = ? AND asset = ?)''', (source, give_asset))) if (not balances or balances[0]['quantity'] < give_quantity): raise exceptions.ComposeError('insufficient funds') problems = validate(db, source, give_asset, give_quantity, get_asset, get_quantity, expiration, fee_required, util.last_block(db)['block_index']) if problems: raise exceptions.ComposeError(problems) give_id = util.get_asset_id(db, give_asset, util.last_block(db)['block_index']) get_id = util.get_asset_id(db, get_asset, util.last_block(db)['block_index']) data = struct.pack(config.TXTYPE_FORMAT, ID) data += struct.pack(FORMAT, give_id, give_quantity, get_id, get_quantity, expiration, fee_required) cursor.close() return (source, [], data)
elif args.action == 'market': market(args.give_asset, args.get_asset) # PARSING elif args.action == 'reparse': blocks.reparse(db) elif args.action == 'rollback': blocks.reparse(db, block_index=args.block_index) elif args.action == 'server': api_server = api.APIServer() api_server.daemon = True api_server.start() # Check that Insight works if enabled. if config.INSIGHT_ENABLE and not args.force: try: bitcoin.get_btc_balance(config.UNSPENDABLE, normalize=False) except requests.exceptions.ConnectionError: raise exceptions.InsightError('Could not connect to Insight server.') blocks.follow(db) else: parser.print_help() # vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4