Author

Topic: Treat dust outputs as non-standard, un-hardcode TX_FEE constants (Read 3471 times)

full member
Activity: 126
Merit: 100
Capitalism is the crisis.
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.
legendary
Activity: 2142
Merit: 1010
Newbie
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.
member
Activity: 63
Merit: 10
Vires in Numeris
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?
legendary
Activity: 1078
Merit: 1006
100 satoshis -> ISO code
... 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%.
sr. member
Activity: 448
Merit: 254
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.
staff
Activity: 4326
Merit: 8951
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. Tongue)
sr. member
Activity: 448
Merit: 254
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.
full member
Activity: 229
Merit: 103
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.
legendary
Activity: 1008
Merit: 1023
Democracy is the original 51% attack
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.
hero member
Activity: 900
Merit: 1014
advocate of a cryptographic attack on the globe
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."
newbie
Activity: 30
Merit: 0
Stupid idea. I'm not going to use this.
legendary
Activity: 1232
Merit: 1094
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.
legendary
Activity: 1120
Merit: 1168
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.
legendary
Activity: 1232
Merit: 1094
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?
legendary
Activity: 1652
Merit: 2317
Chief Scientist
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....
legendary
Activity: 1652
Merit: 2317
Chief Scientist
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.
legendary
Activity: 1232
Merit: 1094
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 ?
staff
Activity: 4326
Merit: 8951
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. Smiley
legendary
Activity: 1120
Merit: 1168

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 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 to the pull request for a NODE_RELAYCOST service bit so nodes can advertise the minimum "cost" required to relay a transaction through them.
legendary
Activity: 1526
Merit: 1136
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.
legendary
Activity: 2142
Merit: 1010
Newbie
legendary
Activity: 1232
Merit: 1094
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.
legendary
Activity: 1652
Merit: 2317
Chief Scientist
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.
legendary
Activity: 1232
Merit: 1094
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.
legendary
Activity: 1232
Merit: 1094
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.
member
Activity: 77
Merit: 10
Not to mention the bitcoin fountains that have been spamming essentially unspendable 0.00001 btc outputs...
sr. member
Activity: 354
Merit: 250
I await SatoshiDice's response.
hero member
Activity: 924
Merit: 1003
Unlimited Free Crypto
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.
legendary
Activity: 1120
Merit: 1168
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.
hero member
Activity: 924
Merit: 1003
Unlimited Free Crypto
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?
hero member
Activity: 924
Merit: 1003
Unlimited Free Crypto
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.
staff
Activity: 4326
Merit: 8951
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.
hero member
Activity: 924
Merit: 1003
Unlimited Free Crypto
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.
hero member
Activity: 924
Merit: 1003
Unlimited Free Crypto
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.
hero member
Activity: 900
Merit: 1014
advocate of a cryptographic attack on the globe
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.
hero member
Activity: 924
Merit: 1003
Unlimited Free Crypto
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?
hero member
Activity: 900
Merit: 1014
advocate of a cryptographic attack on the globe
Jump to: