What are bitcoin miners really solving?

As with mining, what are the bitcoin miners really solving? I read they are solving hashes, but what does that really mean. Can we see what they are solving? Can someone give an example of what a bitcoin mining machine sees to solve?

Get transaction that spent a transaction id

The blockchain.info API allows for querying information about a particular Transaction by its ID. But if you want to follow the coins to the next transaction, I’m not seeing what the next query should be.

Each “out” of the transaction has an address associated with it, and you can query for details about a address’ recent transactions. But if you’re exploring deep in the past, the most recent 50 transactions for a given address won’t have the spend for that particular “out”.

So is there another API out there that allows you to query Transaction details based on “has transaction N as an ‘in'”? Or do I need to go through the blockchain and make my own cache?

Edit: Blockchain.info clearly has the link to the transaction that spends a given output in their database, since the HTML view of a transaction now has “spent” tags after outputs that have been spent, which are links to the next transaction. However, that particular bit of data is not in the API view of the same transaction.

What are tainted coins exactly?

I’ve come across the term of a tainted coin several times now.
I understand that coins, or better, the origin of a coin can be traced throughout the blockchain.

I’ve read that bitcoins can be disassociated from an address, by sending it to a sufficiently large enough wallet which handles many transactions, thus making a transactions origin “untraceable”.

This collides with my understanding of the blockchain, where each transaction can be tracked back to its origin.

What does the concept of a tainted coin mean in this context and how can a coins taint be measured?

Can I use Ripple to keep track of loans to friends?

Say I already lent EUR 100.00 to a friend, in cash, quite informally. Can I use Ripple to keep track of it? If so, how?

I guess I need to get him sign up at ripple.com (or get another Ripple client).

Then I grant him > EUR 100.00 trust.

Then he can just “send me” EUR 100.00.

Is that all? Or is there anything more to it? Does my friend need trust from anybody else in Ripple in order to be able to do that?

Dumpprivkey or dumpwallet won’t show my private key for the address in my wallet

Haven’t opened my wallet in a while so it’s not in sync with the network. 5400 blocks remaining as I write. The wallet is not encrypted.

Received some bitcoins to my address in this wallet. Now I want to get the private key of the address and import it to my wallet on blockchain.info

The output of pywallet’s dumpwallet command shows a lot of address/private key pairs but none of them are the address I see on my address book which I received the bitcoins to.

Launched BitcoinQT’s debug window, tried the dumpprivkey command. Result: Private key for address is not known (code -4)

Thank you.

How can I limit bandwidth usage in Bitcoin-qt client?

I’ve just finished the intial blockchain download/verify in my BitcoinQt client (17 hours..) and I now see that BitcoinQt is happily eating all of my upstream bandwidth. (About 110kByte/sec on my ADSL line.)

I’m going to be applying bandwidth limits to the app using Waterroof, which should probably work —

But shouldn’t there be a built-in method for BitcoinQt to be more polite about its bandwidth consumption?

What happens if your bitcoin client generates an address identical to another person’s?

Here’s a what-if scenario:

Person A has a Bitcoin address with 25BTC.
Person B opens up their Bitcoin client:

  • which may or may not have the complete blockchain (the latter would
    mean no copies of Person A’s transactions)

Person B presses “New Address”, and Person A’s address happens to somehow be generated. Now, the blockchain finishes synchronizing.

What happens? Is this a possibilty, sans the astonishing improbability? After all, random number generation can be influenced.

Test Network Genesis Block

I am using BitcoinJ for my java application which fetches the test network’s genesis block. I referred to the basics mentioned at JavaWorld and BitcoinJ’s Google Code wiki.

I am able to get it running but there seems to be an error while waiting for the node.

I receive the following output :

[main] INFO com.google.bitcoin.core.BlockChain - chain head is at height 0:
v1 block: 
   previous block: 0000000000000000000000000000000000000000000000000000000000000000
   merkle root: 4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b
   time: [1296688602] Thu Feb 03 04:46:42 IST 2011
   difficulty target (nBits): 487063544
   nonce: 384568319

[New I/O boss #9] INFO com.google.bitcoin.core.Peer - com.google.bitcoin.core.Peer$PeerHandler@fe64b9 - Connection refused: no further information

Note: I am working from a NAT network, can this be a point of connection failure?