Bitcoin Forum

Bitcoin => Development & Technical Discussion => Topic started by: keystroke on April 30, 2013, 03:21:15 AM



Title: Treat dust outputs as non-standard, un-hardcode TX_FEE constants
Post by: keystroke on April 30, 2013, 03:21:15 AM
https://github.com/bitcoin/bitcoin/pull/2577

So no transactions < 54.3 uBTC?

https://gist.github.com/gavinandresen/5453840


Title: Re: Treat dust outputs as non-standard, un-hardcode TX_FEE constants
Post by: lophie on April 30, 2013, 04:05:18 AM
54.3 uBTC are the new Satoshi. Says the devs. What is next..... Link the fees to $0.01 and let the foundation pick the exchange rates for us?


Title: Re: Treat dust outputs as non-standard, un-hardcode TX_FEE constants
Post by: keystroke on April 30, 2013, 04:08:45 AM
54.3 uBTC are the new Satoshi. Says the devs. What is next..... Link the fees to $0.01 and let the foundation pick the exchange rates for us?

It looks that way. I think it is a good idea compared to what we have now. But I have not seen it discussed here so I was surprised. However I guess github and the dev mailing list are the places where the real action happens these days.


Title: Re: Treat dust outputs as non-standard, un-hardcode TX_FEE constants
Post by: lophie on April 30, 2013, 04:17:16 AM
So basically we can't say "there are plenty of liquidity! BTC are divideable to 8 decimal places!" anymore. Says the devs. Thank you for fornicating without creating a fork.


Title: Re: Treat dust outputs as non-standard, un-hardcode TX_FEE constants
Post by: lophie on April 30, 2013, 04:19:13 AM
How about if all those are changed to just options in the clients? you know inside teh freaking bitcoin.conf. Then the devs could SUGGEST and not IMPOSE.

Just to add, Code being opensource does not make what they committed a "suggestion". They still can make them options to be added to bitcoin.conf without requiring whoever disagrees to patch and compile from source.


Title: Re: Treat dust outputs as non-standard, un-hardcode TX_FEE constants
Post by: gmaxwell on April 30, 2013, 04:31:04 AM
How about if all those are changed to just options in the clients? you know inside teh freaking bitcoin.conf. Then the devs could SUGGEST and not IMPOSE.
Your ignorance is showing. Will you be apologetic when you realize that you look foolish here? Sadly, I expect not.


Title: Re: Treat dust outputs as non-standard, un-hardcode TX_FEE constants
Post by: lophie on April 30, 2013, 04:36:33 AM
Lets discuss the amount a little shall we. Now assume a Bitcoin is now worth a million dollars. How come 54.3 uBTC would be now "acceptable to propagate"?

When Bitcoin started wasn't mining just lost power? You know before the pizza and stuff? Why didn't you hard code the limit to be 10kBTC then?

The scarcity of coins, block size, etc are all essential. Finding a way around one that does not cause a fork does not make it right if it solves a "current" problem.

I am pissed off because I am working on something called "colored addresses" which might be used as "pseudo identity verification" for any service paid with Bitcoin.

I really wish that my lack of enough information doesn't make me see how wise this magic lower limit is. But I don't think there is something justified this being hard coded and not a suggested added option.


Title: Re: Treat dust outputs as non-standard, un-hardcode TX_FEE constants
Post by: lophie on April 30, 2013, 04:37:32 AM
How about if all those are changed to just options in the clients? you know inside teh freaking bitcoin.conf. Then the devs could SUGGEST and not IMPOSE.
Your ignorance is showing. Will you be apologetic when you realize that you look foolish here? Sadly, I expect not.

If I apologized for the ignorance would you get off your high heels and point the ignorance out?


Title: Re: Treat dust outputs as non-standard, un-hardcode TX_FEE constants
Post by: Peter Todd on April 30, 2013, 05:01:49 AM
I am pissed off because I am working on something called "colored addresses" which might be used as "pseudo identity verification" for any service paid with Bitcoin.

Read this: https://github.com/petertodd/trustbits/blob/master/fidelitybond.md#contract-blockchain-transactions

