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 address (address): address = util.get_address(db, address=address) # Balances. balances = address['balances'] table = PrettyTable(['Asset', 'Amount']) table.add_row(['BTC', '???']) # 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(str(table)) print('\n') # Burns. burns = address['burns'] table = PrettyTable(['Block Index', 'Burned', 'Earned', 'Tx Hash']) for burn in burns: burned = util.devise(db, burn['burned'], 'BTC', 'output') earned = util.devise(db, burn['earned'], 'BTC', 'output') table.add_row([burn['block_index'], burned + ' BTC', earned + ' XCP', util.short(burn['tx_hash'])]) print('Burns') print(str(table)) print('\n') # Sends. sends = address['sends'] table = PrettyTable(['Amount', 'Asset', 'Source', 'Destination', 'Tx Hash']) for send in sends: amount = util.devise(db, send['amount'], send['asset'], 'output') asset = send['asset'] table.add_row([amount, asset, send['source'], send['destination'], util.short(send['tx_hash'])]) print('Sends') print(str(table)) print('\n') """ # Orders. orders = address['orders'] json_print(orders) table = PrettyTable(['Amount', 'Asset', 'Source', 'Destination', 'Tx Hash']) for order in orders: amount = util.devise(db, order['amount'], order['asset'], 'output') asset = order['asset'] table.add_row([amount, asset, order['source'], order['destination'], util.short(order['tx_hash'])]) print('orders') print(str(table)) print('\n') """ """
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): def get_btc_balance(address): r = requests.get("https://blockchain.info/q/addressbalance/" + address) # ^any other services that provide this?? (blockexplorer.com doesn't...) try: assert r.status_code == 200 return int(r.text) / float(config.UNIT) except: return "???" address_data = util.get_address(db, address=address) # Balances. balances = address_data['balances'] table = PrettyTable(['Asset', 'Amount']) table.add_row(['BTC', 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): def get_btc_balance(address): r = requests.get("https://blockchain.info/q/addressbalance/" + address) # ^any other services that provide this?? (blockexplorer.com doesn't...) try: assert r.status_code == 200 return int(r.text) / float(config.UNIT) except: return "???" address_data = util.get_address(db, address=address) # Balances. balances = address_data['balances'] table = PrettyTable(['Asset', 'Amount']) table.add_row(['BTC', 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 wallet(): #total_table = PrettyTable(['Asset', 'Balance']) wallet = {'addresses': {}} totals = {} for group in bitcoin.rpc('listaddressgroupings', []): for bunch in group: address, btc_balance = bunch[:2] get_address = util.get_address(db, address=address) balances = get_address['balances'] #table = PrettyTable(['Asset', 'Balance']) assets = {} empty = True if btc_balance: #table.add_row(['BTC', btc_balance]) # BTC assets['BTC'] = btc_balance if 'BTC' in totals.keys(): totals['BTC'] += btc_balance else: totals['BTC'] = btc_balance empty = False for balance in balances: asset = balance['asset'] balance = D(util.devise(db, balance['amount'], balance['asset'], 'output')) if balance: if asset in totals.keys(): totals[asset] += balance else: totals[asset] = balance #table.add_row([asset, balance]) assets[asset] = balance empty = False if not empty: wallet['addresses'][address] = assets wallet['totals'] = totals #print(wallet) response.content_type = 'application/json' return json.dumps(wallet, cls=DecimalEncoder)
print('Asset Name:', args.asset) print('Asset ID:', util.get_asset_id(args.asset)) print('Total Issued:', total) print('Divisible:', divisible) print('Issuer:', issuer) elif args.action == 'wallet': total_table = PrettyTable(['Asset', 'Balance']) totals = {} print() for group in bitcoin.rpc('listaddressgroupings', []): for bunch in group: address, btc_balance = bunch[:2] get_address = util.get_address(db, address=address) balances = get_address['balances'] table = PrettyTable(['Asset', 'Balance']) empty = True if btc_balance: table.add_row(['BTC', btc_balance]) # BTC if 'BTC' in totals.keys(): totals['BTC'] += btc_balance else: totals['BTC'] = btc_balance empty = False for balance in balances: asset = balance['asset'] balance = D(util.devise(db, balance['amount'], balance['asset'], 'output')) if balance: if asset in totals.keys(): totals[asset] += balance else: totals[asset] = balance table.add_row([asset, balance])
def test_get_address(): get_address = util.get_address(db, source_default) for field in get_address: output_new['get_address_' + field] = get_address[field]
print('Total Issued:', total_issued) print('Issuer:', results['issuer']) print('Callable:', results['callable']) print('Call Date:', call_date) print('Call Price:', call_price) print('Description:', '‘' + results['description'] + '’') elif args.action == 'wallet': total_table = PrettyTable(['Asset', 'Balance']) totals = {} print() for group in bitcoin.rpc('listaddressgroupings', []): for bunch in group: address, btc_balance = bunch[:2] get_address = util.get_address(db, address=address) balances = get_address['balances'] table = PrettyTable(['Asset', 'Balance']) empty = True if btc_balance: table.add_row(['BTC', btc_balance]) # BTC if 'BTC' in totals.keys(): totals['BTC'] += btc_balance else: totals['BTC'] = btc_balance empty = False for balance in balances: asset = balance['asset'] balance = D( util.devise(db, balance['amount'], balance['asset'], 'output')) if balance: if asset in totals.keys(): totals[asset] += balance
def post(self): db_updated = yield tornado.gen.Task(is_db_updated) bitcoin_updated = yield tornado.gen.Task(is_bitcoin_updated) version_updated = yield tornado.gen.Task(is_version_updated) block_count_db, block_count_bitcoin = yield tornado.gen.Task(get_status) info = None error = None orders_sell = util.get_orders(db, validity='valid', show_empty=False, show_expired=False, filters=[{'field': 'give_asset', 'op': '==', 'value': 'CHA'},{'field': 'get_asset', 'op': '==', 'value': 'BTC'}]) orders_buy = util.get_orders(db, validity='valid', show_empty=False, show_expired=False, filters=[{'field': 'get_asset', 'op': '==', 'value': 'CHA'},{'field': 'give_asset', 'op': '==', 'value': 'BTC'}]) orders_sell = sorted(order_tuples(orders_sell), key=lambda tup: tup[1], reverse=True) orders_buy = sorted(order_tuples(orders_buy), key=lambda tup: tup[1], reverse=True) my_orders = None my_order_matches = None balance = None if self.get_argument("form")=="balance": address = self.get_argument("address") try: wallet = util.get_address(db, address = address) except: wallet = None balance = None if wallet != None: for balance in wallet['balances']: if balance['asset']=='CHA': balance = util.devise(db, balance['amount'], 'CHA', 'output') elif self.get_argument("form")=="my_orders": address = self.get_argument("address") try: my_orders = util.get_orders(db, validity='valid', show_empty=False, show_expired=False, source=address) my_orders = order_tuples(my_orders) my_order_matches = util.get_order_matches(db, validity='pending', is_mine=True, address=address) my_order_matches = order_match_tuples(my_order_matches) except: my_orders = None my_order_matches = None elif self.get_argument("form")=="btcpay": order_match_id = self.get_argument("order_match_id") try: tx_hex = btcpay.create(db, order_match_id, unsigned=False) bitcoin.transmit(tx_hex, ask=False) info = "BTC payment successful" except: error = sys.exc_info()[1] elif self.get_argument("form")=="cancel": tx_hash = self.get_argument("tx_hash") try: tx_hex = cancel.create(db, tx_hash, unsigned=False) bitcoin.transmit(tx_hex, ask=False) info = "Cancel successful" except: error = sys.exc_info()[1] elif self.get_argument("form")=="send": source = self.get_argument("source") destination = self.get_argument("destination") quantity = util.devise(db, self.get_argument("quantity"), 'CHA', 'input') try: tx_hex = send.create(db, source, destination, quantity, 'CHA', unsigned=False) bitcoin.transmit(tx_hex, ask=False) info = "Send successful" except: error = sys.exc_info()[1] elif self.get_argument("form")=="burn": source = self.get_argument("source") quantity = util.devise(db, self.get_argument("quantity"), 'CHA', 'input') try: tx_hex = burn.create(db, source, quantity, unsigned=False) bitcoin.transmit(tx_hex, ask=False) info = "Burn successful" except: error = sys.exc_info()[1] elif self.get_argument("form")=="buy": source = self.get_argument("source") quantity = util.devise(db, self.get_argument("quantity"), 'CHA', 'input') price = util.devise(db, self.get_argument("price"), 'value', 'input') pricetimesquantity = float(self.get_argument("quantity"))*float(self.get_argument("price")) pricetimesquantity = int(pricetimesquantity*config.UNIT) expiration = 6 * 24 #24 hour order try: tx_hex = order.create(db, source, 'BTC', pricetimesquantity, 'CHA', quantity, expiration, 0, config.MIN_FEE, unsigned=False) bitcoin.transmit(tx_hex, ask=False) info = "Buy order successful" except: error = sys.exc_info()[1] elif self.get_argument("form")=="sell": source = self.get_argument("source") quantity = util.devise(db, self.get_argument("quantity"), 'CHA', 'input') price = util.devise(db, self.get_argument("price"), 'value', 'input') pricetimesquantity = float(self.get_argument("quantity"))*float(self.get_argument("price")) pricetimesquantity = int(pricetimesquantity*config.UNIT) expiration = 6 * 24 #24 hour order try: tx_hex = order.create(db, source, 'CHA', quantity, 'BTC', pricetimesquantity, expiration, 0, config.MIN_FEE, unsigned=False) bitcoin.transmit(tx_hex, ask=False) info = "Sell order successful" except: error = sys.exc_info()[1] self.render("wallet.html", db_updated = db_updated, bitcoin_updated = bitcoin_updated, version_updated = version_updated, orders_buy = orders_buy, orders_sell = orders_sell, info = info, error = error, block_count_db = block_count_db, block_count_bitcoin = block_count_bitcoin, balance = balance, my_orders = my_orders, my_order_matches = my_order_matches)
def post(self): db_updated = yield tornado.gen.Task(is_db_updated) bitcoin_updated = yield tornado.gen.Task(is_bitcoin_updated) version_updated = yield tornado.gen.Task(is_version_updated) block_count_db, block_count_bitcoin = yield tornado.gen.Task( get_status) info = None error = None orders_sell = util.get_orders(db, validity='valid', show_empty=False, show_expired=False, filters=[{ 'field': 'give_asset', 'op': '==', 'value': 'CHA' }, { 'field': 'get_asset', 'op': '==', 'value': 'BTC' }]) orders_buy = util.get_orders(db, validity='valid', show_empty=False, show_expired=False, filters=[{ 'field': 'get_asset', 'op': '==', 'value': 'CHA' }, { 'field': 'give_asset', 'op': '==', 'value': 'BTC' }]) orders_sell = sorted(order_tuples(orders_sell), key=lambda tup: tup[1], reverse=True) orders_buy = sorted(order_tuples(orders_buy), key=lambda tup: tup[1], reverse=True) my_orders = None my_order_matches = None balance = None if self.get_argument("form") == "balance": address = self.get_argument("address") try: wallet = util.get_address(db, address=address) except: wallet = None balance = None if wallet != None: for balance in wallet['balances']: if balance['asset'] == 'CHA': balance = util.devise(db, balance['amount'], 'CHA', 'output') elif self.get_argument("form") == "my_orders": address = self.get_argument("address") try: my_orders = util.get_orders(db, validity='valid', show_empty=False, show_expired=False, source=address) my_orders = order_tuples(my_orders) my_order_matches = util.get_order_matches(db, validity='pending', is_mine=True, address=address) my_order_matches = order_match_tuples(my_order_matches) except: my_orders = None my_order_matches = None elif self.get_argument("form") == "btcpay": order_match_id = self.get_argument("order_match_id") try: tx_hex = btcpay.create(db, order_match_id, unsigned=False) bitcoin.transmit(tx_hex, ask=False) info = "BTC payment successful" except: error = sys.exc_info()[1] elif self.get_argument("form") == "cancel": tx_hash = self.get_argument("tx_hash") try: tx_hex = cancel.create(db, tx_hash, unsigned=False) bitcoin.transmit(tx_hex, ask=False) info = "Cancel successful" except: error = sys.exc_info()[1] elif self.get_argument("form") == "send": source = self.get_argument("source") destination = self.get_argument("destination") quantity = util.devise(db, self.get_argument("quantity"), 'CHA', 'input') try: tx_hex = send.create(db, source, destination, quantity, 'CHA', unsigned=False) bitcoin.transmit(tx_hex, ask=False) info = "Send successful" except: error = sys.exc_info()[1] elif self.get_argument("form") == "burn": source = self.get_argument("source") quantity = util.devise(db, self.get_argument("quantity"), 'CHA', 'input') try: tx_hex = burn.create(db, source, quantity, unsigned=False) bitcoin.transmit(tx_hex, ask=False) info = "Burn successful" except: error = sys.exc_info()[1] elif self.get_argument("form") == "buy": source = self.get_argument("source") quantity = util.devise(db, self.get_argument("quantity"), 'CHA', 'input') price = util.devise(db, self.get_argument("price"), 'value', 'input') pricetimesquantity = float(self.get_argument("quantity")) * float( self.get_argument("price")) pricetimesquantity = int(pricetimesquantity * config.UNIT) expiration = 6 * 24 #24 hour order try: tx_hex = order.create(db, source, 'BTC', pricetimesquantity, 'CHA', quantity, expiration, 0, config.MIN_FEE, unsigned=False) bitcoin.transmit(tx_hex, ask=False) info = "Buy order successful" except: error = sys.exc_info()[1] elif self.get_argument("form") == "sell": source = self.get_argument("source") quantity = util.devise(db, self.get_argument("quantity"), 'CHA', 'input') price = util.devise(db, self.get_argument("price"), 'value', 'input') pricetimesquantity = float(self.get_argument("quantity")) * float( self.get_argument("price")) pricetimesquantity = int(pricetimesquantity * config.UNIT) expiration = 6 * 24 #24 hour order try: tx_hex = order.create(db, source, 'CHA', quantity, 'BTC', pricetimesquantity, expiration, 0, config.MIN_FEE, unsigned=False) bitcoin.transmit(tx_hex, ask=False) info = "Sell order successful" except: error = sys.exc_info()[1] self.render("wallet.html", db_updated=db_updated, bitcoin_updated=bitcoin_updated, version_updated=version_updated, orders_buy=orders_buy, orders_sell=orders_sell, info=info, error=error, block_count_db=block_count_db, block_count_bitcoin=block_count_bitcoin, balance=balance, my_orders=my_orders, my_order_matches=my_order_matches)