Bitcoin Forum

Bitcoin => Development & Technical Discussion => Topic started by: adrian33 on July 27, 2011, 06:40:20 PM



Title: Transaction not showing in client.. can I send on a zero balance?
Post by: adrian33 on July 27, 2011, 06:40:20 PM
Hi there,

I recently made a transaction from Mt Gox to my local client a number of hours ago that has a zero balance, but the transaction is not appearing at all (and the balance is still zero):

http://blockexplorer.com/address/1EcgdoC5xo4iRrmp5veeWJ9KajMzTMYMKo

What has been happening in the client is that the blockchain has been increasing all the confirmations rapidly for the preexisting transactions because I haven't opened the client for weeks.

Is it possible to make another transaction even though the client balance is 0 as the wallet.dat should have the private key to access the above bitcoins?

Thus, another transaction for the above address would look something like:

http://blockexplorer.com/address/1N6iZJzVeDVAkMPnjFwcicZi9RvDDgFfYq

Anyone know why isn't the client showing the transaction after a few hours already? How long could it take? Does it have something to do with not opening the client for a few weeks?


Title: Re: Transaction not showing in client.. can I send on a zero balance?
Post by: adrian33 on July 27, 2011, 06:56:23 PM
.... it just popped though with 25 confirmations.. great.

However, this is definitely a usability issue. What happens when lots of transactions are sitting in a client that hasn't been opened for a few weeks and a person then wants to quickly receive and send? Perhaps there could be a pause button on certain addresses or is that technically infeasible?


Title: Re: Transaction not showing in client.. can I send on a zero balance?
Post by: rikur on July 27, 2011, 07:02:44 PM
Block downloading can be really slow. At least on my OSX with FileVault on.

If I knew any C, I'd like to fix this myself.. Now the best I can do is to pledge 2 BTC for someone like JoelKatz to do it. Anyone else?
/me looks for the bounty thread


Title: Re: Transaction not showing in client.. can I send on a zero balance?
Post by: adrian33 on July 27, 2011, 07:18:46 PM
If there was a way of inserting an transaction into the blockchain with one's private key and avoiding having to download it, that would be awesome. (putting an additional row in the first link above so it looks like the second link) .. sort of like editing a file on github with its online editor.


Title: Re: Transaction not showing in client.. can I send on a zero balance?
Post by: theymos on July 27, 2011, 07:33:53 PM
You can't send bitcoins without having detailed info about the transactions that sent them to you. The network works with transactions, not address balances. When you move BTC, you don't say, "I have access to this account, so check my balance and let me send the appropriate amount of BTC." You say, "I can prove that I received this transaction. I will redeem the BTC in it and disperse it in this way."

The intermediate solution is to download only headers for blocks that you know have no transactions to you. It should take only a few minutes for Bitcoin to get set up on its first run after this change. But you still need to download all of the future full blocks or you will miss transactions to yourself.

The long-term solution is to create some out-of-band way of discovering transactions to yourself. This could take the form of:
- An additional P2P overlay network that allows anyone to search for transactions to certain addresses and retrieve them with high reliability.
- Data sent directly from the sender to the recipient over the network or with a file. Additional extensions for retrieving Merkle branches would be necessary if both sender and recipient don't download full blocks.
- Centralized services like my http://blockexplorer.com/q/mytransactions page can be used to get all of the required data without downloading any blocks.

I find the sender-to-recipient method to be especially elegant. It makes intuitive sense that the sender of a transaction needs to give data to the recipient; some people are surprised that the current network doesn't require this. Merkle branches are only a few extra kB of data on top of the block headers, and they can be safely provided by centralized sources because they can't be falsified.