How do I spend my Bitcoins without waiting for Bitcoin-Qt to sync?

I purchased $50 from ExpressCoins and now it’s transferred to the address, but I hadn’t realized that to use your program, I have to download 20 gigs of information. Is there a way to access my coins without doing that and transfer them to the market in order to spend them? I can’t use the address at another wallet that doesn’t do that?

A clear step-by-step would be a godsend at this point, and looking for threads and faqs to read has just confused me with more vague answers and piling on new programs and terms.

Monitor non-wallet bitcoin addresses for new transactions

This is usual checkout functionality. Show address to the user and needs to monitor it for new transaction during n minutes. Addresses are not unique for each payment.

Optional:it would be good to have listener for transaction with certain incoming amount, but this is optional.

blockchain.info have something similar, but I want to it using local bitcoin-qt from .Net application.

*Update: this should be done for non-wallet addresses/transactions.

What exactly are the rev00000.dat files?

I’ve been looking at the on disk structured generated by the standard bitcoin-qt client. It looks to me that the rev?????.dat files are reverse application for blocks? So I imagine every single spent output is added to the reverse dat, so that they can be applied directly to the unspent pool during a rewind?

What exactly is stored, and what is the format?

using coinbase with uc_bitcoin drupal module

I need a simple hack to change the Drupal uc_bitcoin modules code so it gets the exchange rate from Coinbase, it is designed to use MtGox. I want to avoid using the entire coinbase API because I just want the exchange rate, not the kitchen sink. There is a lot of documentation there.

I have found the code in the uc_bitcoin drupal module which gets the information from MtGox. It needs some simple changes so it gets this data from Coinbase. Since both are so different, and I’m not fluent with PHP I thought someone might be able to help me with this.

Here is the code which gets the exchange rate from MtGox:

function uc_bitcoin_exchange_rate($order) {

  static $rate;

  if(isset($rate)) {
    return $rate;
  }

  if ($order->currency == 'BTC') {
    // BTC 1:1
    return 1;
  }

  // Supported MtGox currencies, Dec 15 2012
  $mtGox_currencies = array(
    'USD',
    'EUR',
    'JPY',
    'CAD',
    'GBP',
    'CHF',
    'RUB',
    'AUD',
    'SEK',
    'DKK',
    'HKD',
    'PLN',
    'CNY',
    'SGD',
    'THB',
    'NZD',
    'NOK'
  );

  // @todo add cache
  if (in_array($order->currency, $mtGox_currencies)) {
    if ($response = drupal_http_request('https://data.mtgox.com/api/1/BTC' . $order->currency . '/ticker')) { 
      if ($response->code == 200) {
        $data = json_decode($response->data);
        if(!empty($data->return->avg->value)) {
          $rate = $data->return->avg->value;
        }
      }
    }
  }

// @todo add cache
  if (in_array($order->currency, $mtGox_currencies)) {
    if ($response = drupal_http_request('https://data.mtgox.com/api/1/BTC' . $order->currency . '/ticker')) { 
      if ($response->code == 200) {
        $data = json_decode($response->data);
        if(!empty($data->return->avg->value)) {
          $rate = $data->return->avg->value;
        }
      }
    }
  }

  if (!$rate || !is_numeric($rate)) {
    watchdog('uc_bitcoin', 'MtGox lookup - Unable to get current exchange rate', WATCHDOG_ERROR);
    $rate = FALSE; // just to be super sure.
  }

  return $rate;
}

How to recover from a double spending attack?

