def run(self): if self.request_type == 'balance': self.response=get_address_overview(self.address, coin_symbol=self.ticker) elif self.request_type == 'endpoint': self.response = get_address_details(self.address, coin_symbol=self.ticker) elif self.request_type == 'full_endpoint': self.response = get_address_full(self.address, coin_symbol=self.ticker)
def get_context_data(self, *args, **kwargs): context = super(TransactionsListView, self).get_context_data(*args, **kwargs) context['wallet'] = Wallet.objects.get( profile=self.request.user.profile) wallet = context['wallet'] address_full = get_address_full(address=wallet.receiving_address, txn_limit=50, coin_symbol=settings.COIN) transactions = address_full['txs'] context['transactions'] = get_full_transactions( transactions, addrs=wallet.receiving_address) context['unconfirmed'] = get_bitcoins( address_full['unconfirmed_balance']) context['final_n_tx'] = address_full['final_n_tx'] context['unconfirmed_n'] = address_full['unconfirmed_n_tx'] paginator = Paginator(context['transactions'], 10) page = self.request.GET.get('page') context['transactions'] = paginator.get_page(page) return context
def View_Address(request, addr): """View responsável por mostrar detalhes de um endereço addr = endereço da blockchain """ template_name = 'btc_address_detail.html' try: address_detail = blockcypher.get_address_full(addr, coin_symbol='btc-testnet') except: raise Http404('Endereço não encontrado') context_data = { 'addr_detail': address_detail, } print len(address_detail['txs']) address_detail['txs'] = address_detail['txs'][:10] return render(request, template_name, context_data)
def scan_addresses(addresslist, conn, maxrequests=10, delay=0): print('Sleep {} second(s) between requests'.format(delay)) count = 0 skip_count = 0 for row in addresslist: account = row[0] addr = row[1] if db_check_address(conn, addr) == 1: skip_count = skip_count + 1 print('{0}\tAddress already in database, skipping request ({1}) ...'.format(skip_count, addr)) continue # Prevent exceeding rate limit while testing if count >= maxrequests: print('Reached max request limit ({}). Stopping requests ...'.format(maxrequests)) print('{} addresses skipped'.format(skip_count)) return time.sleep(delay) addr_detail = get_address_full(addr) txcount = addr_detail['final_n_tx'] balance = addr_detail['balance'] dbdata = [account, addr, '1', txcount, balance] db_update_address(conn, dbdata) txs = addr_detail['txs'] tx_addr = [] for tx in txs: txid = tx['hash'] height = tx['block_height'] for a in tx['addresses']: tx_addr.append(a) if a not in addresses: dbdata = [None, a, '0', None, None] #print('Address not mine: {}'.format(a)) db_update_address(conn, dbdata) # Add input addresses / TXID to DB for txin in tx['inputs']: for a in txin['addresses']: dbdata = [addr, a, txid, height] db_update_txin_address(conn, dbdata) # Add output addresses / TXID to DB for txout in tx['outputs']: for a in txout['addresses']: dbdata = [addr, a, txid, height] db_update_txout_address(conn, dbdata) print('Address: {0}\tAccount: {1}'.format(addr, account)) print('Balance: {}'.format(balance)) pprint('Associated Addresses: {}'.format(tx_addr)) count = count + 1
elif choice == 3: result = get_block_overview(block_height, txn_limit=1, txn_offset=1) print("Number of Transactions: ", len(result['txids'])) elif choice == 4: result = get_address_overview(address) print("Received: ", result['total_received'], " sat") print("Sent: ", result['total_sent'], " sat") print("Balance: ", result['balance'], " sat") elif choice == 5: result = get_address_details(address) print("Received: ", result['total_received'], " sat") print("Sent: ", result['total_sent'], " sat") print("Balance: ", result['balance'], " sat") print("Number of Transactions: ", result['n_tx']) elif choice == 6: result = get_address_full(address=address) print("Received: ", result['total_received'], " sat") print("Sent: ", result['total_sent'], " sat") print("Balance: ", result['balance'], " sat") print("Number of Transactions: ", result['n_tx']) elif choice == 7: result = get_wallet_addresses(wallet_name=wallet_Name, api_key=apikey) print("Number of addresses associated: ", len(result['addresses'])) elif choice == 8: result = get_wallet_addresses(wallet_name=wallet_Name, api_key=apikey, is_hd_wallet=True) print("Number of addresses associated: ", len(result['addresses'])) elif choice == 9: result = get_transaction_details(haash) print("Block Height: ", result['block_height'])
cursor = conn.cursor() cursor.execute( "SELECT name, json_metadata FROM accounts WHERE CHARINDEX('ico_address', json_metadata) > 0;" ) row = cursor.fetchone() try: print("[-] Started accounts investments processing") while row: account = row[0] account_address = json.loads(json.loads(row[1]))["ico_address"] account_amount = 0.0 account_normalized_amount = 0.0 account_total_transactions = 0 txs = [] address_details = get_address_full(address=account_address, api_key=api_key) if len(address_details['txs']) == 0: row = cursor.fetchone() total_accounts += 1 if total_accounts % 100 == 0: print("[*] Running {0}, processed {1} accounts".format( datetime.datetime.now() - startTime, total_accounts)) time.sleep(0.4) continue for tx in address_details['txs']: if tx['outputs'][0]['addresses'][ 0] == '3CWicRKHQqcj1N6fT1pC9J3hUzHw1KyPv3': amount = round( float(from_satoshis(tx['inputs'][0]['output_value'], 'btc')), 8) normalized_amount = round(