Bitcoin Forum
June 16, 2024, 11:08:45 PM *
News: Voting for pizza day contest
 
   Home   Help Search Login Register More  
Pages: « 1 [2] 3 4 »  All
  Print  
Author Topic: Someone please tell me this isn't how transactions always work....  (Read 4619 times)
Razick
Legendary
*
Offline Offline

Activity: 1330
Merit: 1003


View Profile
August 27, 2014, 10:36:01 PM
 #21

Some wallets allows change to be spent, which IMHO is the ONLY reasonable way for a wallet to work. Blockchain allows it, and I think Bitcoin Wallet for Android does as well,  but I'm not certain.

ACCOUNT RECOVERED 4/27/2020. Account was previously hacked sometime in 2017. Posts between 12/31/2016 and 4/27/2020 are NOT LEGITIMATE.
Razick
Legendary
*
Offline Offline

Activity: 1330
Merit: 1003


View Profile
August 27, 2014, 10:38:16 PM
 #22

Isn't there an option to allow unconfirmed transactions to be sent?
Not as an input to another transaction.  I'm pretty sure even qt nodes would reject such transactions.

Or you could make those two payments in one transaction and problem solved...
This works if you can pay them all at the same time.  But there are certainly instances where you might need to make multiple payments in quick succession without combining them.  Paying a bar tab and then a taxi is a good example.  Or even visiting a bunch of vendors at a street fair and buying things from each.

They won't confirm until the original transaction does but in my experience nodes will not reject them. I spent unconfirmed change from blockchain.info in order to get a free transaction confirmed more quickly using child-pays-for-parent.

ACCOUNT RECOVERED 4/27/2020. Account was previously hacked sometime in 2017. Posts between 12/31/2016 and 4/27/2020 are NOT LEGITIMATE.
DannyHamilton
Legendary
*
Offline Offline

Activity: 3430
Merit: 4660



View Profile
August 27, 2014, 10:45:29 PM
 #23

If the malleability issue was resolved, would spending unconfirmed outputs be then realistic or still too risky.

It will be very difficult to eliminate all possibilities of malleability 100%.  However, if it could be eliminated, it would make spending unconfirmed outputs significantly safer, and acceptable in many cases.

Surely spending unconfirmed transaction breaks the whole purpose of Bitcoin, to remove trust by replacing it with absolute certain confirmation of the transaction.

The unconfirmed transaction would need to be confirmed eventually to have certainty and remove necessary trust, but there are many circumstances (such as tipping) where spending unconfirmed transactions could be acceptable if malleability weren't a problem.

DooMAD
Legendary
*
Offline Offline

Activity: 3808
Merit: 3160


Leave no FUD unchallenged


View Profile
August 27, 2014, 11:11:54 PM
 #24

If more clients supported multiple wallets, rather than just multiple addresses, perhaps this wouldn't be as much of an issue.  If you have three wallets with some BTC in each, then you can make three payments in quick succession.  Obviously it's not an ideal solution to the issue, but I don't get why only some clients support this feature.
wasserman99
Sr. Member
****
Offline Offline

Activity: 476
Merit: 250



View Profile
August 27, 2014, 11:14:46 PM
 #25

Isn't there an option to allow unconfirmed transactions to be sent?
Not as an input to another transaction.  I'm pretty sure even qt nodes would reject such transactions.
There are many wallet services that will allow unconfirmed transactions to be sent. There are many transactions that have an unconfirmed input that are accepted by the network. How do you think shared send words on blockchain.info? It works exactly this way.
Or you could make those two payments in one transaction and problem solved...
In the OP's case it would solve his problem.

SgtSpike
Legendary
*
Offline Offline

Activity: 1400
Merit: 1005



View Profile
August 27, 2014, 11:17:52 PM
 #26

Thanks for the explanation DannyHamilton!
DiamondCardz
Legendary
*
Offline Offline