Note the section on 'contract value accounting' - coloured coin implementations with a fixed ratio of satoshi's to asset are a bad idea. Additionally, if your asset is worth less than the fees required to move it, don't bloat up the block chain with it.


Title: Re: Treat dust outputs as non-standard, un-hardcode TX_FEE constants
Post by: lophie on April 30, 2013, 05:07:44 AM
I am pissed off because I am working on something called "colored addresses" which might be used as "pseudo identity verification" for any service paid with Bitcoin.

Read this: https://github.com/petertodd/trustbits/blob/master/fidelitybond.md#contract-blockchain-transactions

Note the section on 'contract value accounting' - coloured coin implementations with a fixed ratio of satoshi's to asset are a bad idea. Additionally, if your asset is worth less than the fees required to move it, don't bloat up the block chain with it.

Thank you very much. I would be doing some reading.


Title: Re: Treat dust outputs as non-standard, un-hardcode TX_FEE constants
Post by: calian on April 30, 2013, 06:05:39 AM
I await SatoshiDice's response.


Title: Re: Treat dust outputs as non-standard, un-hardcode TX_FEE constants
Post by: evilpete on April 30, 2013, 07:47:34 AM
Not to mention the bitcoin fountains that have been spamming essentially unspendable 0.00001 btc outputs...


Title: Re: Treat dust outputs as non-standard, un-hardcode TX_FEE constants
Post by: TierNolan on April 30, 2013, 09:05:37 AM
What about adding a way to poll nodes that will accept a given relay fee.

This would allow clients to poll all the nodes they are connected to, and try to find the lowest one.

This would (help) prevent nodes ending up surrounded by high relay nodes, even if there are enough nodes supporting a lower relay rule.


Title: Re: Treat dust outputs as non-standard, un-hardcode TX_FEE constants
Post by: TierNolan on April 30, 2013, 09:33:41 AM
Also, doesn't  this kill coloured coins?  They would require a separate relay network.

Ideally, the relay rule should be based purely on tx fee paid.


Title: Re: Treat dust outputs as non-standard, un-hardcode TX_FEE constants
Post by: Gavin Andresen on April 30, 2013, 02:03:57 PM
Y'all read the pull request, yes?

So: if you have a better suggestion for fixing the problem of new users wasting lots of time gathering tiny drips and drabs of bitcoins, and then getting upset when they can't spend them (because it costs more in fees that they are worth), I'm open to suggestions.

RE: "what about when bitcoins are worth a million dollars apiece"

Umm, that's what the "un-hardcode TX_FEE constants" part is all about?

RE: trolling about Foundation setting the fee:

Go back under your rock, please. This pull request is the first step towards a market between miners (who want higher fees) and merchants/users (who want lower fees, but also want their transactions confirmed). Miners can already control what fees they accept, this pull lets users control (very clumsily, improvements on the road map) the fee they are willing to pay.


Title: Re: Treat dust outputs as non-standard, un-hardcode TX_FEE constants
Post by: TierNolan on April 30, 2013, 03:30:47 PM
So: if you have a better suggestion for fixing the problem of new users wasting lots of time gathering tiny drips and drabs of bitcoins, and then getting upset when they can't spend them (because it costs more in fees that they are worth), I'm open to suggestions.

Ideally, people would pay for the costs they impose.  At the moment, the 2 costs are UTXO set size and storage in the blockchain.

These aren't actually miner costs.  With a maximum block size, they would inherently charge per MB, but that isn't because MBs cost them.  It is an artificial market to encourage mining.  The actual cost of mining large blocks falls on the network as a whole (miners and verification nodes alike).

For people who are willing to trust that all blocks more than X deep are secure, then all they need to store on their hard drive is the UTXO set.

I would suggest that as long as a transaction has a large enough transaction fee per kb and has at least as many inputs as it has outputs, it should be relayed.  This transaction will either shrink the UTXO set or keep it the same.

Coinbase transactions that have more than 1 output could be penalized, if it is critical to keep the UTXO set low.  Maybe they are only relayed/count if they meet 0.9 times the standard threshold.


Title: Re: Treat dust outputs as non-standard, un-hardcode TX_FEE constants
Post by: Come-from-Beyond on April 30, 2013, 03:51:14 PM
https://github.com/bitcoin/bitcoin/pull/2577

