Author

Topic: Resubmitting transactions with higher fees (Read 4097 times)

donator
Activity: 826
Merit: 1060
February 17, 2011, 04:32:50 PM
#19
I don't gain anything, but I still lose my dollar?
No, if your transaction doesn't make it into the block chain, then that dollar is still yours to spend.
legendary
Activity: 1106
Merit: 1004
February 17, 2011, 03:47:54 PM
#18
If block-space becomes so scarce that miners start rejecting paying-transactions like in your example, I bet people will quickly re-enable this resending feature.
Currently, there's enough space on blocks for all transactions to be free.
pla
member
Activity: 65
Merit: 10
February 17, 2011, 03:32:43 PM
#17
Been covered exhaustively in these forums; search around for hoarding and lost-coin subjects.

I see that the forums have covered the lost coin issue in general - Basically, it doesn't matter how many outright abandoned bitcoins we have - But the specific post to which I responded brings up an entirely different problem.

Consider a real-world analogy... I buy a newspaper for one dollar; To accomplish this, I tip the paperboy a nickel (a 5% "transaction fee") for the service.

He, however, wants a 10% tip, and rejects the transaction.

In the real world, the transaction doesn't happen and I still have my $1.05.  If I understand correctly, in the BTC world, the publisher doesn't gain anything, the paperboy doesn't gain anything, I don't gain anything, but I still lose my dollar?

I don't think we can just hand-wave that away as "not a problem" by talking about backups.
administrator
Activity: 5222
Merit: 13032
February 17, 2011, 02:39:19 PM
#16
And if you don't have a backup (or only one over 100PKs ago, so you would lose other coins as a result)?

You'd have to remove the transaction from wallet.dat somehow. If you know the wallet format in detail, you could remove it with a hex editor. Otherwise, it's probably not too difficult to modify Bitcoin to do it.
legendary
Activity: 1596
Merit: 1100
February 17, 2011, 02:20:15 PM
#15
Call me crazy, but does anyone else see it as a problem that the BTC economy can and will "lose" coins over time?

Been covered exhaustively in these forums; search around for hoarding and lost-coin subjects.

pla
member
Activity: 65
Merit: 10
February 17, 2011, 02:17:36 PM
#14
theymos : The network forgets about transactions if they haven't made it into a block within a few days. You could resubmit it then.  Bitcoin doesn't currently allow you to "unsend" a transaction, though, so you'd have to restore from a wallet backup to get the "stuck" coins back.

And if you don't have a backup (or only one over 100PKs ago, so you would lose other coins as a result)?

Call me crazy, but does anyone else see it as a problem that the BTC economy can and will "lose" coins over time?  From casual experimenters getting bored and abandoning their wallets, to exhausting the PKs in your wallet and then restoring from a backup, to this point you just brought up.

I don't have a problem with a fundamentally deflationary currency, but it seems like we should address this sooner rather than later - Something like revocation lists for "sufficiently idle" coins (which, as a bonus side-effect, would discourage hoarders - If you don't use it within say a decade, you lose it).

Consider, for example, the current influx of Slashdotters to the community (of which I count as one - Hey, gotta learn about everything from somewhere  Wink ).  By all accounts, we've basically doubled the generating capacity of the network in the past week; Of the new users who have received coins (even if just from the "spigot"), how many will get bored within a year, effectively removing their assets from the economy forever?
administrator
Activity: 5222
Merit: 13032
February 15, 2011, 05:18:11 PM
#13
I think that could be fixed by only allowing replacing a transaction with one where inputs and outputs are a strict superset of the original.
So you could replace [some set of inputs] -> 80 to A, 20 to B with [some set of inputs + some more inputs] -> 80 to A, 20 to B, 9 to X, 1 fee.
Unless I'm missing something, that shouldn't make trusting 0-unconf transactions any more risky than it currently is.

The new outputs might trigger a "dust spam" fee or otherwise make the transaction unacceptable for most miners. Right now the client can detect all of these cases, but in the future it might not know all the various miner rules.

It also reduces the functionality of replacement. Transaction locking still couldn't be used for escrow, for example.
legendary
Activity: 1526
Merit: 1134
February 15, 2011, 07:23:29 AM
#12
Sounds reasonable although would that defeat the point of having the feature at all?

I think the nLockTime feature was built on the assumption that you don't trust 0 confirmation transactions at all.
sr. member
Activity: 406
Merit: 257
February 15, 2011, 05:53:01 AM
#11
I'm guessing it's disabled because it would make accepting 0-confirmation transactions much less safe than it is now. If there was some flag that allowed replacement (maybe nLockTime>0), merchants could ignore such totally unsafe transactions until they get in a block.
I think that could be fixed by only allowing replacing a transaction with one where inputs and outputs are a strict superset of the original.
So you could replace [some set of inputs] -> 80 to A, 20 to B with [some set of inputs + some more inputs] -> 80 to A, 20 to B, 9 to X, 1 fee.
Unless I'm missing something, that shouldn't make trusting 0-unconf transactions any more risky than it currently is.
administrator
Activity: 5222
Merit: 13032
February 14, 2011, 05:16:13 PM
#10
Yes, the code that allows for transaction replacement is disabled. Unfortunately the comment there just notes that it's disabled "for now", not why it was disabled in the first place.

