Contacts
Manage your contacts and establish secure communication channels through the blockchain handshake protocol.
Adding Contacts
To add a new contact, you need their shielded z-address. You can obtain this by having them share it directly or by scanning their QR code.
- Go to the Contacts tab
- Tap Add Contact
- Enter their z-address manually or tap the QR scanner icon
- Give the contact a nickname for easy identification
- Tap Send Handshake to initiate the secure channel
Handshake Flow
The handshake is a two-step cryptographic process that establishes a shared encryption key between you and your contact. Here's the detailed flow:
Step 1: Initiation
When you send a handshake, Z-Text creates a shielded transaction to the contact's z-address containing your ephemeral public key. This transaction is indistinguishable from any other shielded transaction on the network.
Step 2: Acceptance
When the recipient opens Z-Text and syncs, they see the pending handshake request. By accepting, they send back their ephemeral public key in another shielded transaction.
Step 3: Key Derivation
Both clients now have each other's public keys and derive a shared secret using elliptic curve Diffie-Hellman. This shared secret is used as the encryption key for all future messages.
No Central Authority
The handshake is completely peer-to-peer through the blockchain. No server mediates the key exchange, and no third party can observe the public keys being exchanged.
Address Book
Your contacts are stored locally on your device, encrypted with your wallet keys. The address book shows each contact's nickname, z-address, handshake status, and last message timestamp.
- Pending -- handshake sent, waiting for acceptance
- Active -- handshake complete, ready to message
- Expired -- handshake request was not accepted in time
Contact Verification
Since z-addresses are long cryptographic strings, always verify you're adding the correct address. The safest methods are:
- Scanning the QR code in person
- Receiving the address through a separate verified channel
- Comparing the first and last 8 characters verbally
Verify Addresses Carefully
If you send a handshake to the wrong address, someone else could establish a channel with you. Always double-check the address before initiating a handshake.
Removing Contacts
You can remove a contact by long-pressing their entry in the contacts list and selecting Remove. This deletes the shared encryption key locally. Note that messages already sent remain on the blockchain, but without the key they cannot be re-decrypted.