Skip to content

Zcash Evaluation

Evaluation of Zcash’s proving system and potential integration with SIP Protocol.

Zcash pioneered shielded transactions using zero-knowledge proofs. SIP evaluates integration points while maintaining its application-layer approach.

PoolProtocolStatus
SproutBCTV14Deprecated
SaplingGroth16Active
OrchardHalo 2Latest
PropertyZcashSIP
Amount privacyYesYes (Pedersen)
Sender privacyYesYes (Stealth)
Recipient privacyYesYes (Stealth)
On-chain shieldingYesNo (app layer)
Trusted setupYes (Sapling) / No (Orchard)No (Noir)

Use Zcash shielded pool as swap destination:

Ethereum → SIP → NEAR Intents → Zcash (shielded)

Pros:

  • Leverage Zcash’s proven privacy
  • Full on-chain shielding

Cons:

  • Requires Zcash RPC access
  • Limited to ZEC as output

SIP includes Zcash RPC client for shielded operations:

import { ZcashRPCClient } from '@sip-protocol/sdk'
const client = new ZcashRPCClient({
rpcUrl: 'http://localhost:8232',
rpcUser: 'user',
rpcPassword: 'password'
})
// Create HD account
const { account } = await client.createAccount()
// Get unified address
const { address } = await client.getAddressForAccount(
account,
['sapling', 'orchard']
)
// Send shielded transaction
const txid = await client.sendShielded({
from: zAddress,
to: recipientZAddress,
amount: 1.5,
memo: 'Private transfer'
})

Verify Zcash proofs within SIP:

// Not implemented - future consideration
const isValid = await verifyZcashProof(proof, publicInputs)

Orchard uses Halo 2 for trustless proofs:

FeatureBenefit
No trusted setupEliminates ceremony risk
Recursive proofsProof aggregation
IPA commitmentsSmaller proof size
AspectNote
ComplexitySteep learning curve
PerformanceSlower than Groth16
EcosystemLess tooling than SNARKs

SIP chose application-layer privacy over protocol integration:

  1. No blockchain changes - Works with existing chains
  2. Flexibility - Not tied to single privacy technology
  3. Speed - Faster iteration than protocol changes
  4. Multi-chain - Privacy across all supported chains
ApproachProtocol LevelApplication Level
Privacy strengthStrongerGood
ImplementationHarderEasier
Blockchain changesRequiredNone
FlexibilityLowerHigher
// Create account (modern HD approach)
const { account } = await client.createAccount()
// Get address for account
const { address } = await client.getAddressForAccount(
account,
['sapling'], // Receiver types
0 // Diversifier index
)
DeprecatedReplacement
generateShieldedAddress()createAccount() + getAddressForAccount()
z_getnewaddressAccount-based approach
// Get balance
const balance = await client.getShieldedBalance(address)
// List transactions
const txs = await client.listShieldedTransactions(address)
// Send shielded
const txid = await client.sendShielded({
from: sender,
to: recipient,
amount: 10,
memo: 'Optional memo'
})

Zcash Unified Addresses (ZIP-316) combine multiple receiver types:

u1...
├── Orchard receiver (if available)
├── Sapling receiver
└── Transparent receiver (optional)
// Generate unified address
const { address } = await client.getAddressForAccount(
account,
['orchard', 'sapling', 'p2pkh'] // Include all receiver types
)
MetricZcash SaplingZcash OrchardSIP (Noir)
Proof gen~40s~2s~3s
Proof size~1KB~5KB~200B
Verify~10ms~10ms~10ms
Trusted setupYesNoNo
  1. Zcash as privacy pool - Route through shielded pool
  2. Proof interop - Verify Zcash proofs in SIP
  3. Viewing key compat - Share viewing keys across systems
  1. Direct Zcash protocol modification
  2. Sprout pool support (deprecated)
  3. Mining/consensus integration