Pages:
Author

Topic: Spending Unconfirmed Transactions?! (Read 1682 times)

member
Activity: 70
Merit: 10
Deceased
May 27, 2014, 06:47:49 AM
#29
Yeah, but I know not everyone can find it anyway so it's better than leaving them exposed.

Id do it differently, but I understand. Thats why I decided to keep them out. In case you are wondering, they never hit the server, I edited localy before the first post.

And no I'm not thinking about tx2, you get some base amount in first then send countless tx2s with 0 fees and 1 satoshi amount.

IIRC 1 satoshi is not enough for some reason, must be at least 452 satoshi or something like that. Not sure about the number. But the problem is the same ofc. If I get 500 inputs with 500 satoshi each that are not confirmed, its a lot of spam on my client. I read somewhere that very small transactions are used as advertising, as you can add "buy at XY" on blockchain.info for the output address.
I guess (not sure If I miss something) it would be possible to spam someone with very small transactions. Its spamming with money, but a truckload of penny's at your door is still annoying.
hmmm... should test that on the testnet Smiley

Well, thank you so much for the clarification and your thorough replies, I'm gonna lock the thread now since I've already got my answer from you. Thanks again!
copper member
Activity: 1498
Merit: 1528
No I dont escrow anymore.
May 27, 2014, 06:36:26 AM
#28
Yeah, but I know not everyone can find it anyway so it's better than leaving them exposed.

Id do it differently, but I understand. Thats why I decided to keep them out. In case you are wondering, they never hit the server, I edited localy before the first post.

And no I'm not thinking about tx2, you get some base amount in first then send countless tx2s with 0 fees and 1 satoshi amount.

IIRC 1 satoshi is not enough for some reason, must be at least 452 satoshi or something like that. Not sure about the number. But the problem is the same ofc. If I get 500 inputs with 500 satoshi each that are not confirmed, its a lot of spam on my client. I read somewhere that very small transactions are used as advertising, as you can add "buy at XY" on blockchain.info for the output address.
I guess (not sure If I miss something) it would be possible to spam someone with very small transactions. Its spamming with money, but a truckload of penny's at your door is still annoying.
hmmm... should test that on the testnet Smiley
member
Activity: 70
Merit: 10
Deceased
May 27, 2014, 06:20:24 AM
#27
Yeah, but I know not everyone can find it anyway so it's better than leaving them exposed. And no I'm not thinking about tx2, you get some base amount in first then send countless tx2s with 0 fees and 1 satoshi amount.
copper member
Activity: 1498
Merit: 1528
No I dont escrow anymore.
May 27, 2014, 06:11:00 AM
#26
I just happened today again I made two screenshots which you can see below, one from Multibit 0.5.18 and from from Blockchain.info:




I can't normally do that, it gives an error saying Not Enough Balance until my funds get at least 1 confirmation.

This is really confusing because everything is just grey blocks. Sad

Well... can be found anyway

TX1 is this: 8043-snip-
TX2 is this: f350-snip-

If those are not yours, we can just use them anyway since they are similar enough.


Disclaimer:
I decided not to post these as you did not do so yourself. I understand that you want to remain as anonymous as possible, but sometimes -esp. if you need help- you need to reveal some information. I personally dont see a problem with reveiling 2 addresses and some tx-ids. I however do not know you or your bussiness, so I can't be the judge of that.

Lets get to the point Smiley


According to https://en.bitcoin.it/wiki/Protocol_rules#.22tx.22_messages we have a set of rules that make a TX valid or invalid.

Rule 10 says:
-snip-
No, it's confusing the users. How can you tell what's legit and what's not if you suddenly receive hundreds of random income from random wallet addresses?

That might be the case indeed. You are thinking about tx2 in the above example without tx1, correct?
If a node gets tx2 before tx1 it should just not save it and not broadcast it further because without knowledge of tx1 the transaction tx2 is not valid. So unless you will finally receive the coins this should not show up in your client.
member
Activity: 70
Merit: 10
Deceased
May 27, 2014, 03:17:21 AM
#25
I just happened today again I made two screenshots which you can see below, one from Multibit 0.5.18 and from from Blockchain.info:




I can't normally do that, it gives an error saying Not Enough Balance until my funds get at least 1 confirmation.

But its not "confusing" the nodes as they can check whether a transaction is valid or not.

No, it's confusing the users. How can you tell what's legit and what's not if you suddenly receive hundreds of random income from random wallet addresses?
copper member
Activity: 1498
Merit: 1528
No I dont escrow anymore.
May 27, 2014, 03:07:57 AM
#24
-snip-
B sends the unconfirmed 1 btc from A to C, both are unconfirmed now.
-snip-

That is not possible. B can only send what has been send to B. B can not spend someone elses coins (e.g. A's). If that would be possible I could just spend your coins. But you probably want to say that B spend the coins that did not belong to B at that point. Which makes an invalid transaction. They will be "dropped" / "thrown away". See below...

-snip-
Please define "thrown away", will it stay unconfirmed on the blockchain forever or will it just be deleted from there (is it even possible considering the protocol?!)?
-snip-

An unconfimred transaction is not on the blockchain yet. It is just in the collective memory of all (or some) nodes. Only if it is valid it has a chance to be stored in a block and be part of the blockchain. This can only happen if all inputs are valid. This is checked by the miners. If a miner would include a fake (as in invalid) transaction in a new block, this block would not be accepted by the other miners. The block would be "orphaned".

 
Why doesn't it happen a lot? Because it would do no good. Even casinos that allow instant deposits won't let you withdraw until the deposits have been confirmed.

What if someone (with a large botnet) starts sending thousands of fake broadcasts to legit addresses each minute as long as he can with intend to confuse and overload (not literally) the system? If someone sends you dozens of fake 1 btc income that will stay unconfirmed forever, wouldn't that confuse you? What if you change your address, send your bitcoins there and he still tracks you and keep doing the same? What if you were to receive dozens of random fake btc each minute, can you really operate with that happening? It's really easy to broadcast a >1KB transaction to the nodes. If that happens, how will you know what's legit and what's not?

I am not sure how the network would react to an attack like this. But its not "confusing" the nodes as they can check whether a transaction is valid or not.
member
Activity: 70
Merit: 10
Deceased
May 27, 2014, 01:21:43 AM
#23
Why doesn't it happen a lot? Because it would do no good. Even casinos that allow instant deposits won't let you withdraw until the deposits have been confirmed.

What if someone (with a large botnet) starts sending thousands of fake broadcasts to legit addresses each minute as long as he can with intend to confuse and overload (not literally) the system? If someone sends you dozens of fake 1 btc income that will stay unconfirmed forever, wouldn't that confuse you? What if you change your address, send your bitcoins there and he still tracks you and keep doing the same? What if you were to receive dozens of random fake btc each minute, can you really operate with that happening? It's really easy to broadcast a >1KB transaction to the nodes. If that happens, how will you know what's legit and what's not?
legendary
Activity: 1988
Merit: 1007
May 27, 2014, 01:16:41 AM
#22
You can tell that transactions can keep being broadcast, though, because sometimes you'll see double-spend attempts (two transactions will be pending, first one to make it into a block gets accepted and the other is thrown away).

Please define "thrown away", will it stay unconfirmed on the blockchain forever or will it just be deleted from there (is it even possible considering the protocol?!)?

The real question is, what if someone keeps broadcasting fake transactions from modified custom clients and everyone else accepts those and does the same? This way people could just generate fake unconfirmed coins out of thin air and send them around. But that's clearly not happening, so why is it not happening? And why won't it happen in the future?

I think the secondary transactions remain unconfirmed. You can read more here: https://en.bitcoin.it/wiki/Double-spending

Why doesn't it happen a lot? Because it would do no good. Even casinos that allow instant deposits won't let you withdraw until the deposits have been confirmed.
member
Activity: 70
Merit: 10
Deceased
May 27, 2014, 01:13:58 AM
#21
You can tell that transactions can keep being broadcast, though, because sometimes you'll see double-spend attempts (two transactions will be pending, first one to make it into a block gets accepted and the other is thrown away).

Please define "thrown away", will it stay unconfirmed on the blockchain forever or will it just be deleted from there (is it even possible considering the protocol?!)?

The real question is, what if someone keeps broadcasting fake transactions from modified custom clients and everyone else accepts those and does the same? This way people could just generate fake unconfirmed coins out of thin air and send them around. But that's clearly not happening, so why is it not happening? And why won't it happen in the future?

If you can't delete entries from blockchain or client, imagine what would happen if someone (botnet?) sent a lot of unconfirmed fake transactions all around to confuse users. Many people could end up with dozens of fake unconfirmed transactions coming each minute to their random addresses. What if I start broadcasting thousands of 1 btc transactions to every address I could find here hundreds of times?

POST IS EDITED
legendary
Activity: 1988
Merit: 1007
May 27, 2014, 01:10:40 AM
#20
Does that mean I can somehow broadcast that I've sent 25 billion BTC to someone? Will it still show up in their client and remain unconfirmed forever? If I can broadcast unconfirmed transactions, then he can broadcast that unconfirmed 25 billion btc too. This way everyone can make fake unconfirmed transactions out of thin air and just spend all they want. The only downside it that they will never exist and will never get confirmed but if everyone can send unconfirmed transaction, that wouldn't be a problem.

I know what I said above is wrong (because it's not happening), what I don't understand is how or why.

Why? That's a good question. Maybe someone else can chime in more on that (there may be specifics before the nodes broadcast to the clients themselves).

You can tell that transactions can keep being broadcast, though, because sometimes you'll see double-spend attempts (two transactions will be pending, first one to make it into a block gets accepted and the other is thrown away).
member
Activity: 70
Merit: 10
Deceased
May 27, 2014, 01:03:12 AM
#19
A, B, C refer to public addresses (that allow receiving) and to the coresponding private key (that allows spending)
A holds 1 BTC from 1 input, B holds 0
send A to B (TX1)
before TX1 gets any confirmation send 1 BTC from B to C (TX2)

TX2 should not be possible, because the client has to check whether B has the right to spend 1 BTC. As long as TX1 is not confirmed (single confirmation is enough) B has no right to spend any BTC. It might be that your client allows you to broadcast (!) the transaction anyways, but this makes TX2 invald and it can not confirm until TX1 is confirmed.

In essence, yes that's what happened:

A has 1 btc from many transactions before, all are confirmed.
A sends 1 btc to B, it's unconfirmed.
B sends the unconfirmed 1 btc from A to C, both are unconfirmed now.
C has an unconfirmed 1 btc

Unconfirmed transactions aren't sent yet, though. You could make the system think you sent someone 25 billion BTC; it'd just remain unconfirmed. You can push anything you want to the blockchain nodes but it won't be added until it meets all of the requirements.

Does that mean I can somehow broadcast that I've sent 25 billion BTC to someone? Will it still show up in their client and remain unconfirmed forever? If I can broadcast unconfirmed transactions, then he can broadcast that unconfirmed 25 billion btc too. This way everyone can make fake unconfirmed transactions out of thin air and just spend all they want. The only downside it that they will never exist and will never get confirmed but if everyone can send unconfirmed transaction, that wouldn't be a problem.

I know what I said above is wrong (because it's not happening), what I don't understand is how or why.
legendary
Activity: 1988
Merit: 1007
May 27, 2014, 12:57:41 AM
#18
You can't actually send the coins until they're confirmed. It will pend the payment until the confirmations are completed. It will SEND it to the network as a request, but won't officially go through yet.

I sent from Multbit on my PC, totally unrelated to blockchain but both the transactions showed up on blockchain.info and both were unconfirmed. Basically it was a new address with two total transactions, one income and one output and both of them were unconfirmed.

Unconfirmed transactions aren't sent yet, though. You could make the system think you sent someone 25 billion BTC; it'd just remain unconfirmed. You can push anything you want to the blockchain nodes but it won't be added until it meets all of the requirements.
copper member
Activity: 1498
Merit: 1528
No I dont escrow anymore.
May 27, 2014, 12:56:42 AM
#17
-snip-
Yes, both of the transactions was from my own wallets to my own wallets but how can a client detect that? Maybe my wallet was on my android device and completely unlinked with PC (it wasn't in this case), how would the client know it's mine if that happens? In Multbit they were in different wallets, I mean all of those private keys weren't in a single wallet. Each wallet only has a single address (key). I sent from one wallet (with single address) to another wallet (with single address). idk if I'm making sense or not. To put it simple, it wasn't what you're describing, what I did was technically different. It was from my wallet to my other wallet NOT my address to other address.

If anyone can spend unconfirmed transactions then what's the point of getting confirmations? Why do people insist on it? They could just take unconfirmed coins and send them while they're still unconfirmed and they still get there.

Technically speaking there are no wallets, just keys. What you describe is a way the programm you use shows you things, not how they actually are. Did you do this? (or did this happen):

A, B, C refer to public addresses (that allow receiving) and to the coresponding private key (that allows spending)
A holds 1 BTC from 1 input, B holds 0
send A to B (TX1)
before TX1 gets any confirmation send 1 BTC from B to C (TX2)

TX2 should not be possible, because the client has to check whether B has the right to spend 1 BTC. As long as TX1 is not confirmed (single confirmation is enough) B has no right to spend any BTC. It might be that your client allows you to broadcast (!) the transaction anyways, but this makes TX2 invald and it can not confirm until TX1 is confirmed.

-snip-
I sent from Multbit on my PC, totally unrelated to blockchain but both the transactions showed up on blockchain.info and both were unconfirmed. Basically it was a new address with two total transactions, one income and one output and both of them were unconfirmed.

Every transaction has to be included in the blockchain. No transaction can be unrelated to the blockchain. The blockchain is where every transaction is storred, it is where it is written that you actually can spend to coins you want to spend.
member
Activity: 70
Merit: 10
Deceased
May 27, 2014, 12:47:29 AM
#16
You can't actually send the coins until they're confirmed. It will pend the payment until the confirmations are completed. It will SEND it to the network as a request, but won't officially go through yet.

I sent from Multbit on my PC, totally unrelated to blockchain but both the transactions showed up on blockchain.info and both were unconfirmed. Basically it was a new address with two total transactions, one income and one output and both of them were unconfirmed.
legendary
Activity: 1988
Merit: 1007
May 27, 2014, 12:42:24 AM
#15
Maybe. I'm almost positive there used to be two numbers at the top (I'm using 0.5.17 now as well btw), one for confirmed and one (smaller) for unconfirmed. Now I don't see that.

I could be wrong though.

I'm using 0.5.18 now and it stills shows two numbers. I can only spend the confirmed transactions, if I try to spend coins that aren't confirmed yet it says that my balance isn't enough then Help button points me to an article that says I can only spend confirmed transactions.

I know its possible to spend unconfirmed change.* Maybe thats what you did? Was it your own transaction?

-snip-
Just the standard 0.0001 (~4 cents) for both the transactions.

sounds like you issued both transactions. In that case it would make sense and almost all clients still allow it, even though it can be a problem.


* You have 1 BTC and send 0.8 to X, you get 0.2 as change to an other address and even though this is a new input and needs confirmation you can make a new transaction 0.2 to Y anyway. The main reason this is possible IIRC is that this is how people imagine a wallet works and having to wait for "ma own moneyz" is counter intuitive

Yes, both of the transactions was from my own wallets to my own wallets but how can a client detect that? Maybe my wallet was on my android device and completely unlinked with PC (it wasn't in this case), how would the client know it's mine if that happens? In Multbit they were in different wallets, I mean all of those private keys weren't in a single wallet. Each wallet only has a single address (key). I sent from one wallet (with single address) to another wallet (with single address). idk if I'm making sense or not. To put it simple, it wasn't what you're describing, what I did was technically different. It was from my wallet to my other wallet NOT my address to other address.

If anyone can spend unconfirmed transactions then what's the point of getting confirmations? Why do people insist on it? They could just take unconfirmed coins and send them while they're still unconfirmed and they still get there.

You can't actually send the coins until they're confirmed. It will pend the payment until the confirmations are completed. It will SEND it to the network as a request, but won't officially go through yet.
member
Activity: 70
Merit: 10
Deceased
May 27, 2014, 12:38:38 AM
#14
Maybe. I'm almost positive there used to be two numbers at the top (I'm using 0.5.17 now as well btw), one for confirmed and one (smaller) for unconfirmed. Now I don't see that.

I could be wrong though.

I'm using 0.5.18 now and it stills shows two numbers. I can only spend the confirmed transactions, if I try to spend coins that aren't confirmed yet it says that my balance isn't enough then Help button points me to an article that says I can only spend confirmed transactions.

I know its possible to spend unconfirmed change.* Maybe thats what you did? Was it your own transaction?

-snip-
Just the standard 0.0001 (~4 cents) for both the transactions.

sounds like you issued both transactions. In that case it would make sense and almost all clients still allow it, even though it can be a problem.


* You have 1 BTC and send 0.8 to X, you get 0.2 as change to an other address and even though this is a new input and needs confirmation you can make a new transaction 0.2 to Y anyway. The main reason this is possible IIRC is that this is how people imagine a wallet works and having to wait for "ma own moneyz" is counter intuitive

Yes, both of the transactions was from my own wallets to my own wallets but how can a client detect that? Maybe my wallet was on my android device and completely unlinked with PC (it wasn't in this case), how would the client know it's mine if that happens? In Multbit they were in different wallets, I mean all of those private keys weren't in a single wallet. Each wallet only has a single address (key). I sent from one wallet (with single address) to another wallet (with single address). idk if I'm making sense or not. To put it simple, it wasn't what you're describing, what I did was technically different. It was from my wallet to my other wallet NOT my address to other address.

If anyone can spend unconfirmed transactions then what's the point of getting confirmations? Why do people insist on it? They could just take unconfirmed coins and send them while they're still unconfirmed and they still get there.
copper member
Activity: 1498
Merit: 1528
No I dont escrow anymore.
May 27, 2014, 12:33:45 AM
#13
I know its possible to spend unconfirmed change.* Maybe thats what you did? Was it your own transaction?

-snip-
Just the standard 0.0001 (~4 cents) for both the transactions.

sounds like you issued both transactions. In that case it would make sense and almost all clients still allow it, even though it can be a problem.


* You have 1 BTC and send 0.8 to X, you get 0.2 as change to an other address and even though this is a new input and needs confirmation you can make a new transaction 0.2 to Y anyway. The main reason this is possible IIRC is that this is how people imagine a wallet works and having to wait for "ma own moneyz" is counter intuitive
legendary
Activity: 1988
Merit: 1007
May 26, 2014, 11:32:56 PM
#12
I'm really not sure. My Multibit, as far as I am aware, has no issues with spending transactions that aren't confirmed yet. I don't even see two separate numbers anymore (I did prior to the last update) to separate unconfirmed from confirmed at the top.

Could that be because I used 0.5.17 at the time this happened?

Maybe. I'm almost positive there used to be two numbers at the top (I'm using 0.5.17 now as well btw), one for confirmed and one (smaller) for unconfirmed. Now I don't see that.

I could be wrong though.
member
Activity: 70
Merit: 10
Deceased
May 26, 2014, 11:23:00 PM
#11
I'm really not sure. My Multibit, as far as I am aware, has no issues with spending transactions that aren't confirmed yet. I don't even see two separate numbers anymore (I did prior to the last update) to separate unconfirmed from confirmed at the top.

Could that be because I used 0.5.17 at the time this happened?
legendary
Activity: 1988
Merit: 1007
May 26, 2014, 11:07:02 PM
#10
He didn't "spend" them, he just broadcast the transaction. A few of you seem to be misreading this. You can broadcast anything you want; it just won't confirm until it is actually able to be sent. In this case, the transaction was broadcast before he was able to actually send it. As soon as all the inputs were confirmed, the transaction became legal and passed through the network.

But how can I do it again? Multbit won't normally allow me to broadcast those transactions, it just simply says Not Enough Balance.

May be you put a large enough fee on the child transaction to make miners want to confirm both parent and child transactions in the same block. How much fee did you pay?

Just the standard 0.0001 (~4 cents) for both the transactions.

I'm really not sure. My Multibit, as far as I am aware, has no issues with spending transactions that aren't confirmed yet. I don't even see two separate numbers anymore (I did prior to the last update) to separate unconfirmed from confirmed at the top.
Pages:
Jump to: