I have a wallet that pays lots of small amounts in the range of 0.x to 5 BTC. I filled the wallet with one transaction of 50 BTC, so there is only one large input contained. Now when i transfer 0.5 BTC anywhere, the transaction has two outputs - 0.5 for the receiver and 49.5 change. Problem is that as long as this transaction is not confirmed the wallet is more or less blocked, as it only contains 49.5 unconfirmed balance.

So basically I end up with one transaction per block, as i need to wait for the change to be confirmed until i can create the next tx.

Edit: Note that I am using the rawtransactions API and when constructing a transaction i only want to use confirmed outputs (from "listunspent" command) as inputs for the new tx.

What is the best way to split the big output in the wallet into something like e.g. 10*5.0 BTC?

  • I thought the Bitcoin-Qt client will let you spend your own change even if it has no confirmations. Are you sure that you can't create another spend transaction? Dec 19 '12 at 9:00
  • Sorry, I was not fully clear with my question. I am using the rawtransactins API and when selecting outpoints for a transaction (from the "listunspent" command) I explicitly search for outpoints with >= 1 confirmation. But even if the original client will allow to spend unconfirmed change - Would it not take much longer to get confirmed? Dec 19 '12 at 9:10
  • @TripleSpeeder: Why would it take longer to confirm? In most cases, the transactions will be confirmed as soon as a block is found. Dec 19 '12 at 9:49
  • @TripleSpeeder: The standard term is "outputs". Dec 19 '12 at 9:50
  • @Meni: I always had the impression that using chains of unconfirmed transactions is quite risky. So if the first transaction does never get a confirmation for any reason, all transactions using the first transaction's change as input will also never confirm. So probably it will not take longer to get confirmed, but there is a higher risk involved. If this is the case I am surprised the original client allows that? Dec 19 '12 at 10:03

The protocol and the standard client allow you to spend your own unconfirmed change. Multibit didn't allow this, but I believe it's a recently/soon added feature.

When constructing your transaction manually there is little advantage to choosing confirmed outputs.

If you do want to split your outputs, you can do it with a sendmany transaction. The Bitcoin-qt GUI allows you to do this ("Add Recipient"), which can scale to several outputs. For a larger number of outputs you can generate the command programmatically and issue it with the command line.

Bitcoin-qt does not allow you to pay an address multiple times in the same transaction. There seems to be little justification for that, and it may be possible with the raw transaction API. Alternatively, you can generate several addresses and split the amount between them.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.