I’m curious if recursive proofs and the associated scaling benefits could lead to cheaper and cheaper transactions to the point where we can just make them free. Anyone else thought about this?
Transaction fee is a good spam filter, right? In that regard, I don’t think free transactions would be good. I prefer a very low but not negligible transaction fee in a future version of Zcash.
What spam?
If transactions are 100% free then anyone can make infinity transactions filling up the blocks and stopping legit transactions from going through. Ie: spamming the network.
I guess I’m dreaming of a future where we have recursive proofs. And I guess it depends how recursive proofs work.
But I’m imagining a world where miners are constantly consolidating transactions into a single proof. Wouldn’t that make the cost of a successful attack on recursive proofs on a similar scale as flooding the network with invalid transactions?
But maybe I’m misunderstand recursive proofs?
Well, if I were a Zcash user, I wouldn’t want marketers to be able send 0 ZEC transaction with memo attached freely to my Zcash address. The problem with spam is not the validity of the transaction or the filling up of blocks but rather the cost of using the chain and the cost for demanding user’s attentions.
Is checking for proofs validity more costly than including the proofs recursively into the blocks?
Awesome. Hadn’t thought of that scenario.
If I were a ZCash user i would rather that transaction fee come directly to me. Which in practice is just a free transaction with a minimum transaction amount.
We could always just make the fee algorithmically calculated where transactions set a max allowable fee price which is only ever paid when we pass a transaction threshold. All wallets default to set a small max fee then when these “attacks” occur the threshold of transactions is reached causing all no fee paying transactions to be dropped. All transactions in a given block pay the same fee. And to remove the incentive for miners to attack the network to increase fees we remove the 0 max fee paying transactions first but still try to process all transactions willing to pay a fee with 0 fees.
So far it looks like to practically have 0 fees we could:
- Set a minimum ZEC transaction (min cost stays the same since fees are now 0)
- Make fee 0 below a threshold and algorithmic above that threshold
Anything else?
Won’t miners need to be paid for them to process the transactions? Also in PoS validators would also want to be paid for their staked ZEC.
If we still hold that there must be only 21,000,000 ZEC ever mined, is there other way to compensate miners/validators other than with the transaction fee?
Don’t forget that one of the reasons Zcash doesn’t use the Bitcoin style fee for kilobyte structure (and sets the fee at 0.00001ZEC in most wallets) is to make all transactions look alike for Privacy.
Fees are transparent and odd fees are more information for an attacker to try to use. Any variable fee structure would need to account for this.
Economies of scale will kick in and the only parties able to “profit” from mining (both POW and POS) will be parties that can leverage that scale advantage. I’m dubious if compensating centralised miners with fees benefits the community. If the use of ZCash grows there should be enough incentive for organisations to mine as part of their ongoing business costs to reduce the risk of competitors gaining too much control over ZCash.
True, this might be a breaking issue…
But maybe having all wallets set the same default “max fee” is okay too? Not sure.
It used to be 0.0001 which (todays price) is a penny and a half. Even that is still extremely reasonable.
But why even have a minimum fee?
Interestingly I just found even zip313 questions if variable fees are effective against a DOS attack.
It even suggests we need to fix the fee structure should change to address this issue.
It even points out it’s better to change fee structures sooner then later as things get more complex the more parties are involved.
So my current thinking is a minimum fee per transaction doesn’t solve any major problems but an optional maximum fee does. And in turn if we fix the scaling problem our transactions basically become free.
The essence powering any cryptocurrency feature is the incentive, as block rewards go down over time, the transaction fee in native asset is the only incentive which remains to provide compensation to miners/block producers. BTC will be an interesting watch following 2-3 more halvings as the block rewards shrinks and tx fees are arbitrarily capped via the limited block size. So unless number go up to compensate the miners with the minuscule amount of BTC they would be earning, or the users are okay paying skyrocketing tx fees(more than the actual tx amount), we will see the true result of Satoshi’s initial solution for Byzantine Generals problem.
Zcash would need to consider the long term aspects of fee design considering the future use case of ZSAs.
Just a thought: As for miner rewards, who knows, one day, maybe simply minting an on-chain NFT/ZSA and sending it to the miner instead of block rewards would be worth way more! Eg. Block 10,000,000 mined by X miner/IP address NFT sent to the miner which then would be sold to an interested party who wants to “sponsor” the security provided for the network. I really hope this path doesn’t result in us getting advertising spam!
That’s an awesome thought.
That also brings up another interesting solution to the problem. New asset ZEC2030 that has 21,000,000cap and a 4 year halving…
I think mining/staking rewards make the most sense since there should also be an economic burden on ZEC holders for keeping their coins secure and not just those transacting.
This sounds a lot like the thought process that led Vitalik Buterin to propose an upgrade to the Zcash fee mechanism. A couple other Zcashers on that github thread raised a series of objections and didn’t help try to solve them. So it looked to me like they were discouraging further work on it. After a few months of no progress, Vitalik took it over the Ethereum community, where it eventuallty became EIP-1559. Along the way, someone — presumably the Ethereum Foundation — hired Tim Roughgarden to do a micro-economic analysis which showed that it did not have any glaring incentive problems or exploitability. As of November 2021, EIP-1559 had resulted in 1 million ETH being burned, significantly reducing Ethereum’s “inflation” (issuance) rate. (However, this may have been an artifact of the period in history where Ethereum had demand far outstripping supply and other Ethereum-equivalent networks like Cosmos, Solana, and Avalanche hadn’t yet reached large numbers of users. Presumably Ethereum transaction fees will not continue to be high in aggregate once Ethereum scales better and/or has effective competition.)
Anyway, I still think it would be great for the Zcash community to consider switching to EIP-1559-style transaction fees, especially now that Ethereum has gone first and derisked it for us! Even if the large aggregate transaction fees don’t prove repeatable (either on Zcash or on next year’s Ethereum), there are other benefits to it, such as fees being more predictable to the user, more uniform with each other (protecting privacy), and as long as demand for transaction capacity is below supply then fees can be even cheaper! Which is the original topic of this thread.