示例#1
0
 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)
示例#2
0
文件: views.py 项目: c4road/pegaso
    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
示例#3
0
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)
示例#4
0
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'])
示例#6
0
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(