That is not correct. Bitcoin doesn't send "from addresses". It spends unspent outputs. A single address can receive multiple outputs. If you spend an output in a transaction, then the change from that transaction shouldn't be spent until that transaction is confirmed. (It can be spent, but it is a risky thing to do since someone else can change your original transaction in a way that makes subsequent transactions invalid). Meanwhile all the other unspent outputs that were received at the same address can still be spend without waiting for any more confirmations.
As an example:
Assume you have address 1myaddress...
You receive 4 transactions at 1myaddress...
- The first transaction is 1 BTC
- The second transaction is 0.5 BTC
- The third transaction is 3 BTC
- The fourth transaction is 1.5 BTC
You now have received a total of 6 BTC at 1myaddress... You have 4 separate unspent outputs.
Now, lets say you want to send 3.25 BTC from your wallet. Your wallet might choose to spend the outputs that were received in the second and third transaction, supplying a total of 3 + 0.5 = 3.5 BTC of value to the transaction. This transaction then sends 3.25 of that value in a new output to the recipient. There is 0.25 BTC of value remaining unaccounted for in the transaction. If you don't do anything with this value, then it becomes a transaction fee for the miners. Instead, you create a second output in the same transaction which sends 0.2499 BTC to an address you control. It might be 1myaddress... or it might be some other address, it doesn't really matter. Now the transaction has 2 outputs, one for 3.25 BTC to your recipient, and one for 0.2499 BTC back to you. The remaining 0.0001 BTC of value that is unaccounted for becomes a transaction fee for the miner.
Meanwhile, your wallet still has the first and fourth transactions that have been untouched. This means that you have 0.2499 BTC in your wallet that is still waiting to be confirmed before it can be used in a new transaction, and 1 + 1.5 = 2.5 BTC in your wallet that can still be sent immediately.
Nope. An unspent output is an unspent output. Bitcoin doesn't care what address it was received at.
Addresses are not used as intputs to transactions. Unspent outputs are. I assume that for some reason you want all the previously unspent outputs that a single transaction spends to have been received at the same address as each other (if there are more than one in the transaction).
I'm not certain that I am properly understanding what you are saying here.
I think you are saying that if an address (X) receives 10 separate outputs that have all been confirmed, then each of those outputs can be used once and then they should be confirmed before you try to use them again? If that is what you are saying, then you are correct.
and they shouldn't be all included in the next block but as much as possible.
I'm surprised that it isn't sufficient for a lot of separate outputs. There aren't very many situations where separate transactions are necessary. It certainly would be cheaper to send all the separate outputs in a single transaction. If you really want separate transactions, then you have 2 choices:
Either create a transaction that breaks up your balance into enough separate outputs so that each transaction has one output that it can spend.
Or create a chain of unconfirmed transactions and hope that nobody modifies any of them in a way that will change their transactionID.