Pages:
Author

Topic: Demurrage, transaction fees, storage fees & comparison to commodity money. - page 2. (Read 16732 times)

legendary
Activity: 1708
Merit: 1007
This whole thread is based upon a false premise: there is a global storage cost for old transactions.  This is untrue.

The miners only need to keep the root hash of every block to verify transactions.  However the owner of the old coins needs to keep an complete copy of the old block.

To spend the old coins. The owner announces both the transaction, and provides the old coin's block for upload.  The miners (who wish to) will see this transaction an 're-download' the old block. (and compare the root Merkle hashes)

The miner only need to keep the more recent blocks, old blocks can be downloaded when needed.  Only some of the miners will bother to download the old block, others will just focus on bitcoins in recent blocks.

This extra work of checking old blocks can adequately and naturally attract higher transaction fees. (but not demurrage, as there was no 'storage costs')

That's a better idea. People implementing light-weight clients should take that in consideration, and store at least the blocks from which they have money on their wallets. People providing offline bitcoins like bitbill should also either encode the entire block on the bill, or at least allow the block to be downloaded from a server of them.

This will happen anyway, so that lightweight clients can communicate with other lightweight clients offline.
legendary
Activity: 1708
Merit: 1007
Considering the proposition of demurrage itself, I don't like it very much, for the following reasons:

  • All it does it does is that it forces people to move money around, so that transaction fees are collected and the chain is pruned. If the transaction fees remain near a satoshi, that doesn't add much to miners. It would be better to make sure transaction fees won't go that low.


This is how we can keep it from "going that low"

No, not really. If you have "infinite" block space, it doesn't matter that you're forcing people to move around their coins once in a while, the transaction fees to do so will probably be only 0,01µBTC each transaction. They would remain "that low".

I'm suggesting an alternative minimum fee rule, for which any fee offered less than that the miners simply regard that transaction as among the 'free' class.  Either they pay the minimum fee expected for that transaction, based on this rule or any other minimum fee rule that is larger, or the transaction receives no priority bump compared to a free transaction and is not valid for the fee paying sections of the block.  By 'that low' I'm simply saying that I'm trying to establish a standard price floor that (profit minded) miners are likely to honor in general, so that users in general know to pay it.

An adaptive max block size is fine for it's own reasons, if a system can be agreed upon, and that really would have to be code enforced.  But that would not solve the problem. 

Why not? With limited space, transactions would compete for it, and the only way to do so is by offering higher fees.


Because I'm trying to address the (admittedly very small) costs to the network for very old transactions.  The blocksize limits might pay for it fine, but that still wouldn't have a direct relationship to the costs of old transactions, but for the new transactions competing for space.  It wouldn't have any effect of encouraging the desired behavior from capital savers, namely the active reduction of resource usage.

There is little evidence that such compensation will be appropriate to overcome the 'free storage' problem, and much economic theory that suggests that over the long term free storage of old transactions will distort the market.

I'm not sure that's such an issue... comparing with bandwidth and processing power efficiency, storage space will probably not be such a problem.

It's not much of an issue.  I've already admitted this.  The costs to the network required by any one old transaction are tiny, indeed.  But they do exist, and are cumulative in nature.  This cost isn't directly addressed in the current fee structure directly.  I'm proposing, and asking for better proposals, that directly address this long term cost.  The fees need not be large, and certainly shouldn't be large, to have the intended effect on user behavior overall.  I suggested an alternative minimum fee that would have expected only .00000026 BTC per year per input.  That's damn tiny, and it will be decades before this is either a value of any significance or even before the other minimums in effect are smaller than this.
legendary
Activity: 1708
Merit: 1007
Quote from: Raulo
Two points. The amount displayed in, e.g., bitcoinwatch is completely bogus. A transaction contains a change. If you transfer $10 to a third party from an account that has $100000, the banking system transfers $10, not $10 + $99990, while Bitcoin does the latter.

I didn't know that. I wonder how much of the transaction volume is change. This definitely changes the ratio, but it's difficult to know to what.

