Skip to content

Grant Application: FROST Multi-Signature UI for Zcash Orchard #12

Description

@lamb356

Project Overview

Project Name: FROST Multi-Signature UI for Zcash Orchard
Category: Wallets
Budget: $42,000 USD (paid in shielded ZEC)
Timeline: 12 weeks from approval (Milestone 1 already complete)
Developer: Carson (lamb356)
Repository: https://github.com/lamb356/frost-ui


Summary

Production-ready web UI for FROST threshold signatures on Zcash Orchard transactions, fully integrated with the Zcash Foundation's frostd server. This project delivers what previous attempts could not: a working Zcash Orchard (RedPallas) implementation with 76+ tests proving cryptographic correctness.


Problem

Zcash users lack a production-ready interface for threshold signatures on Orchard transactions. While the FROST protocol (RFC 9591) and frostd server (v1.0.0) exist, no broadly adopted UI:

  • Integrates with frostd's REST API
  • Supports Zcash Orchard (RedPallas curve, ZIP-312 rerandomization)
  • Provides end-to-end encryption for signing ceremonies

Target Users:

  • DAOs managing Zcash treasuries (3-of-5 approval)
  • Families with shared wallets (2-of-3 inheritance)
  • Businesses requiring multi-signature transactions
  • Privacy-conscious users wanting distributed key custody

Solution

Production web UI for FROST threshold signing featuring:

  • Full frostd REST API integration (8 endpoints)
  • XEdDSA authentication via Rust WASM
  • E2E encryption (X25519 + HKDF + AES-256-GCM)
  • Both Ed25519 and Zcash Orchard (RedPallas) support
  • Message-driven state machines with production validation

Key Generation Model: This project uses trusted dealer key generation, where a coordinator generates and distributes key shares. Distributed Key Generation (DKG) is explicitly out of scope and planned as future work.


What's Already Built (Milestone 1 Complete)

Component Status Evidence
frostd REST client 8 endpoints
XEdDSA auth (Rust WASM) Matches frostd spec
E2E encryption X25519 + AES-GCM
State machines Phase validation, dedupe
Ed25519 signing 33 live frostd tests
Zcash Orchard 34 live frostd tests
CI/CD Pinned Rust 1.88.0, wasm-pack 0.13.1, Node 20.19.0

Total: 76+ tests proving cryptographic correctness


Threat Model

What We Protect Against:

  • Nonce reuse: Participant state machine tracks nonceMessageId
  • Replay attacks: Deduplication + freshness validation (10-min window)
  • Message tampering: E2E encryption (X25519 + AES-256-GCM)
  • Phase violations: Monotonic phase validation
  • Backend mismatch: Validate backendId before signing

Key Custody Model:

  • Private key shares encrypted in browser localStorage
  • PBKDF2 (100,000 iterations, SHA-256) derives AES-256-GCM key from user password
  • Uses Web Crypto API (crypto.subtle)
  • Keys never stored unencrypted or transmitted
  • frostd only sees E2E encrypted payloads

Non-Goals (Out of Scope):

  • Distributed Key Generation (DKG) - future work
  • Hardware wallet integration
  • Mobile app

Milestones

Milestone 1: Core Implementation ✅ COMPLETE

Status: Delivered at-risk to demonstrate capability and reduce ZCG risk
Payment: $18,000

Deliverables:

  • frostd client (8 REST endpoints)
  • XEdDSA WASM module
  • E2E encryption module
  • Ed25519 FROST WASM
  • Zcash Orchard WASM (RedPallas, ZIP-312)
  • Production state machines with validation
  • 76+ automated tests
  • CI/CD pipeline (reproducible builds)

Verification Checklist for ZCG:

git clone https://github.com/lamb356/frost-ui.git
cd frost-ui
npm install
npm test  # 9 Zcash WASM tests

# Optional with frostd:
npm run test:ed25519 -- https://localhost:2745  # 33 tests
npm run test:zcash-live -- https://localhost:2745  # 34 tests

Payment Trigger: ZCG committee verification of test suite + at least 1 community member confirms successful ceremony completion during forum review period.


Milestone 2: User Testing & Refinement

Duration: 5 weeks | Payment: $8,000