I'm guessing it's disabled because it would make accepting 0-confirmation transactions much less safe than it is now. If there was some flag that allowed replacement (maybe nLockTime>0), merchants could ignore such totally unsafe transactions until they get in a block.
legendary
Activity: 1526
Merit: 1134
February 14, 2011, 07:52:41 AM
#9
Yes, the code that allows for transaction replacement is disabled. Unfortunately the comment there just notes that it's disabled "for now", not why it was disabled in the first place.
administrator
Activity: 5222
Merit: 13032
February 12, 2011, 08:10:49 PM
#8
Yes, this is feasible. Alice's client could let her send the same coins again with a higher fee. One of the two transactions will make it into a block and the other one will be ignored as a double spend.

Exactly right. If the two transactions share any inputs, then they will conflict, and both can't exist in the block chain.

Each transaction input has a sequence number associated with it. This is intended for replacement situations like this; a lower sequence number indicates that this transaction should take precedence over other transactions with a higher sequence number. However, miners currently don't respect sequence numbers, so you must rely on the network's forgetfulness.
jib
member
Activity: 92
Merit: 10
February 12, 2011, 08:07:47 PM
#7
Do you mean send the same amount from the same address in her wallet?

Not just the same amount. I mean sending a transaction with some of the same inputs, such that the two transactions conflict with each other and only one could be included in the block chain.

This would require the feature to be added to Alice's client, but I don't think it would require changes to the rest of the system. It's already possible to see whether two transactions are using the same coins. No new mechanism or unique identifier is required.
newbie
Activity: 6
Merit: 0
February 12, 2011, 07:54:40 PM
#6
Quote
Alice's client could let her send the same coins again with a higher fee.

How does Alice know which coins are the same ones that were sent previously?

Do you mean send the same amount from the same address in her wallet?

Yes, although I think this would require a mechanism outside of the current capabilities of the system. 

Alice's client with the "resend with new fee" feature could attach a unique identifier to each transaction she makes to Bob.  If Alice needs to resend a transaction with a higher fee, she could create a new transaction (with the same amounts, from the same address, to Bob, but with a higher fee) using the unique identifier in the transaction that she is trying to resend.  Other clients would acknowledge the first transaction appearing in a block with this unique identifier, and then disregard any future incoming transactions with the same unique identifier.
legendary
Activity: 3920
Merit: 2349
Eadem mutata resurgo
February 12, 2011, 07:45:46 PM
#5
Quote
Alice's client could let her send the same coins again with a higher fee.

How does Alice know which coins are the same ones that were sent previously?

Do you mean send the same amount from the same address in her wallet?
jib
member
Activity: 92
Merit: 10
February 12, 2011, 07:33:20 PM
#4
first time her transaction appears in a block (with either the low fee, or the high fee) that any subsequent transactions will be ignored.

Yes, this is feasible. Alice's client could let her send the same coins again with a higher fee. One of the two transactions will make it into a block and the other one will be ignored as a double spend.
newbie
Activity: 6
Merit: 0
February 12, 2011, 07:25:33 PM
#3
Consider a scenario where I Alice sends 10 BTC to Bob, but includes a fee so low that no client will accept her transaction.  Although with the official client there may be a limit to how long the transaction lasts in the system, it is possible that a modified client (ie a miner) is holding the transaction for processing.  Alice's money is now in limbo - it is possible that at some point in the future some client could allow it into a block.  If Alice sends 10 BTC more to Bob before this occurs, she could find herself out 10 BTC when the original transaction finally goes through.

Suppose that future bitcoin clients allow for resubmission of the same transaction, but with a different fee.  In the above scenario, Alice, upon realizing that Bob didn't receive her 10 BTC, could resubmit with a higher fee, comfortable with the knowledge that first time her transaction appears in a block (with either the low fee, or the high fee) that any subsequent transactions will be ignored.

Is there value in this?  Is this technically feasible?
administrator
Activity: 5222
Merit: 13032
February 12, 2011, 07:13:34 PM
#2
The network forgets about transactions if they haven't made it into a block within a few days. You could resubmit it then.

Bitcoin doesn't currently allow you to "unsend" a transaction, though, so you'd have to restore from a wallet backup to get the "stuck" coins back.
newbie
Activity: 6
Merit: 0
February 12, 2011, 07:09:51 PM
#1
Suppose the number of transactions in the network is great enough that most clients are no longer accepting transactions without fees attached to them.  What happens when a client sends out a transaction with too low of a fee to be processed?  Can the client resubmit the transaction with a higher fee, knowing that other clients will recognize that it is a resubmission and won't mark it as a double spend?
Jump to: