Skip to main content
t2z - portable libraries for transparent → shielded transactions

What is t2z?

t2z (transparent-to-z) is a multi-platform library for building Zcash transactions that send from transparent inputs to shielded Orchard outputs. It implements the PCZT (Partially Constructed Zcash Transaction) format defined in ZIP 374, enabling:
  • Multi-party transaction construction — Different parties can contribute inputs, signatures, and proofs
  • Hardware wallet support — External signing via get_sighash + append_signature
  • Cross-platform — Available for TypeScript, Go, and Kotlin

Quick Start

Install and build your first transaction in minutes.

Live Demo

Try the interactive transaction builder.

API Reference

Complete function documentation.

GitHub

View source and contribute.

Available SDKs

TypeScript

@d4mr/t2z-wasmBrowser & Node.js via WebAssemblyAvailable

Go

github.com/d4mr/t2z/sdks/goNative Go via CGO/UniFFIAvailable

Kotlin

com.d4mr.t2zAndroid & JVM via UniFFIAvailable

Why t2z?

🔐 Privacy Upgrade Path

Enable existing transparent-only Zcash infrastructure to send to shielded addresses without requiring a full wallet implementation.

📦 PCZT Format

Full ZIP 374 support allows transactions to be constructed across multiple parties, systems, or hardware devices.

⚡ No Downloads Required

Unlike Sapling which requires ~50MB proving key downloads, Orchard uses Halo 2 — the proving key is built programmatically on first use (~10 seconds, cached thereafter).

🦀 Battle-Tested Core

All SDKs share the same Rust core built on official Zcash libraries (zcash_primitives, orchard, pczt), ensuring consistent behavior across platforms.

Transaction Flow

A t2z transaction follows this flow:
1

Propose

Create a PCZT from transparent inputs and payment outputs.
2

Verify (Optional)

Verify the PCZT matches the original request before signing.
3

Sign

Add signatures for each transparent input.
4

Prove

Generate Orchard zero-knowledge proofs.
5

Finalize

Extract the final transaction bytes for broadcast.

Learn the Flow

Dive deep into each step of the transaction flow.

Supported Features

FeatureStatus
Transparent → Orchard✅ Supported
Transparent → Transparent✅ Supported
Multiple inputs✅ Supported
Multiple outputs✅ Supported
Memos✅ Supported
ZIP 317 fees✅ Automatic
External signing✅ Supported
Sapling outputs❌ Not supported
Orchard inputs❌ Not supported
t2z is designed specifically for transparent-to-shielded use cases. For full wallet functionality including shielded-to-shielded transactions, see Zashi or Ywallet.
  • ZIP 374 — Partially Constructed Zcash Transaction Format
  • ZIP 244 — Transaction Identifier and Signature Validation
  • ZIP 317 — Proportional Transfer Fee Mechanism
  • ZIP 321 — Payment Request URIs