The community ought to boycott these changes.


Title: Re: Treat dust outputs as non-standard, un-hardcode TX_FEE constants
Post by: Mike Hearn on April 30, 2013, 04:11:23 PM
The changes make sense. Right now Bitcoin has a large variety of what we call "magic numbers". They're just arbitrary choices that may have made sense at some point but aren't guaranteed to make sense in future. For the case of fees, Gavin's change is the first step towards removing these magic numbers and making them more dynamic.

Because the work is complex this change is only the first of several. It reduces the fee charged from the current level to reflect the higher exchange rate, and tweaks some other rules to be more internally consistent.

Eventually the goal is to have no hard-coded magic fee levels at all, so manual adjustments to reflect big exchange rate swings aren't needed any more. But we're not there yet.


Title: Re: Treat dust outputs as non-standard, un-hardcode TX_FEE constants
Post by: Peter Todd on April 30, 2013, 04:32:54 PM
https://github.com/bitcoin/bitcoin/pull/2577

The community ought to boycott these changes.

You don't have to boycott the changes. Just ask mining pools to keep using the existing rules and setup some relay nodes that don't use them. A profit-driven miner has every reason to accept transactions based purely on what fee per KB they pay; UTXO costs per miner per transaction are tiny even if the overall cost to the network is large.