Deliverables:

  • 10 user testing sessions (screen-recorded)
  • Session feedback synthesis report
  • UX improvements based on findings
  • Error recovery flows (network failures, timeouts)
  • Security regression test suite

User Testing Methodology:

  • Recruit from Zcash Community Forum
  • 45-minute sessions: setup → ceremony → debrief
  • All sessions screen-recorded for analysis

Acceptance Criteria:

  • Primary KPI: 8/10 (80%) complete ceremony unassisted
  • All critical UX issues documented and resolved

Payment Trigger: User testing report + merged UX improvements


Milestone 3: Documentation & Deployment

Duration: 3 weeks | Payment: $6,000

Deliverables:

  • Comprehensive user guide
  • 2 video tutorials (basic setup + advanced ceremony)
  • Production deployment guide
  • Tagged release v1.0.0

Acceptance Criteria:

  • New user completes setup in <30 minutes
  • Documentation reviewed by 2 community members

Payment Trigger: Published docs + v1.0.0 release


Milestone 4: Ecosystem Integration

Duration: 4 weeks | Payment: $10,000

Deliverables:

  • Integration guide for wallet developers
  • API documentation with examples
  • Reference integration with one partner (ywallet, zingo, or community project)
  • Published npm package for FROST WASM modules

Acceptance Criteria:

  • At least 1 third-party integration demo
  • API docs and npm package published

Payment Trigger: Integration demo + published docs + npm package


Timeline

Milestone Duration Expected Completion Payment
M1: Core Done Upon approval $18,000
M2: User Testing 5 weeks +5 weeks $8,000
M3: Documentation 3 weeks +8 weeks $6,000
M4: Integration 4 weeks +12 weeks $10,000
Total 12 weeks $42,000

Budget

Rate: $100/hour (market rate for crypto/WASM development)

Milestone Hours Cost
M1: Core 180 $18,000
M2: User Testing 80 $8,000
M3: Documentation 60 $6,000
M4: Integration 100 $10,000
Total 420 $42,000

At-Risk Development Note: M1 was completed at-risk before funding to demonstrate technical capability and reduce ZCG's investment risk. This is compensation for delivered, verifiable value—ZCG pays only after confirming M1 is complete and functional.


Team

Carson (lamb356) - Solo Developer

GitHub: https://github.com/lamb356

Selected Outcomes:

  • Delivered production FROST UI with 76+ tests before requesting funding
  • First public Zcash Orchard (RedPallas) implementation with frostd integration
  • Built 3 Rust WASM modules (xeddsa, frost-ed25519, frost-zcash)
  • Created fully reproducible CI pipeline

Portfolio:

Structure: Solo developer. User testing sessions screen-recorded for post-session analysis.


Communication Plan

  • Minimum: Monthly forum updates (ZCG requirement)
  • Planned: Bi-weekly updates (exceeds minimum)
  • Updates posted before each milestone payout request

Each update includes:

  • Progress against milestone checklist
  • Risks and mitigations
  • Demo video or screenshots
  • Link to latest release

Response Time: <48 hours for ZCG questions


Risk Management

Risk Likelihood Impact Mitigation
frostd API changes Low High Pin to v1.0.0, monitor releases
Browser crypto limitations Medium Medium Cross-browser testing
User ceremony confusion Medium Medium Extensive user testing (M2)
Integration partner delays Medium Low Backup targets identified

Maintenance

Post-Grant Support: 6 months

  • Security vulnerability response: <48 hours
  • Critical bug fixes
  • frostd compatibility updates

Security Reports: https://github.com/lamb356/frost-ui/security/advisories


Differentiation

Aspect Previous Attempts This Project
Zcash Orchard Not delivered ✅ 34 tests passing
frostd integration Incomplete ✅ All 8 endpoints
Test coverage Minimal ✅ 76+ tests
CI/CD None ✅ Reproducible builds
Budget $91,700 $42,000 (54% less)

Conflict of Interest

No conflicts to disclose at time of submission.


Licensing & Compliance

  • License: MIT
  • KYC/AML: Will comply with ZCG requirements
  • Payout: Shielded ZEC to z-address or unified address

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions