Released: Currency conversion, transparent history, and TEX addresses in Zashi

Today’s release represents another baby step toward our goal of making Zashi an easy-to-use, all-in-one user interface for securely storing, spending, and sending ZEC. 

We’re excited to deliver currency conversion and TEX address support in Zashi iOS 1.1.5. (We’re finishing work on Zashi Android 1.1.6 with these updates and will release it soon.) These features are for Zcashers who want usability improvements that don’t compromise their privacy and security. Here are the details.

Currency conversion

Currency conversion is a standard feature in most crypto wallets, so if you find yourself asking, “What took so long to implement it in Zashi?” we get it. And here’s the answer: In other wallets, querying an exchange or several exchanges for the price of a coin will reveal the user’s IP address, and their interest in Zcash, to those exchanges. This information can then be tied to other advertising metadata, and it becomes another data point in your general profile that is being used to surveil you on the internet.

This privacy-for-convenience tradeoff is fine for a lot of users, but we know Zcashers expect more — and we do, too. So our engineers implemented a mechanism in Zashi to fetch currency exchange rates from multiple verified sources over the Tor network so as not to leak the user’s IP address to those exchanges. No shortcuts when it comes to protecting Zashi users. To our knowledge, Zashi is the only wallet that will protect your IP address during currency conversion, but we’re looking forward to other Zcash wallet developers adopting this innovation. 🙂

Right now, Zashi’s currency conversion only works for ZEC-USD. Other currencies will be added in the future.

How it works: Exchange rates are displayed on the Account, Send, and Balances screens. Zashi always triggers a refresh when a user navigates to the Send screen or relaunches the app, and the user can manually refresh the rate on the Account and Balances screens once every two minutes by tapping on the $ rate button. Zashi never displays an exchange rate older than 15 minutes.

Transparent history

Zashi now supports recovering fully transparent wallet history. This means that if you imported your seed phrase from a wallet that allowed you to create fully transparent transactions in the past, those transactions will now appear in your Zashi wallet history.

TEX addresses

Does Zcash need another address format? Like it or not, the answer is yes. Users in different parts of the world have access to different exchanges, and many exchanges have unique rules and requirements. TEX addresses solve accessibility and usability issues for hundreds of millions of potential Zcashers.

TEX addresses are exclusively for exchanges (Zashi users won’t have a TEX address of their own), and they make it possible for Zashi and other wallets to send shielded funds to an exchange like Binance, which requires transparent deposits.

First, some backstory. The effort to build TEXes started early in January when Binance, the world’s largest cryptocurrency exchange, started requiring that all deposit transactions be fully transparent, i.e., the source address is required to be visible to the exchange. This gives Binance the information it needs to return funds to the depositor if the exchange decides it doesn’t want to accept the deposit.

A second motivator for this new feature is that there are many exchanges that treat Zcash as Bitcoin with only slight adjustments to the code. But this means that transactions with shielded components are often not supported (they aren’t parsed correctly) by these exchanges. In many cases, these exchanges can’t even detect transactions sent from the shielded pool.

So when a user sends shielded ZEC, some exchanges cannot see the funds that were sent — either because the exchange isn’t set up to recognize the transaction or because, in Binance’s case, it chooses not to. In these cases, those funds can appear to be lost. (The exchange address controls the funds but can’t see them.)

TEX addresses solve these issues by introducing logic that essentially creates an adapter, an ephemeral transparent address, that shielded ZEC passes through before arriving at the TEX address. So, to the exchange, the transaction has all the information it needs to be recognizable, but the sender’s information such as shielded address, history, and transaction information remains private. 

With TEXes, Binance is happy because the transaction in which they receive the funds has a transparent source address, and the Zashi users are happy because they’re not revealing their source of funds. Similarly, in the case of the transactions that are being mis-parsed, those exchanges will only see a transparent address and so there won’t be any problems.

How it works: When sending to a TEX address from Zashi, shielded funds pass through a transparent address before arriving at the exchange. A new, never-seen-before and never-to-be-seen-again transparent address is used for this intermediate step. Your Zashi wallet address and other details remain “disconnected” and therefore not visible to the exchange or anyone else.

Note: If Binance or any TEX address holder chooses to decline a deposit, there isn’t an automatic way to re-shield the returned funds, even though they are still controlled by the Zashi wallet. ECC is working on a solution.

What’s next for Zashi

Immediate ECC priorities are launching the Coinbase Onramp and Flexa integration for instant Zcash payments. These two releases, like today’s release, address real-world use cases and are prioritized in our roadmap because Zashi users have told us they want them. Everything we deliver in Zashi is with one objective in mind: to make it the simplest and best way to use Zcash.