How we feelin about ck zcash
make it so
4 Likes
@Henry_Suso
As always with the common sense. No words wasted, just the truth!
Gimme pee. Ill get the ball rolling.
.
1 Like
My pee is cold and frozen
My ai intern mapped out some ways to do it for zcash that isn’t shielded. It requires some off chain components and we would need some sort of zcash price feed or oRaClE
Zkproofs. … . 20 characters
Grokski say no need. Who lie? Your AI in turn? Or ELONs guy?
@dominicwilliams can u resummon Jan and unTwitter unDOGE to ask who lie?
The intern wrote this:
Here’s the short, practical tour you asked for—how Zcash works, how to run a node, what compiles to WASM, and how ICP’s chain-key could (and could not) help create a “ckZEC”.
How Zcash’s chain works (nutshell)
- Model: Bitcoin-style UTXO chain with optional privacy. You can use transparent addresses (like BTC) or shielded ones that hide sender, receiver, and amount via zk-SNARKs. (Zcash Documentation)
- Shielded tech today: Since the NU5 upgrade (May 2022), Zcash uses the Halo 2 proving system and the Orchard shielded pool—no trusted setup and support for Unified Addresses (UA) (a single “u1…” that can hold multiple receiver types). (Z.Cash)
- Privacy UX: Light clients and viewing keys let you keep transactions private but optionally reveal them to selected parties (auditors, compliance, etc.). (Zcash Zip 317)
How to run a Zcash node
You have two solid choices:
- zcashd (C++; the original ECC client)
- Full node & CLI (
zcashd, zcash-cli). Typical Linux flow is build-from-source; ECC docs cover Debian/Ubuntu in detail. (Zcash Documentation)
- Zebra / zebrad (Rust; Zcash Foundation)
- Independent full-node implementation with Docker images and manual builds. Great ergonomics if you prefer Rust. (GitHub)
Either way, you’ll sync the chain, validate blocks/txs, expose RPC, and (optionally) serve light clients (via lightwalletd if you’re building wallet infra). (GitHub)
Can Zcash “compile in WASM”?
-
Whole nodes in WASM? Not realistically today. A full node’s networking, disk, and performance needs are outside typical browser-WASM constraints.
-
But core libraries & proofs? Yes—parts of the stack compile to WASM:
- Halo2 has a documented WASM port path (nightly Rust, WASM atomics, rayon). (Zcash)
- Community work shows Zcash wallet sync primitives (trial decryption, note witness updates) in Rust → WASM; ChainSafe studied browser-wallet feasibility and published benchmarks. (ChainSafe Research)
- There are example repos and guides (e.g., Halo2 in the browser). Some crates still need tweaks (threads/atomics) but the direction is clear. (Medium)
- Zcash’s Rust crates (librustzcash, client backends) are actively developed and are the usual starting point for WASM bindings. (GitHub)
Bottom line: You can compile ZK proving/verification and wallet logic to WASM; running the full blockchain node in WASM isn’t the path people take.
Could ICP’s chain-key make “ckZEC”?
What chain-key gives you: ICP provides threshold cryptography and protocol-level integrations so canisters can directly hold and move assets on other chains—this powers ckBTC, ckETH, etc. ck-tokens are 1:1 “twins” backed by on-chain reserves, redeemed trustlessly via canisters. (Internet Computer)
What a hypothetical ckZEC would require:
- Network integration: Similar to ICP↔Bitcoin, ICP would need to parse Zcash blocks/headers and track UTXOs—at minimum for transparent ZEC (t-addresses). That’s feasible because Zcash inherits Bitcoin-style consensus and secp256k1 for the transparent pool. (Internet Computer)
- Threshold signing: ICP already does threshold ECDSA/secp256k1 for Bitcoin/Ethereum; that maps to Zcash transparent addresses so a reserve address could be controlled by ICP canisters. (Internet Computer)
- Bridging model: Users deposit ZEC to the reserve address → canister mints ckZEC (ICRC-1/2) 1:1; redemption burns ckZEC → canister sends out ZEC. This mirrors ckBTC. (Internet Computer)
Hard part: shielded ZEC.
- Holding/moving shielded funds from inside a canister would require generating Orchard spend proofs (Halo2) and carefully handling keys/memos—heavy computation and new security/privacy design. Most pragmatic first version would keep reserves transparent (t-addr) and optionally use viewing keys for auditability; later, explorers could research canister-side proof generation or hybrid designs (proofs off-chain, signatures on-chain). (Zcash)
Status today: ICP officially supports ckBTC/ckETH and EVM chains; Zcash isn’t listed as an out-of-the-box integration yet. Technically doable (especially t-addr ckZEC), but it would need an engineering proposal and implementation akin to the Bitcoin integration. (Internet Computer)
TL;DR answers
- How Zcash works: UTXO chain with optional shielded transfers using Halo2/Orchard and Unified Addresses; no trusted setup since NU5. (Z.Cash)
- Run a node: Use zcashd (C++) or zebrad (Rust). Both are documented; Zebra even ships a Docker image. (GitHub)
- WASM: You won’t run a full node in WASM, but Halo2 and wallet/light-client logic compile to WASM; several guides and repos show how. (Zcash)
- ckZEC via ICP chain-key: Plausible for transparent ZEC first (like ckBTC’s model). Full shielded ckZEC is possible but much more complex (proof generation, key handling, privacy guarantees). Not an official integration (yet). (Internet Computer)
If you want, I can sketch a concrete ckZEC architecture (components, message flows, and an MVP deployment plan on ICP) tailored to your stack.