Transparent-only Zcash wallets and NU6 Fee changes

Hello!

It is important that Users and developers of wallets that support Transparent Zcash only such as Trust, Exodus, etc. are aware of how “Proportional Transfer Fee Mechanism” also known as “ZIP-317” affects their wallets.

What’s the problem?

“Proportional Transfer Fee Mechanism” specifies that transactions include a minimum fee that pays for the actions that the transaction performs. Zcash consensus nodes now expect that the fee of the transaction your wallet creates complies with what it is specified in ZIP-317. Otherwise it won’t be included in the blockchain.

How to know if your Zcash wallet is not applying fees correctly from the wallet’s UI.

The MINIMAL FEE allowed by ZIP-317 is 10000 Zatoshi. That pays for the smallest transaction that can be made as specified by the Zcash Protocol. This is 0.0001 in decimal.

If you see that your wallet tells you that your fee is less than that, then your wallet is not calculating ZIP-317 fees properly.

Important note: This is only an indicator of it. If the fee is 10000, it may still be not enough depending on how many inputs and outputs your wallet is using to create the transaction.

I already submitted a transaction and it seems to be stuck

We are deeply sorry that you are going through this. We know this is probably a stressful situation. Your funds are safe. According to ZIP-317 nodes will not relay your transactions to other nodes and some may also choose just to drop it altogether. In any case your funds are safe. Your transaction will eventually “expire” or be dropped by the receiving node. Once your wallet realizes that situation your funds will be available to be spend again.

Unlike Bitcoin, Zcash does not have a “replace by fee” mechanism. This means that you will have to wait for your transaction to “expire” or be dropped by the receiving node. The default expiry limit is 40 blocks. Zcash produces in average one block every 72 seconds, which will be around 48 minutes. Please refer to your wallet’s official tech support if needed (see “I’m a user, how can I help fixing this?” section below)

I’m a user, how can I work around it?

If you are a user, you can try set the fees yourself. Sometimes wallets have an “advanced mode” where the user can set their own parameters to transactions. This is often not recommended for most users. Given that the default behavior of your wallet is not accounting for the fees properly you will have to do it.

You will have to set at least 0.0001 ZEC for fees. Although, this does not mean that it is enough. It is possible that your wallet doesn’t show you how many inputs and outputs your transaction will incur in using. You can use a “rule of thumb” and set a slightly bigger amount that you consider appropriate 2x, 3x, 5x or 10x more.

I’m a user, how can I help fixing this?

Using official channels, contact your wallet’s technical support and report this problem. Reporting this issue helps the Zcash ecosystem greatly.

Don’t post the problem on social media. It is most likely that bad actors will contact you instead of the real tech support representatives. Instead, check if your wallet application has a support section or a link to their official website. Bare in mind that that real tech support representative will never ask. you for you keys, seed phrase or personal information.

I’m a wallet developer. How should I address this?

The “Proportional Transfer Fee Mechanism” specification should be your go-to reference. The ZIP contains links to pull requests that implement ZIP-317 in the Zcashd wallet.

If you need further advice, please go to the Zcash R&D discord. Introduce yourself and proceed to ask your questions in the channel you see fit. #wallet-dev is a good candidate for it.

[edit] As @str4d pointed out in the Zcash R&D discord there have been cases where the wallets did not implement transaction expiry at all by setting the expiry height to NO_LIMIT (zero). This means that the transaction will never expire. This is a big usability problem since there is no “replace by fee” that can override that setting. Usally wallet developers that had this problem had to contact a specific miner and hope that they can set a replacement transaction to be mined. Please refer to ZIP-203 for more details.

A foreword

Thank you for being a Zcasher! I’m sorry that you are going through this hurdle. The Zcash developer community is actively engaging with wallet developers for them to update their fee setting code to comply with ZIP-317. Ultimately, you have to choose which wallet is more convenient for you and your ZEC. Check out the wallet section of z.cash to see a portfolio of shielded wallets that support the latest changes in Zcash.

8 Likes

Thank you for your efforts @pacu. Please reach out to Guarda they calculate tx fees wrong and changing to 0.0001 ZEC is very expensive as high as $34. I suspect the decimal is in the wrong place.

0.0001 ZEC is the minimum fee required for ZIP 317, which is currently US$0.0045 or 0.45 US cents.

1 Like

:fearful::fearful::fearful: 34 usd?

@gottabeJay are you using a locale that has a different decimal separator ?

It happens to me a lot since Spanish does and apps of all sorts get crazy

I have not tested this myself yet. I just am relaying what was reported by a user ‘‘48 sat/byte was 800 bucks’’. I do not know what locale the users device is set to.

Nevertheless, Guarda does not support ZIP317. Could someone reach out perhaps?

34 USD was for 1 sat/byte…

Zcash does not use sat/byte metrics for its fees; ZIP 317 instead uses zat / logical action.

I am aware. Wallets including Guarda and Trust Wallet display sat/byte when selecting custom fees for Zcash.

I have now tested this myself. (I should have done this before posting tbh) seems that it defaults to 48 zat / logical action (Satoshi per Byte displayed) see image. Perhaps its the locale.

That is likely an incorrect calculation assuming the Bitcoin price, not the Zcash price. (It would correspond to a ~18400-byte transaction at the current Bitcoin price of USD 90500.)

I have now tested this myself. (I should have done this before posting tbh) seems that it defaults to 48 zat / logical action (Satoshi per Byte displayed) see image.

No, if it says “sat / byte” that will mean zat / byte. Not zat / logical action.

1 Like