Tor
Z-Text can route all wallet traffic through the Tor network, so the server you sync from never learns your IP address. Available from version 3.1.0, with a built-in Tor client that needs no extra apps.
What Tor adds
Your messages and transactions are already shielded on-chain by zk-SNARKs -- amounts, sender and recipient are encrypted in the blockchain itself. What that does not hide is the network connection your app makes to reach the chain. A lightwalletd server sees the IP address asking it for blocks, and so does anyone watching that connection.
Tor closes that gap. With it enabled, your wallet reaches the server through the Tor network instead of connecting directly, so the server sees a Tor exit rather than you. Hostnames are resolved remotely inside the Tor network, so nothing about which server you use leaks to your local DNS resolver or your internet provider either.
Two different layers
What goes over Tor
Everything the wallet sends out. That means the connection to your lightwalletd server -- syncing blocks, broadcasting transactions, checking the mempool -- and also the BTCZ price lookup, which rides the same route rather than going out separately. When Tor is on, the price service sees a Tor exit, not your IP address, exactly like the sync server does.
Two modes
Z-Text ships two ways to reach Tor. Most people want the first one.
Built-in Tor (default)
The Tor Project's Rust client runs inside Z-Text itself. There is nothing to install, no separate app to keep running, and no ports to configure -- you flip one toggle and the app handles the rest. This is also the only option on iOS, where apps cannot run a background Tor daemon for other apps to use.
External SOCKS5 (advanced)
If you already run Tor -- Orbot on Android, or a tor daemon on desktop -- Z-Text can use it instead. Select external mode and set the SOCKS port your Tor listens on, typically 9050 for a system daemon or9150 for Tor Browser's bundled instance. The proxy host is fixed to 127.0.0.1, so this connects only to Tor running on the same device.
Turning it on
- Open Settings and go to the Network section.
- Turn on the Tor toggle.
- Leave the mode on Built-in unless you specifically want to use your own Tor. If you pick External, enter the SOCKS port.
- Wait for the status to reach Ready. The first start takes longest; later ones are much faster.
The setting is stored in the app's encrypted storage and persists across restarts. Whenever Tor is active you will see an onion-route icon in the app header, so you can tell at a glance which way your traffic is going.
Connection states
Built-in Tor reports its progress while it connects to the network, so a slow start is visible rather than looking like a hang.
- Off -- Tor is disabled; the wallet connects directly.
- Starting -- the client is bootstrapping into the Tor network, shown with a live percentage. The header icon turns amber.
- Ready -- traffic is flowing over Tor.
- Failed -- the client could not reach the Tor network. See Troubleshooting below.
.onion servers
With Tor on, Z-Text can connect to a lightwalletd server published as an.onion address. That keeps the whole path inside the Tor network -- the connection never leaves through an exit node, and the server's location is protected as well as yours. Enter the.onion address as your server in the same place you would set any custom server.
No silent fallback to clearnet
If Tor is enabled and Tor is not working, Z-Text does not quietly connect directly instead. It waits, and if the connection cannot be established it reports the failure. Automatic switching between servers is also turned off while Tor is on, so a failover cannot move you onto a direct connection without you noticing.
The price lookup follows the same rule. If it cannot complete over Tor, the wallet keeps showing the last price it already had rather than reaching out directly to fetch a fresh one -- a stale number is a smaller cost than an unannounced request carrying your IP address.
Why fail-closed matters
What Tor does NOT cover
Being precise about the boundary matters more than an impressive claim:
- Tor does not change the blockchain. Your on-chain privacy comes from zk-SNARKs and is the same either way. Tor adds network-level privacy on top; it does not add or remove anything on-chain.
- Tor does not protect the device. If someone has your unlocked phone, Tor is irrelevant. That is what your PIN, the panic PIN and encryption at rest are for -- see Security.
What it costs you
Tor routes your traffic through several relays, so syncing is slower than a direct connection -- this is inherent to Tor, not specific to Z-Text. The app allows longer for connections to complete while Tor is on, so a price refresh in particular can take noticeably longer than it does directly. The built-in client also has to join the Tor network before the first sync: expect a few seconds when it has connected recently, and up to about a minute on a cold start. Z-Text caches Tor directory data locally so repeat starts are quick.
The app also carries the Tor client inside it, which adds a few megabytes to the download.
Troubleshooting
Status stays at Starting, or reaches Failed
The app cannot reach the Tor network. Some networks -- corporate Wi-Fi, university networks, and a number of national ISPs -- block Tor. Try mobile data instead of Wi-Fi, and check that you have a working connection at all.
External mode does not connect
Confirm Tor is actually running on the device and that the port matches:9050 for a system daemon, 9150 for Tor Browser. On Android, Orbot must be running. Remember the host is fixed to127.0.0.1 -- a Tor instance on another machine will not work. If in doubt, switch to built-in mode, which has nothing to misconfigure.
Syncing is very slow
Expected to a degree. If it is unusable, try an .onion server if your provider offers one, since that avoids the exit-node hop.
I want to confirm Tor is really on
Look for the onion-route icon in the app header. It appears only while Tor is active, and shows amber while connecting.
Should I leave it on?