Zcash Dynamic Fees, Now!

Zcash Dynamic Fees, Now!

Better UX for users, and a stronger security budget for Zcash

Today, Zcash transactions use a fixed fee model based on transaction complexity. This creates a “Goldilocks zone” in the price of ZEC: fees need to be high enough to discourage spam, but low enough that users still want to transact.

But since the price of ZEC is now rising, we are moving outside that zone. That means it’s time for a dynamic fee system that is free-market based, simple, and private. One where:

  1. Users can still send transactions even in an overload situation (such as the previous sandblasting situation).
  2. Fees support sustainability of ZEC and the Zcash network.
  3. Fees are reduced for normal users under normal circumstances.
  4. Users can pay more or less for different classes of service.
  5. The fee system protects the user’s privacy.
  6. The design stays simple to minimize risks of security, privacy, or other unforeseen consequences.
  7. The implementation deploys incrementally, and within current mainnet parameters. No network update required.
  8. Core consensus logic stays isolated from the fee system, so these changes can’t cause consensus forks.

This is achievable this year, with three steps: wallet features that put choices in front of users, an RPC endpoint that suggests fees from on-chain data, and a few reasonable parameter changes.

Wallet Feature Pilots

There are two features wallets can (and in our opinion should ) experiment with today to get the ball rolling on dynamic fees: priority delivery, and “speed up” semantics.

Priority Delivery

Before submitting a transaction, the wallet can offer the user the option to pay a 4x fee to incentivize miners to include it sooner. That way, when block space is in demand, a priority transaction lands quickly. For anything time-sensitive (settlement, payroll, merchant tooling, refunds), prompt inclusion is the most meaningful discretion we can offer.

Even though the Zcash network is, at the time of this writing, generally very uncongested you can think of “Priority” working like the security line at the airport.

Graphics by https://openpeeps.com

We think this is a reasonable trade-off. The fee reveals minimal information: only whether the shielded transaction came with the standard fee or the priority fee.

Also, once the Network Sustainability Mechanism activates with NU7, 60% of every transaction fee is removed from circulation and re-issued later. That elevates the priority feature from a mere UX benefit to a meaningful contribution to the network’s long-term security.

“Speed Up” Semantics

Today, a stuck Zcash transaction sits in the mempool until its expiry, or forever if no expiry is set. A short expiry height (e.g. 2 blocks under current mainnet, or 5 under the proposed ZIP-218 changes) guarantees the transaction either lands fast or fails fast.

If a transaction fails, wallets can offer a “Speed Up” button which is familiar UX to Bitcoin and Ethereum users. Zcash doesn’t support Replace-By-Fee (RBF), so the wallet simply broadcasts a fresh transaction at the priority fee. The user doesn’t need to reason about the mempool.

We’re proud to announce that Unstoppable Wallet has stepped up to be the first to experiment with these features. We also have feelers out to several other wallets.

If you’re a wallet developer interested in working with us, reach out.

The Fee Suggestion Endpoint (z_getstandardfee)

Once those pilots are producing mainnet data, we’ll ship a dynamic fee estimator: an RPC endpoint, z_getstandardfee, that returns a recommended standard fee for everyday sends based on recent blocks. Wallets offer this fee to users and let users choose to 4x it for priority delivery.

Crucially, the endpoint is a suggestion, not a consensus rule. However, the more wallets that consistently use it, the more consistent the cross-wallet UX and the greater the privacy benefits.

Parameter Tuning

All of the above works within today’s ZIP-317 parameters. Two of those are also worth a fresh look now that ZEC has appreciated: the marginal fee (currently 5,000 zatoshi per action) and the block-production weight-ratio cap (currently 4.0).

  • Lower the marginal fee from 5,000 zatoshi to 1,000 to lower fees overall, while still staying above the spam threshold.
  • Raise the weight-ratio cap from 4.0 to 10.0 to clear demand spikes.

These parameters also have the aesthetic benefit of being powers of 10, which are easy to understand and explain.

Conclusion

​​Dynamic fees do not need to arrive all at once, and they do not need to come from consensus changes. By starting with wallet UX, fee estimation, and incremental parameter tuning, Zcash can move toward a fee market that better handles changing network conditions while preserving simplicity and privacy. We’re looking forward to testing these ideas on mainnet this year and welcome feedback from the community.


Cross-posted to the Shielded Labs’ blog and Twitter/X

13 Likes

Im curious on this part tbh. Would this help or hurt wallet identification?

1 Like

I think a block space auction would give Zcash a problem it doesn’t have, making it either expensive or slow. If we set aside the privacy argument (that is important to us, but very low on the priority list for most other crypto people), what non-whales want is affordable fees.

I don’t see how Zcash could operate as payment rails for everyday people when one whale moving their bags can make it too expensive for everyone else, leaving them unhappy with the network, just like in the second frame of your picture.

2 Likes

In its current form I don’t think it is setup like an auction, basically it flexes the mean cost up and down by usage over a rolling window which would technically make fees a lot less with a lower min base fee. Users through wallet UX or submitting their own transactions can choose an arbitrary fee to push their transactions into inclusion by the miner. The main thing is really that it doesn’t leave such a high bar for min inclusion like the way zip317 and fees are currently done.

Auctions and other other consensus like changes probably won’t work in the sense like EIP1559 due to there being no state since it’s stack oriented

Oh yes, thank you for bringing this up to the community. This a great proposal this is exactly the kind of pragmatic improvement Zcash needs as adoption grows. Dynamic fees that preserve privacy while improving UX for time-sensitive transactions are very welcome. NozyWallet is eager to participate and help drive this forward.

About NozyWallet

NozyWallet is a privacy-first, Orchard-only wallet built in Rust on top of Zebrad. We enforce fully shielded transactions by default (no transparent addresses at all), making it one of the most privacy-maximalist wallets in the ecosystem.

How NozyWallet Can Contribute

Priority Delivery (4x fee) Clear toggle in send and swap flows: Standard vs Priority. We’ll show estimated confirmation benefit along with a clear privacy note (“Only reveals standard vs priority tier full Orchard shielding maintained”).

Speed Up semantics — We plan to add a prominent “Speed Up” button for expired or stuck transactions that automatically creates a new shielded tx at priority fee.

Smart defaults in the aggregator Nozy includes a BridgeKitty-style quote aggregator for shielded cross-chain swaps (NEAR Intents, etc.). We can intelligently recommend Priority only when it makes sense and combines it with privacy scoring.

Longer-term synergy — This pairs well with the work on Tachyon / Oblivious Sync readiness.

Regarding the valid point raised by @pitmutt about keeping Zcash usable for everyday users and avoiding fee spikes that hurt small transactions: we fully agree this is important. I understand this as well is not a block space auction like EIP-1559. Instead, it uses a rolling window to adjust the mean fee, allows a meaningfully lower minimum base fee, and lets users voluntarily pay more for faster inclusion. This should actually lower the bar for normal transaction inclusion compared to the current ZIP 317 system.

That’s a very important distinction. On affordability for everyday users (@pitmutt
’s concern):

This is a very valid worry. No one wants Zcash to become expensive or unusable for regular people because of whales. For NozyWallet’s approach we plan to:Keep Standard fee as the strict default for almost everything

Only suggest Priority for clearly time-sensitive cases (large swaps, urgent payments, etc.)
Always show the user a clear cost preview + estimated confirmation time before they confirm
Support keeping the marginal/base fee as low as possible.

The goal is to give users optional speed when they need it, while protecting the default experience for everyday shielded payments. If the rolling-window mechanism works as described, it should help prevent extreme fee spikes compared to a pure auction model.

.

1 Like

I think if it comes down to wallet teams to dictate and calculate a base and priority rate, then there will be some mineable/aggregation to some degree on users. A lot of EVM-based wallets provide a low, medium, and high fee for users to select how to submit their transaction, along with an estimate of once it will likely get pulled from the mempool to block inclusion. So it would introduce a vector, potentially, but given the block utilization over the past couple of months and the type of users that might want to pay a larger fee, defaulting the min base fee will likely be enough to get it in and should be constant across all users.

High value transactions are likely the only ones that might want to include some fee to ensure inclusion in the next block and would be something to think about.

Awesome. Thanks @shieldedmark!

I like the idea of dynamic fees based on load. I’m not clear on the marginal benefits in a fully post-Tachyon world but maybe others here do.

I suggest that the default UX does not require the user to have to make a decision on the class of service unless there is meaningful congestion or fee delta.

5 Likes

It’s a figure of speech. Once you create this “express lane” you split the ZEC users into “can afford higher fees” and “can’t afford high fees”. Whales, exchanges and traders can afford it and everyone else will have to wait longer.