Activity: 1134
Merit: 1112



View Profile WWW
August 27, 2014, 11:18:09 PM
 #27

Or have a wallet which takes inputs over a threshold amount, say $20, and creates a transaction which breaks it up into smaller inputs by sending it as outputs to various addresses inside of the person's wallet?

>> EDIT: DannyHamilton already said this pretty much, I skipped over that bit.

BA Computer Science, University of Oxford
Dissertation was about threat modelling on distributed ledgers.
Omikifuse
Legendary
*
Offline Offline

Activity: 1792
Merit: 1009



View Profile
August 27, 2014, 11:35:15 PM
 #28

As people already shown, the fault is more how the apps are designed than in the bitcoin protocol.

Nothing that can't be solved with some work.
jasemoney
Legendary
*
Offline Offline

Activity: 1610
Merit: 1008


Forget-about-it


View Profile
August 27, 2014, 11:48:29 PM
 #29

this was because the whole balance was consumed in the payment and change address.  why couldnt Hive just implement some form of denomination so that a reserve of size (x) was always spent last and available for something else.  or make sure there are multiple inputs for a given wallet. so when spent it doesnt use the whole balance at once.
-just rambling (i dont use hive so unclear if possible)

Edit* looks like diamondcardz thought of this first, silly me for skipping ahead!

$MAID & $BTC other than that some short hodls and some long held garbage.
minimalB
Donator
Hero Member
*
Offline Offline

Activity: 674
Merit: 522


View Profile
August 28, 2014, 08:21:46 AM
 #30

Problems like this will be worked out over time, I'm sure.

In the meantime, make sure you have more than one wallet installed on your mobile in case situation like that happens. There should be a backup plan to impress your friends : )

Also, if you use blockchain.info wallet or similar wallet with central server behind... the hardware on their side may be down, so it's cool to have another standalone wallet that connects directly to bitcoin network - just in case.

Remember: it's still early. As much as I'd like bitcoin to go mainstream, i personally think it's not ready yet.
C. Bergmann
Hero Member
*****
Offline Offline

Activity: 803
Merit: 500



View Profile
August 28, 2014, 08:29:20 AM
 #31

use two wallets.



▄▄████▄▄
▄████████████▄
▄▄█████▀▀    ▀▀█████▄▄
▄█████▀▀            ▀▀█████▄
▄███▀       ▄████▄       ▀███▄
███      ▄██████████▄      ███
███    ▄██████████████▄    ███
███    ████████████████    ███
███    ████████████████    ███
███    ████████████████    ███
███    ▀██████████████▀    ███
███      ▀██████████▀      ███
▀███▄       ▀████▀       ▄███▀
▀█████▄▄            ▄▄█████▀
▀▀█████▄▄    ▄▄█████▀▀
▀████████████▀
▀▀████▀▀
Gabro███
███
███
███
███
███
███
███
███
███
███
███
███
███
███
███
███
███
███
███
███
███
███
███
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
WHITEPAPER
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
TOKEN SALES
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Aswan
Legendary
*
Offline Offline

Activity: 1734
Merit: 1015



View Profile
August 28, 2014, 08:43:25 AM
 #32


Alright, if my recent experience at a bar paying with bitcoin is any indication of how bitcoin transactions work, then mass adoption is very unlikely. Someone please tell me if this is how transactions must work, or it's just a Hive wallet issue.

I was at a bar that accepts bitcoin and wanted to pay my bill with btc. My Hive wallet had about $60 USD worth of coin in it. My bill was $22. The bar has a receiving address for the bill and a separate address for tipping the bartenders. I sent my $22 worth of coin to the first address. Then I went to send a $6 tip to the bartender address and my wallet said that 'Some funds are unavailable. To send this transaction you'll need to wait for your pending transactions to be confirmed'. So I waited. And waited. It took 10 minutes of sitting there (with my friend wondering why in the hell I think paying with bitcoin is so great) before I could tip the bartender and leave.