I found myself incapable of answering what would happen in this case, so here it is:

  • A hacker (Mr Hacker) spends UTXO_1 and UTXO_2 in TX_1, depositing the monetary value of all TX_1‘s outputs into a Service (eg a payment processor).

  • A legitimate user (Mr Legit) spends UTXO_3 in TX_2. Again, TX_2‘s outputs targets the same Service

  • Both TX_1 and TX_2 make it into the same block and get one confirmation by the network.

  • The Service immediately spends UTXO_1 and UTXO_3 in TX_3 to pay Mr Legit and UTXO_2 in TX_4 to pay Mr Smith.

  • Mr Hacker then decides to double-spend TX_1 and for that reason he creates TX_5 which “redirects” all outputs to himself. Mr Hacker is a miner so he is able to perform all the hashing work to make the double-spend successful. He is also lucky and the double-spend succeeds.

So the question is:

  1. Have all TXs before TX_5 (TXs: 1,2,3,4) been invalidated or just TX_1, TX_3and TX_4 (TX_3 and TX_4 spent an output previous controlled by TX_1 which was double-spent)?

  2. Mr Legit could see 1 confirmation for TX_2 before the double-spending. What does he see now? What does Mr Smith see in his wallet, before and after the double-spending?

  3. The Service realizes that a double-spending took place and needs to recover from that broken state. What does it have to do to get back to normal operation? Does it have to re-send all the TXs? Does it still have in place the deposits made by TX_2 after the double-spending or does it have to do something to re-claim these outputs?

  4. How can the Service prevent Mr Hacker, who also has plenty of money to spend, from repeating the same process forever just to ruin the Service‘s smooth operation, rather than (the Service) waiting for more confirmations before sending out the payments?

ECDSA x,y coordinate validity verification doesn’t seem to work

The ECDSA algorithm, secp256k1 for Bitcoin allegedly uses the equation

y ^ 2 = x ^ 3 + 7 mod P

to determine the validity of an alleged point upon the elliptical curve. Utilizing
http://web2.0calc.com/

When verifying public key 1 which has the following qualities:

x = 55066263022277343669578718895168534326250603453777594175500187360389116729240

y = 32670510020758816978083085130507043184471273380659243275938904335757337482424

I applied x ^ 3, then added 7, then mod P on that webpage. Then I square rooted it and got

180964706334543048141953325634608696715.426683454595872

Which is not y. How am I doing this wrong? My results suggests that this point is not a valid point on the curve, but everyone knows it is. Obviously I’m the one who’s wrong.

EDIT: I’d like to further clarify the question. My question is, how does one actually determine (as an example) the Y value while only having the X value. Bitcoin does it, the “Bitcoin Address Utility” also does it. When someone has a compressed key (which only contains the x coordinate) they are able to get the y coordinate as well. Utilizing the aforementioned webpage calculator does not work and others are saying its “modular root”. Anyone have Python 2.7.7 code which would do this or have a relatively simple way of explaining how to accomplish this whole thing? Thanks.

Negative Dogecoin Balances?

Through dogecoin-cli, I sent half the dogecoins I own to an external address. Now, when I call the listaccounts function, I get this:

[root@web ~]# ./dogecoin-cli listaccounts
{
    "" : -25001.00000000,
    "doge" : 48136.85072100
}

Notice how the “” has -25001.00000000. I am using a query from php to get the balance of “doge” and display it to users. That returns 48136.85072100, which is a problem, because I only have 23135.85072100 doge. How can I fix this problem? Thanks!

Do Miners get a reward for re-confirming blocks?

As far as I know, to ensure double-spending didn’t happened and also for other security reasons, there is minimum number of confirmations that a transaction should have to be accepted. That value is around 4-6 blocks I think, but merchants can put their own threshold.

My question is if with the sub-sequent confirmations after the first one, the miners get the mining reward, or a share of it.

Or maybe a transaction is included in different blocks per each confirmation? But how the mining fees are paid then?

If there is no reward for re-confirmations, I’m wondering what would happen after the Bitcoin limit is reached and the only reward for the miners will be the transaction fees. Will transaction get more than 1 confirmation then?

What is a thin client?

I’ve heard that if you don’t want do download gigabytes of data just to use bitcoin you gotta use a thin client. But what is a thin client?
What are the main advantages of a thin bitcoin client and what defines it as such?