Mike Hearn suggested (https://github.com/bitcoin/bitcoin/pull/2577#issuecomment-17157953) changing the protocol version as part of the pull-request. What you can do is setup a DNS seed that uses that change to find nodes that still use the existing rules to make it easy to find peers to relay your dusty transactions. Adding a new service bit would work even better. I run the testnet seed - ask me if you need any help.

edit: Added a suggestion (https://github.com/bitcoin/bitcoin/pull/2577#issuecomment-17240779) to the pull request for a NODE_RELAYCOST service bit so nodes can advertise the minimum "cost" required to relay a transaction through them.


Title: Re: Treat dust outputs as non-standard, un-hardcode TX_FEE constants
Post by: gmaxwell on April 30, 2013, 05:06:48 PM
How about if all those are changed to just options in the clients? you know inside teh freaking bitcoin.conf. Then the devs could SUGGEST and not IMPOSE.
Your ignorance is showing. Will you be apologetic when you realize that you look foolish here? Sadly, I expect not.
If I apologized for the ignorance would you get off your high heels and point the ignorance out?
You've got yourself a deal!   The base fee that this is set based on is configurable in bitcoin.conf, just as you were demanding.  The option won't be promoted at least initially because its relatively important that the network have roughly consistent settings (or transactions will get stuck when they get poor propagation due to being right on the boundary) and changing it on your own system won't change miners or your peers, but it's absolutely settable in order to avoid forcing everyone to update (or recompile) should people start selling cars for 1 BTC. :)


Title: Re: Treat dust outputs as non-standard, un-hardcode TX_FEE constants
Post by: TierNolan on April 30, 2013, 06:41:17 PM
The changes make sense. Right now Bitcoin has a large variety of what we call "magic numbers". They're just arbitrary choices that may have made sense at some point but aren't guaranteed to make sense in future. For the case of fees, Gavin's change is the first step towards removing these magic numbers and making them more dynamic.

It also adds a minimum transaction output "magic number".  That is an additional rule.  It doesn't exist at the moment right ?


Title: Re: Treat dust outputs as non-standard, un-hardcode TX_FEE constants
Post by: Gavin Andresen on April 30, 2013, 06:48:07 PM
It also adds a minimum transaction output "magic number".  That is an additional rule.  It doesn't exist at the moment right ?

Minimum transaction output is (conservatively) calculated from the minimum relay fee setting.  It did exist before, it was just set to '1 satoshi'.

We made 0-satoshi outputs non-standard a couple of releases ago, but consensus is that was a mistake-- 1-satoshi is not the right number, because the marginal cost of spending a 1-satoshi output is greater than its value.

Again, eventually it might be economical to spend 1-satoshi outputs. When it is, the minimum relay fee will be on the order of a satoshi or two, and this code will do the right thing.


Title: Re: Treat dust outputs as non-standard, un-hardcode TX_FEE constants
Post by: Gavin Andresen on April 30, 2013, 06:51:14 PM
RE: NODE_RELAYCOST :

I'm generally against any "take my word for it" settings.  What would stop somebody Up To No Good from setting NODE_RELAYCOST and then lying about what they will relay?  Miners might decide to try to increase fees by Sybil-attacking the network and lying about NODE_RELAYCOST....


Title: Re: Treat dust outputs as non-standard, un-hardcode TX_FEE constants
Post by: TierNolan on April 30, 2013, 07:00:06 PM
Minimum transaction output is (conservatively) calculated from the minimum relay fee setting.  It did exist before, it was just set to '1 satoshi'.

Fair enough.  However, what is the issue with a 2 input, 2 output transaction that pays fees in bitcoin?  How does that cause spam?


Title: Re: Treat dust outputs as non-standard, un-hardcode TX_FEE constants
Post by: Peter Todd on April 30, 2013, 07:23:06 PM
Fair enough.  However, what is the issue with a 2 input, 2 output transaction that pays fees in bitcoin?  How does that cause spam?

Start with a 1 input 2 output transaction that looks like both outputs are of a reasonably high value.


Title: Re: Treat dust outputs as non-standard, un-hardcode TX_FEE constants
Post by: TierNolan on April 30, 2013, 07:37:13 PM
Start with a 1 input 2 output transaction that looks like both outputs are of a reasonably high value.

At the moment, miners only have an incentive to charge per MB, since that is the limited factor.

You could have a maximum UTXO expansion rule.  1MB @ 350 bytes means around 3k transactions per block. 

What about adding a rule that the number of outputs is limited to 500 more than the number of inputs.  This means that the UTXO set would increase by at most 500 per block.  Also, miners might actually pay to include transactions which have more inputs than outputs.  I assume the protocol doesn't allow negative fee transactions?

Ofc, it would be adding another MAX_BLOCK_xxx like rule.

Having said that, you would need the rule to only apply to UTXOs from blocks that came in the rule, or you get massive bloat in the run-up.


Title: Re: Treat dust outputs as non-standard, un-hardcode TX_FEE constants
Post by: ManaUser on May 01, 2013, 03:21:03 AM
Stupid idea. I'm not going to use this.


Title: Re: Treat dust outputs as non-standard, un-hardcode TX_FEE constants
Post by: keystroke on May 05, 2013, 08:06:24 PM
Y'all read the pull request, yes?

So: if you have a better suggestion for fixing the problem of new users wasting lots of time gathering tiny drips and drabs of bitcoins, and then getting upset when they can't spend them (because it costs more in fees that they are worth), I'm open to suggestions.

RE: "what about when bitcoins are worth a million dollars apiece"

Umm, that's what the "un-hardcode TX_FEE constants" part is all about?

RE: trolling about Foundation setting the fee:

Go back under your rock, please. This pull request is the first step towards a market between miners (who want higher fees) and merchants/users (who want lower fees, but also want their transactions confirmed). Miners can already control what fees they accept, this pull lets users control (very clumsily, improvements on the road map) the fee they are willing to pay.

He has a road map for future changes:

"Road map:

Re-implement the memory pool, and keep statistics on transactions that enter and then leave by being included in a block. Protect CTransaction::nMinFee/nMinRelayFee with a mutex, and modify those by that memory pool code.

So IsDust() will be based on what is actually being accepted into blocks, and will adjust appropriately.

Do the same for free transactions (estimate priority needed to get included in block).

Modify the RPC code to either send for free (if priority is high enough, based on estimate) or send with reasonable fee (based on fee estimate).

And modify GUI code to either just send for free or recommend sending with a fee."


Title: Re: Treat dust outputs as non-standard, un-hardcode TX_FEE constants
Post by: evoorhees on May 06, 2013, 01:22:30 AM
I await SatoshiDice's response.

SatoshiDice never sends transactions under 5000 satoshis, though almost everyone forgets this, or never learned it. This new patch may require SD to increase the 5000 satoshi txs to 5430 satoshis.


Title: Re: Treat dust outputs as non-standard, un-hardcode TX_FEE constants
Post by: felipelalli on May 06, 2013, 01:25:06 AM
Now I have 11 GB to keep the entire blockchain in my computer. I am not a miner. Would I earn any revenue to keep theses GB into my HD? That would be nice!

Thanks.


Title: Re: Treat dust outputs as non-standard, un-hardcode TX_FEE constants
Post by: scintill on May 06, 2013, 05:26:14 AM
SatoshiDice never sends transactions under 5000 satoshis, though almost everyone forgets this, or never learned it. This new patch may require SD to increase the 5000 satoshi txs to 5430 satoshis.

Oh dear, so $0.0064 instead of $0.0059?  Not feeling much sympathy.

Are any of your addresses compressed form?  Maybe you can cut a deal with pools to mine your sub-5000-satoshi txns if you switch to compressed addresses, which save 32 bytes per spend.


Title: Re: Treat dust outputs as non-standard, un-hardcode TX_FEE constants
Post by: gmaxwell on May 06, 2013, 08:36:52 AM
Are any of your addresses compressed form?  Maybe you can cut a deal with pools to mine your sub-5000-satoshi txns if you switch to compressed addresses, which save 32 bytes per spend.

I recommend using this compressed key:

Address: 1diceineSzVPNQnCZB7mZz2Sjp5UpjnPR
Privkey: L1fSLx5RBKakdM8LqHXNMwbDAQTc8zevJxgG23uPryogxUmCyYbQ

(I've modified vanitygen to generate compressed keys, but only the cpu code as I no longer have any GPUs… it's even faster than uncompressed key searching. But I can't really justify putting in the time to do gpu support or test it out well enough to publish it. :P)


Title: Re: Treat dust outputs as non-standard, un-hardcode TX_FEE constants
Post by: scintill on May 12, 2013, 08:43:10 AM
SatoshiDice never sends transactions under 5000 satoshis, though almost everyone forgets this, or never learned it. This new patch may require SD to increase the 5000 satoshi txs to 5430 satoshis.

Oh dear, so $0.0064 instead of $0.0059?  Not feeling much sympathy.

I feel bad for being snarky here, sorry.  Perhaps there's still time to lobby for the default to go down to 5000 (nice round number?), or maybe enough pools and other node operators would support you on a small change like this.  But if not, there are worse cost-of-business increases than this, and the changeover cost should be negligible.


Title: Re: Treat dust outputs as non-standard, un-hardcode TX_FEE constants
Post by: solex on May 12, 2013, 09:03:08 AM
... This pull request is the first step towards a market between miners (who want higher fees) and merchants/users (who want lower fees, but also want their transactions confirmed). Miners can already control what fees they accept, this pull lets users control (very clumsily, improvements on the road map) the fee they are willing to pay.

Great work Gavin and team. I support this approach 100%.


Title: Re: Treat dust outputs as non-standard, un-hardcode TX_FEE constants
Post by: leijurv on May 12, 2013, 04:45:07 PM
Just confirming, I can send from unspent outputs worth less than 54.3uBTC each, right? So if I've already received several transactions that were worth 54.3uBTC or less each, I can then spend those outputs?


Title: Re: Treat dust outputs as non-standard, un-hardcode TX_FEE constants
Post by: Come-from-Beyond on May 12, 2013, 04:51:09 PM
Just confirming, I can send from unspent outputs worth less than 54.3uBTC each, right? So if I've already received several transactions that were worth 54.3uBTC or less each, I can then spend those outputs?

Yes.


Title: Re: Treat dust outputs as non-standard, un-hardcode TX_FEE constants
Post by: ktttn on May 17, 2013, 12:08:37 PM
Dust is tasty, throwaway dumpsterfood. To constantly google away on my little smartphone looking for ways to dumpsterdive for free btc is beneficial to my wallet while not fucking with Murican poisonmoney ever at all ever.
BAM! The minimum standard size for "a box of bruised apples" has increased? Oh Joy!
Imma find larger minimum payouts now.
Metaphors? Metaphors!
Also, arbitrary optional stopgap default settings are cool.