I agree that given I assumed the transaction volume reflected transfers between parties, my calculations are not applicable.


It's difficult to know the ratio, but the point is valid.  The standard behavior of the client is to total up as many inputs as necessary to pay the intended his due, and then the change returns to the sender.  Since the default behavior of the client is not to consolidate vast holdings into fewer transactions (the very behavior I'm trying to address) it's reasonable to assume that any transaction with more than one input is sending the larger of the two outputs.  So an average can be derived from the transaction records.
legendary
Activity: 1708
Merit: 1007
  • When an old transaction is announced, the miner downloads the block that contains these old coins.

From whom? The assumption has been that miners will be the ones storing the full blocks.

Perhaps it is feasible for a division of labor, where block chain storage could be a separate business?

This is doable even in the current state of affairs.  A blockchain that doesn't mine, and has many connections to miners.  But that same blockchain server has to be compensated somehow, and this functionally means that those who use the blockchain server are going to have to pay that service directly.  In fact, I've been thinking about doing this exact business model, and charging a small monthly access fee for users.  The primary users, in my view, would be thin clients that use a redacted blockchain as a matter of course.
full member
Activity: 407
Merit: 100
DIA | Data infrastructure for DeFi
It's an interesting point.  Maybe some miners will restrict themselves to coins which they consider "hot" e.g. younger than X blocks and expect lower fees or (maybe?) expect that they can optimise their hasher for upcoming transactions, while archivers may charge higher fees or experience less pressure in the processor department while profiting from providing access to a longer history of the block chain.

I think this might be a form of miner speciation, separating the quick agile aggressive piranha-miner fighting for the most recent tranactions from the slow long-memoried whale-miner filter feeding through the older or lower priority transactions.

This of course requires a sufficient increase in the profitability of mining to begin the whole competitive and co-operative industry.
legendary
Activity: 1372
Merit: 1002
In fact if miners tend to be major investors in hardware as compared to non-miners, wouldn't at least some miners figure the vaster the blockchain the better, since they can better afford "vast" storage space (due to "economies of scale") than smaller players can?

