Skip to content
Zchat

Zchat

Shielded Zcash tx as your privacy-chat layer

Created on 2nd December 2025

Zchat

Zchat

Shielded Zcash tx as your privacy-chat layer

The problem Zchat solves

Most people in crypto talk about privacy, but their actual conversations still live on centralized servers: Discord, Telegram, Slack, email. Those tools:

  • Leak metadata (who talks to whom, when, how often)
  • Rely on third-party servers and login providers
  • Don’t integrate natively with funds or on-chain actions

On the Zcash side, shielded memos already exist, but they’re stuck inside wallet UIs as “advanced transaction fields”, not as a first-class messaging experience. There’s no simple way for two Zcash users to DM each other, coordinate, or negotiate over ZEC while keeping both value and conversation private.

Zchat (Zsend.xyz) turns shielded Zcash memos into a familiar chat experience:

  • Each message is a tiny shielded transaction with a memo.
  • Our full node + lightwalletd see the chain; the backend + frontend render it as a chat.
  • Contacts are Zcash unified addresses or chosen usernames.

People can use it to:

  • Coordinate OTC trades and over-the-counter deals privately, with funds and chat in the same place.
  • Run private DAO / multisig coordination where every instruction is on-chain and encrypted.
  • Provide private support or consulting, where invoices + messages live inside ZEC transactions.
  • Regular chatting.

Communicate in high-risk environments where both payment metadata and chat metadata must stay shielded.

It makes existing tasks safer by:

  • Removing the trusted chat server – only your own node + wallet infra see your data.
  • Reducing metadata leakage: a third party only sees shielded ZEC flows, not message contents.
  • Giving a clean UX: users get Signal-style chat, but everything settles on Zcash.

In short: Zchat is a ZEC-native messenger that lets people talk and pay over the same private channel, secured by Zcash instead of web2 infrastructure.

Challenges I ran into

I wired a full end-to-end stack: zebrad → lightwalletd → Rust wallet core → Node backend → Next.js frontend. No Mocks. A few things were surprisingly hard:

  1. Getting lightwalletd + zebrad playing nicely
  • I run zebrad as my mainnet full node and compiled lightwalletd from source.
  • The first attempts failed with mysterious errors like open db/main/blocks: permission denied and GetBlockRange: must specify start and end heights.

Fixes:

  • Cleaned up and re-owned the db/ directory (root vs normal user confusion).
  • Pointed lightwalletd at the correct zcash.conf and RPC creds.
  • Verified connectivity with grpcurl to ensure the CompactTxStreamer service was live.
  1. Proto and API mismatches in Rust wallet core
    I’m using zcash_client_backend + zcash_protos and generating gRPC types locally.
    The proto schema and the Rust client expectations were slightly out of sync:
  • BlockID vs BlockId
  • Different nesting (start_height vs start.height)

A nasty error: invalid wire type: LengthDelimited (expected Varint) when decoding CompactBlock.

Fixes:

  • Regenerated the proto types to match lightwalletd’s exact version.
  • Adjusted the sync logic to construct the right BlockRange structure.
  • Added a debug-sync and debug-notes CLI commands to introspect wallet state while iterating.
  1. Turning a Rust wallet into a reusable service
    I refactored a single-purpose Rust crate into a library + CLI:
  • WalletCore struct with methods like init, sync, get_balance, send, list_messages.
  • A zchat-wallet binary that outputs machine-readable JSON for the backend.

Fixes:

  • Cleaned up visibility modifiers (pub everywhere needed, private elsewhere).
  • Introduced a thin abstraction so the Node.js backend can treat the wallet as a subprocess “RPC” without knowing Rust.

Overall, the main challenge was stitching full-node infrastructure to a consumer-grade chat UX under hackathon time pressure, while debugging low-level gRPC + protobuf issues along the way.

Tracks Applied (6)

Privacy Infrastructure & Developer Tools

Privacy-Preserving Communication / Apps
Starknet

Starknet

Privacy-Focused Content & Media

Our Zchat next step is adding shielded group chats with media
Mina Protocol

Mina Protocol

Privacy-Focused Content & Media

Zchat next stage is shielded group chats with media
Aztec

Aztec

Private Focused Content & Media

Exclusively shielded by zcash protocol media via Zchat
Osmosis

Osmosis

Creative Privacy Applications

Zchat is shielded messaging and content sharing. Creative? Who knows... But shielded and private!

Fhenix

Privacy-Focused Content & Media

Zchat - shielded and private text and content sharing

Bitlux

Cheer Project

Cheering for a project means supporting a project you like with as little as 0.0025 ETH. Right now, you can Cheer using ETH on Arbitrum, Optimism and Base.

Discussion

Builders also viewed

See more projects on Devfolio