I contacted Hive and they said it depends on unspent transaction outputs. So if I had an unspent output of $58, it used that to pay the bill and was waiting for the change to come back so there wasn't another available unspent output to pay a $6 tip.

If this is how bitcoin transactions have to work, then I completely overestimated the usability of bitcoin for everyday spending. If I can't pay a bill, then immediately pay a tip, then walk outside and pay a taxi driver because I'm not aware of the unspent output amounts in my wallet then I'll just go back to cash or card.

Someone tell me this isn't how it has to work.




It is indeed a Hive Wallet issue. The bitcoin network handles transactions with uncomfirmed outputs as inputs just as fine as it handle all the other Txs. Maybe you should switch to a wallet that does not limit you in your transactions and instead offers the featured the bitcoin network offers.

That said, you could have left and sent the tip later. It's not like you have to be right there in order to send BTC to their address.
KawalGrover
Newbie
*
Offline Offline

Activity: 38
Merit: 0


View Profile
August 28, 2014, 03:05:04 PM
 #33


[/quote]
To be fair, I think he was talking about multisend.  Unfortunately, I haven't yet seen a mobile wallet that has multisend capabilities.  It seems to be often overlooked.
[/quote]

Saw this, just this morning on reddit:

https://www.youtube.com/watch?v=T-CX-S8fq5A

From the video, it seems it has multisend capabilities.

Joe_Bauers
Hero Member
*****
Offline Offline

Activity: 802
Merit: 1003


GCVMMWH


View Profile
August 28, 2014, 05:59:14 PM
 #34

If you already paid for the meal, why did you have to wait around for the tip to process?
farlack
Legendary
*
Offline Offline

Activity: 1311
Merit: 1000



View Profile
August 28, 2014, 06:35:02 PM
 #35

Can someone please explain to me what is happening here? He had $60, sent $22, why could he not send the $6?
dserrano5
Legendary
*
Offline Offline

Activity: 1974
Merit: 1029



View Profile
August 28, 2014, 06:40:24 PM
 #36

Can someone please explain to me what is happening here? He had $60, sent $22, why could he not send the $6?

He may have sent not $22 but $60, with $22 to the merchant and the rest as change back to himself. But that means there was no confirmed balance left to make another payment.
weilu
Newbie
*
Offline Offline

Activity: 12
Merit: 0


View Profile
August 29, 2014, 02:25:42 AM
 #37

It seems to me that 3 solutions are proposed so far: 1. instead of a single output, break up the change output into multiple outputs of small amounts 2. allow user to specify multiple destination addresses in a single transaction 3. allow using unconfirmed outputs

3. is unsafe, as discussed above

1. only solves the problem partially -- it is still a problem when one spends the first funding transaction followed by creating another transaction immediately. In addition, setting the small amount threshold is a guessing work -- if the threshold is too big as relative to what the user normally keeps & spends, the same problem still exists. If it is too small user will end up paying additional fees because of the transaction size. I thought of this solution before, but in the end I thought to myself this would be the classic case of "software trying to be smart but ends up screwing with you and makes you hate technology"

Solution 2. seems like the only sensible solution to me, but it sure has UX implications for Hive (advanced send?). It does address OP's particular use case if he knows in advance that he wants to send x amount to addr1 and y amount to addr2, and decides to do it in a single transaction. Also it doesn't really address the "send one transaction followed by another" problem.

Keep the ideas coming. If we end up coming up with a good solution, I'm happy to implement it Smiley
TheFootMan
Hero Member
*****
Offline Offline

Activity: 490
Merit: 500


View Profile
August 29, 2014, 06:02:33 AM
 #38

It seems to me that 3 solutions are proposed so far: 1. instead of a single output, break up the change output into multiple outputs of small amounts 2. allow user to specify multiple destination addresses in a single transaction 3. allow using unconfirmed outputs

3. is unsafe, as discussed above

1. only solves the problem partially -- it is still a problem when one spends the first funding transaction followed by creating another transaction immediately. In addition, setting the small amount threshold is a guessing work -- if the threshold is too big as relative to what the user normally keeps & spends, the same problem still exists. If it is too small user will end up paying additional fees because of the transaction size. I thought of this solution before, but in the end I thought to myself this would be the classic case of "software trying to be smart but ends up screwing with you and makes you hate technology"

Solution 2. seems like the only sensible solution to me, but it sure has UX implications for Hive (advanced send?). It does address OP's particular use case if he knows in advance that he wants to send x amount to addr1 and y amount to addr2, and decides to do it in a single transaction. Also it doesn't really address the "send one transaction followed by another" problem.

Keep the ideas coming. If we end up coming up with a good solution, I'm happy to implement it Smiley

Good post, and also an interesting problem. I've talked about earlier a method where you give away the private key, then receive the change to your wallet. For instance, let's say you have a wallet with 1 BTC, then you break it up in 5 adresses, containing 0.2 each, which would already make the solution much similar to  suggestion 1. above. However, if there's a QR-code generated for one of those adresses, the waiter could scan it immediately on his phone, and then send you the change, so let's say you wanted to tip him 10 dollars (0.02 BTC), you just show him the QR-code, and he scans it, then scan a QR-code of a receiving address of yours and immediately sends back the change to you. That would be a little bit like having big bills, paying with one, and getting the change back.

Of course there would always be the risk of a double spend, but I do think that risk is negligible in most cases, you could also have some low value addresses for exactly this purpose. The biggest advantage of this would be that the receiver could be pretty sure he'd actually receive the funds, as he could immediately send it to another address of his, all of which could be automated in the software.

So if implemented in wallet software, the wallet could have some methods for splitting up inputs. These could be changed in a settings menu, and there could be some default parameters where the wallet was split up in 25% amounts, which would allow for at least 4 quick consequtive purchases. In the event someone usually needs to do more quick consequtive purchases, it could be altered in the settings menu. Of course, it would take a while for the changes to come into effect, because the transactions need to get enough confirmations. But if the hive wallet implemented something like this, then it should be possible to pay for a meal, give a tip and then proceed to take a taxi without problems.

The give a private key, and then get the change I think would work great for medium value stuff like purchasing a laptop at a physical store for instance.

An advanced wallet could implement several methods of payment as well, and as long as they also made the POS sw or coordinated with somebody that did, it should all be rather smooth for the parties involved.
Buffer Overflow
Legendary
*
Offline Offline

Activity: 1652
Merit: 1015



View Profile
August 29, 2014, 06:47:28 AM
 #39

There is also another issue here not been discussed yet. As we all know, keeping private keys on an online device is just not safe. I can't see that changing anytime soon.

Mobile device connected to internet with private keys? Just asking for trouble. Encrypting keys only has limited protection, as they need to be decrypted into memory before signing the transaction.

Sorry if I'm derailing thread a bit.

Nagle
Legendary
*
Offline Offline

Activity: 1204
Merit: 1000


View Profile WWW
August 29, 2014, 07:29:40 AM
 #40

It is possible to use an output from an unconfirmed transaction as an input into another transaction.

However, it is a dangerous thing to do due to transaction malleability.
Right. Since the transaction malleability attack, It's no longer safe to spend unconfirmed change. So a spend locks up some unspent funds until confirmation. A better fix for transaction malleability may remove this limitation.

Quote
In my opinion, it seems it would be better for the wallet to break up larger outputs into multiple smaller outputs so that less total value is locked up in an unconfirmed transaction.
The stock wallet already tries to put together spends efficiently, given the items you already have in your wallet. Sending the contents of your wallet to yourself to break up big items is possible, but probably shouldn't be automatic.
Pages: « 1 [2] 3 4 »  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!