-MarkM- (Isn't it typical in many or most industries to actually *want* {|such} "barriers to entry"?)


Basically you're saying that miners would want maintaining the block chain to be more expensive to prevent others to compete with them.
Isn't it bad for the network users?
legendary
Activity: 2940
Merit: 1090
In fact if miners tend to be major investors in hardware as compared to non-miners, wouldn't at least some miners figure the vaster the blockchain the better, since they can better afford "vast" storage space (due to "economies of scale") than smaller players can?

-MarkM- (Isn't it typical in many or most industries to actually *want* {|such} "barriers to entry"?)
legendary
Activity: 1372
Merit: 1002
Why would the "winner miner" apply that fee reduction?
He can get the whole fee while enjoying the saving in storage caused by the transaction.

Promoting smaller transactions is good for the miner unless he plans to quit mining soon.

So why would miners promote (by reduced fees) transaction that save storage space instead of smaller transactions?
I feel I'm missing something in your point.
legendary
Activity: 2940
Merit: 1090
No-one mentioned the checkpoints, blocks that the client code knows enough about to realise the blockchain it is downloading is corrupt if any of those checkpoint blocks fail to match the values hard-coded into the client.

An attacker with >50% of the processing power cannot automagically convince the lesser percent of the network's processing power that those hardcoded checkpoints are wrong, so the attacked network will know for sure that any node trying to tell it a checkpoint block that does not match its own hard-coded checkpoint values is to be regarded as an attacker.

Thus, ancient (as in pre-existing the latest hard-coded checkpoint) coins are protected by those checkpoints. Do they still need constant adding of new blocks? Surely not? The entire network could simply stop completely and only transactions after the last hard-coded checkpoint will be at risk.

It seems to me to make a lot of sense that if "hoarders" (long term savers saving in actual unspent bitcoins rather than by investing or whatever) and "traders" (people making new transactions) have even slightly divergent goals that is an excellent reason for having at least two complementary blockchain-based currencies in use at any given time: one for saving and one for spending.

This whole thread seems kind of "moot" in an ecosystem of more than one blockchain-based currency. Get over the whole "there can be no blockchain but bitcoin's original blockchain" hangup and this whole problem can go away naturally.

From time to time a new blockchain can be started, with an explicit understanding/announcement that processing power is going to start moving toward the new chain, leaving the old chain to be secured primarily by means of the hard-coded checkpoints.

Eventually everyone interested in making new transactions and having them verified relatively fast will move to the new blockchain. People leaving their coins to their great great grandchildren will probably not worry too much that the Smithsonian, archive.org and other long term historical-storage facilities might take more than ten minutes to eventually release those coins come the century that their heirs finally choose to prepare to use them.

Announcements could even be made of at which block of both the old and the new chains the old chain will receive it's "final" checkpoint, after which no attempt to process a block every ten minutes will be made with the old blockchain. How to work out any later transactions on the old chain with the historical archive institutions need not even be detailed if this whole changeover is allowed a lot of time to happen, maybe even telling people that if they do want to leave their stash to their great great grandchildren they should in fact exchange it over to the new blockchain rather than depend on anyone being interested in buying ancient coins from ancient blockchains at some far future date.

Maybe we could simply add a -savingsnet flag like the -testnet flag for those wanting coins to save instead of (the default?) coins to spend...

-MarkM-


administrator
Activity: 5166
Merit: 12850
Why would the "winner miner" apply that fee reduction?
He can get the whole fee while enjoying the saving in storage caused by the transaction.

Promoting smaller transactions is good for the miner unless he plans to quit mining soon.
legendary
Activity: 1372
Merit: 1002
I don't think fee-based demurrage will happen. Why would miners disincentivize people from allowing old transactions to be forgotten? Maybe spending old transactions will actually give you a fee reduction. More likely, you'll be charged an extra fee for turning a small transaction into a large transaction. You'll get a fee reduction for spending the last output of a transaction and turning a large transaction into a smaller one.

Why would the "winner miner" apply that fee reduction?
He can get the whole fee while enjoying the saving in storage caused by the transaction.
legendary
Activity: 1372
Merit: 1002
If processing old transactions becomes expensive, then miners will start charging transaction fees to include them in their blocks.

Speculating about exactly HOW the miners will charge (will they subscribe to an 'old transaction service' or somehow contact the old-transaction-spender for the merkle branch of the old transaction?) is a waste of time, in my humble opinion.


I see.
So miners would just ignore old transaction unless a high enough fee is paid for renewing it.
This would also solve the storage problems from burned transactions and lost wallets.
Although feasible, creighto's proposal is not necessary to solve potential storage problems.

But...what happens if no one stores a block with not empty accounts?
Will some accounts become invalid because of time?
This could be an additional source of monetary base shrinking.
administrator
Activity: 5166
Merit: 12850
You actually could do true demurrage as a backward-compatible change. At least 50% of the mining power would need to agree to follow the same rules, but all other clients would have their transactions restricted by these rules regardless of whether they update. The miners could, for example, agree that all outputs must have their spendable value reduced by x BTC per retarget. Any transaction that violates this rule would never be accepted, just as if it was invalid. Furthermore, an output reduced to a sub-zero value could be safely forgotten by the network, since any spend using it would be invalid.

If miners with your rules don't have >50% of the network, you can't safely forget unspent transactions. If you are unable to find the transaction when it is needed for verification, you have only two bad choices:
- You can accept the transaction without checking it after it gets in a block. Every time one of these blocks ends up getting rejected by the majority of the network due to its invalid transaction, you will lose all of your hashing work since the last block. (This is even worse if you wait a few blocks before accepting it.)
- You can reject the transaction. Some important part of the network might accept the transaction, and you will be isolated from them unless you have more than 50% of the network.

I don't think fee-based demurrage will happen. Why would miners disincentivize people from allowing old transactions to be forgotten? Maybe spending old transactions will actually give you a fee reduction. More likely, you'll be charged an extra fee for turning a small transaction into a large transaction. You'll get a fee reduction for spending the last output of a transaction and turning a large transaction into a smaller one.

The strict demurrage I described at the beginning of this reply could happen if old transactions become a large burden, though I wouldn't like it. Hopefully other methods will be found.
newbie
Activity: 28
Merit: 0
I'd like this demurrage on very stale coins, as in lost coins. If you don't move coins for 8 years, they start disappearing slowly.

It is totally reasonable for BTC holders to refresh once in 8 years. This gives a small fee to miners, and with what I learned about nodes not accepting blocks that split the block chain too far back... with little change to the protocol, we might not need many miners to keep things going.

I find the idea of having exactly 21M coins much nicer than the risk of "suddenly, surprise market crash caused by ancient million bitcoin deposit". Also, you can pretty much rely on coins getting lost somewhere, so this will always secure a minimum amount of mining.

Nice part: nobody complains, since everybody can prevent demurrage by just doing a single transfer to himself every 8 years. The client could remind people, too.

Main concern about this would be giving it all to the person who found such a block. If at all possible, it should track unspent blocks and start returning them at the eight-year span.
legendary
Activity: 1222
Merit: 1016
Live and Let Live
If processing old transactions becomes expensive, then miners will start charging transaction fees to include them in their blocks.

Speculating about exactly HOW the miners will charge (will they subscribe to an 'old transaction service' or somehow contact the old-transaction-spender for the merkle branch of the old transaction?) is a waste of time, in my humble opinion.


Gavin, what do you think about including a second root-hash in the block hash tree.  This hash is the merkle root of a tree containing the root hashes every block before it?

This will be a useful feature for thin clients; once the clients have downloaded all the root hashes of the previous blocks, any new block can be used to check if the downloaded root hashes are correct.

This will enable secure arbitrary block download.

It is a miner modification to a block... I don't see it containing a large overhead,  it involves a extra sha256 of 3.2 MB / 100,000 blocks. It adds ~256bit to the block size.  I think that it's benefits out weigh the costs.
legendary
Activity: 1652
Merit: 2216
Chief Scientist
If processing old transactions becomes expensive, then miners will start charging transaction fees to include them in their blocks.

Speculating about exactly HOW the miners will charge (will they subscribe to an 'old transaction service' or somehow contact the old-transaction-spender for the merkle branch of the old transaction?) is a waste of time, in my humble opinion.
legendary
Activity: 1106
Merit: 1004
If the (only|most available) copy of an old block is the one that the spender has, this introduces an attack vector not present in Bitcoin now.  The obvious one that I can think of is that Bitcoin depends on the independently verifiable blocks that are provided by multiple sources not connected to the parties involved in the trade, or at least enough sources that it's extremely unlikely that all those peers are connected to either party in the trade.  If the only copy available to the miner of the input block is the one provided by the sender himself, a spoofed block is then possible.  How hard do you think it would be to fake a block and transaction set that could hash to match the merkle root of one block too old for miners to keep?  It might take a malicious node a few days to find the right combo of extra-nonce and false transactions to match the merkle root, but time is of little concern in such an attack.

Is this really feasible? One thing is to produce a hash that has a certain number of zeros in its beginning, another thing is to produce an exact hash from something else. To me it sounds as likely as brute forcing against cryptography, but well, I don't really understand all these cryptography stuff so I'm asking....
legendary
Activity: 1106
Merit: 1004
This whole thread is based upon a false premise: there is a global storage cost for old transactions.  This is untrue.

The miners only need to keep the root hash of every block to verify transactions.  However the owner of the old coins needs to keep an complete copy of the old block.

To spend the old coins. The owner announces both the transaction, and provides the old coin's block for upload.  The miners (who wish to) will see this transaction an 're-download' the old block. (and compare the root Merkle hashes)

The miner only need to keep the more recent blocks, old blocks can be downloaded when needed.  Only some of the miners will bother to download the old block, others will just focus on bitcoins in recent blocks.

This extra work of checking old blocks can adequately and naturally attract higher transaction fees. (but not demurrage, as there was no 'storage costs')

That's a better idea. People implementing light-weight clients should take that in consideration, and store at least the blocks from which they have money on their wallets. People providing offline bitcoins like bitbill should also either encode the entire block on the bill, or at least allow the block to be downloaded from a server of them.
legendary
Activity: 1106
Merit: 1004
Considering the proposition of demurrage itself, I don't like it very much, for the following reasons:

  • All it does it does is that it forces people to move money around, so that transaction fees are collected and the chain is pruned. If the transaction fees remain near a satoshi, that doesn't add much to miners. It would be better to make sure transaction fees won't go that low.


This is how we can keep it from "going that low"

No, not really. If you have "infinite" block space, it doesn't matter that you're forcing people to move around their coins once in a while, the transaction fees to do so will probably be only 0,01µBTC each transaction. They would remain "that low".

An adaptive max block size is fine for it's own reasons, if a system can be agreed upon, and that really would have to be code enforced.  But that would not solve the problem. 

Why not? With limited space, transactions would compete for it, and the only way to do so is by offering higher fees.

There is little evidence that such compensation will be appropriate to overcome the 'free storage' problem, and much economic theory that suggests that over the long term free storage of old transactions will distort the market.

I'm not sure that's such an issue... comparing with bandwidth and processing power efficiency, storage space will probably not be such a problem.
hero member
Activity: 772
Merit: 501
Quote from: Raulo
Two points. The amount displayed in, e.g., bitcoinwatch is completely bogus. A transaction contains a change. If you transfer $10 to a third party from an account that has $100000, the banking system transfers $10, not $10 + $99990, while Bitcoin does the latter.

I didn't know that. I wonder how much of the transaction volume is change. This definitely changes the ratio, but it's difficult to know to what.

Quote
Secondly, there are so many transactions because they are mostly free. When the fees become a norm, the transaction volume will slow down.

I agree with this.

Quote
Quote
Also, a successful >50% attack would not lead to a complete security breach where all bitcoins can be stolen. It would only open the possibility of double spends by an attacker, so the value of such an attack does not equal the market value of bitcoins. This suggests the risks of lower difficulty/market-cap could be low.


I know that but a lot of people here downplay the consequences of the >50% attack. It is true that there is rather little to gain for the attacker compared to being honest. Therefore, I think we may never see a ">50% attack for profit". But for attackers that only want to make damage (for example a competition to Bitcoin), it can really make havoc. It's the mother of all DoS attacks. A >50% attacker can:

1. Completely halt all confirmations.
2. Reverse all transactions (so halt retroactively) and put them on hold.
3. Annihilate recently mined coins and all transactions where the coins were used (if the chain fork is longer than 120 blocks).
4. Double spend his coins.

And the point that is frequently missed:

5. Allow anybody to double spend. When the chain is forked, all transactions go into a memory pool of the miners. The attacker can be "nice" enough to remove them from his memory pool and allow anybody to connect, submit a new double spend transaction and confirm it. It can allow some non-fraudulent transaction and you will not know what is right and what is wrong.

Yes, the attacker can disrupt transactions, but cannot steal other people's bitcoins, so the monetary gain from such an attack is relatively small. As for an attack for competitive reasons, there is good reason to assume this would also not be perceived as being profitable by a potential attacker, because a disruption to bitcoin would benefit all competing currencies, not just the attacker's, so the attacker would be paying a large expense, to help not just himself, but his competitors as well, thus minimizing the benefit to himself.

Quote
As I wrote above, the value of transactions is bogus. The only think non-bogus is the total BTC value (money supply). Relatively to money supply, Bitcoin is expensive.

I agree that given I assumed the transaction volume reflected transfers between parties, my calculations are not applicable.

I'll add though that the difficulty does not need to scale with total BTC value. There will come a point where an attack will simply not be feasible by any party due to the level of difficulty, and after that point difficulty does not need to increase much with further increases in market capitalization.
Pages:
Jump to: