Retroactive Grant Application - zcrowd

GitHub application: Retroactive Grant Application - zcrowd · Issue #108 · Financial-Privacy-Foundation/ZcashCoinholderGrantsProgram · GitHub

Terms and Conditions

  • I agree to the Grant Agreement terms if funded
  • I agree to Provide KYC information if funded above $50,000 USD
  • I agree to disclose conflicts of interest
  • I understand that this grant program is only eligible for completed work, as it is a retroactive grant program. Applications for planned or partially completed work will not be considered. All completed work will be verified and accepted by its intended users or their representatives, who will confirm that the outputs meet the required quality, functionality, and usability before the work is listed as an option for Coinholder voting.
  • I agree that for any new open-source software, I will create a CONTRIBUTING.md file that reflects the high standards of Zcash development, using the librustzcash style guides as a primary reference.
  • I understand when contributing to existing Zcash code, I am required to adhere to the project specific contribution guidelines, paying close attention to any merge, branch, pull request, and commit guidelines as exemplified in the librustzcash repository.
  • I understand all grants are valued in USD but will be disbursed in Shielded ZEC. I acknowledge and accept that disbursement amounts may fluctuate based on the ZEC/USD exchange rate at the time of payment.

Application Owners (@octocat, @octocat1)

@Kylne700

Organization or Individual Name

Kylne700

Additional Team Members

None (no other human). zcrowd was built by an AI agent team (Claude, from Anthropic) working for its author, who goes by Kylne700 and is the only person named here. Code, tests, documentation and this proposal text were produced by that agent team. The repository README discloses this too (AI disclosure row).

How did you learn about the Lockbox: Coinholder Retroactive Grants Program?

The Q4 2026 call for proposals on the Zcash Community Forum: Q4 2026 Coinholder-Directed Retroactive Grant Program - Call for Proposals

Requested Grant Amount (USD)

$3,000

Category

Non-Wallet Applications

Project Summary

zcrowd tells a person, before they shield or unshield ZEC, how many earlier transactions look like theirs (same pool, about the same amount), so they can see whether their amount stands out. It runs offline on their own machine.

Project Description

An unshield shows its amount publicly, and so did the shield it came from. If nobody else moved about that amount into the same pool around then, an observer can pair the two halves. zcrowd reads the public record of shields, unshields and moves between the pools (Sapling, Orchard, Ironwood) and answers, per pool, RED (one earlier candidate), AMBER, GREEN or NO MATCH, and lists the matches. With --to the command line also warns about address reuse.

It ships as three things from one repository: a Rust command line tool (zcrowd), a small library for wallet developers (zcrowd-core, built on librustzcash; check --json gives a machine-readable answer), and a one-file web page. On Linux the command line check cuts its own network access first (seccomp and an empty network namespace); the web page has a Content-Security-Policy of connect-src 'none'. Both are checkable in five minutes (README section 3). Fresh chain data comes from a lightwalletd server over Tor by default, and the server is not trusted: transaction ids are recomputed and block links are checked (README section 9).

What a Zcash user can do today:

  • Open the live page zcrowd: how big a crowd does your Zcash amount hide in?, type an amount and get a verdict. The page holds a snapshot (a bundled mainnet sample of 31.65 days, to 2026-10-25), not live data. For current data use the command line zcrowd sync.
  • Download release v0.1.0 (Linux, macOS, Windows archives with SHA256SUMS) or build from source.

Measured on the bundled sample (README lines 61 to 72): of the 17,739 unshields in its last 14 days, 1,412 (8.0%) had exactly one earlier entry of about their amount, which is the RED case.

Limits, stated in README section 11: it looks at amount and timing within one pool only, not wallet or fee fingerprints or network addresses; GREEN means a crowd size, not that the transaction is private; the network cut stops only zcrowd itself.

Technical Approach (how you did it)

  • Rust workspace with two crates: zcrowd-core (decoding, ingest, scoring, on librustzcash) and zcrowd (command line). Edition 2024, Rust 1.90 or newer, MIT licence.
  • Decode: each mainnet transaction’s shielded and transparent parts are read to classify it as a shield, unshield, move between pools, or none of these; Ironwood is included. The decode tests run real fixture transactions (README section 12).
  • Score: for an amount typed by the user, earlier entries into each pool within a fee allowance are counted, with entries older than 14 days weighted half; the worst pool is shown by default (README section 5).
  • Data: a committed sample (fixtures/flows-sample.ndjson, 74,643 events) or a sync from lightwalletd over Tor (arti), never falling back to a direct connection (README sections 4 and 9).
  • Web page: built by node web/build.mjs from a template plus the sample; a parity test compares it with the Rust scoring on 1,008 cases (README section 12).
  • Checks: the README lists 140 tests (section 12) and tests/audit.sh, the project’s own offline privacy-check script (README section 3.2; it is a script in the repository, not a review by anyone outside the project). CI runs on Linux, macOS and Windows. Versions: v0.1.0 (release 2026-10-25) and commit d66f556 (2026-10-28), the state submitted to ZECATHON.
  • As of this proposal the repository has not been changed since 2026-10-28, so reviewers see exactly what was submitted.
  • CONTRIBUTING.md (Terms box 5): zcrowd does not have one yet. The repository stays unchanged until ZECATHON judging ends on 2026-11-22; I will add a CONTRIBUTING.md following the librustzcash style guides after that date.

Time Period of Work Completion

2026-10-24 to 2026-10-28 (first and last commit dates). Release v0.1.0: 2026-10-25.

Total Budget (USD)

$0

Budget Breakdown

  • Compensation:
    • $(USD): 0
    • Justification: No human development hours are claimed. The code was written by an AI agent team.
  • Technology/Software:
    • $(USD): 0
    • Justification: An AI subscription ran the agent team; no share of it is claimed. Open-source libraries only (librustzcash, arti, others listed in README section 14).
  • Infrastructure/Hosting:
    • $(USD): 0
    • Justification: GitHub Pages and GitHub Actions on the free tier.
  • Services/Contractors:
    • $(USD): 0
    • Justification: None.
  • Other:
    • $(USD): 0
    • Justification: None.
  • Total $(USD): 0

The requested amount is therefore not a reimbursement of costs; it is a request to recognise the delivered, verifiable tool.

Reason for the amount: the grant terms say awards recognise past outcomes, so this is not a cost refund. I claim no human development hours. The work took five days (2026-10-24 to 2026-10-28), it has no users yet (see Success Metrics), and no one outside the project has reviewed it. For scale, the five other Q4 proposals I read ask between $1,500 (Zcash Testnet Developer Suite, an 8-day tool) and $16,000. $3,000 is a request for the tool as it stands today.

Payout (shielded ZEC, unified address): u1nvf84hlrtsgm3n5k2wd3y4am6ql6xd20js8dcr2cemd2tvf6wqhdpq2a36n758alp87kcvr3jg0r7z32flp08txv8crmzma6n7at23f9v85svzutky3hd9ktzvh3x9sux8a9ydrqy0z24yyg8tausjjr2y7ke2j4m5kcczewqc5emvsg

Previous Funding

No

Previous Funding Details

N/A

Other Funding Sources

Yes

Other Funding Sources Details

zcrowd was submitted on 2026-10-28 to ZECATHON (https://thezecathon.com), a Zcash privacy hackathon listed as “zkSNARKs presents”, in the CORE & TOOLING track. Judging runs to 2026-11-22 and winners are announced on 2026-11-23 (dates from the event site). No prize has been received. A prize would be funding for the same work. ZECATHON’s published rules (six rules and an FAQ on its site) say nothing that limits other funding, and I found no separate terms page. This proposal locks on 2026-11-13, before the result is known, so I commit to posting the ZECATHON result in this thread on 2026-11-23 or the day it is published, whichever is later, so coinholders can weigh it in the vote. Another Q4 applicant (Void Market, issue 80) made the same kind of disclosure. No other funding was received or applied for.

Success Metrics

Plain facts, with no adoption claim:

  • Quantified problem, measured on the bundled sample: 1,412 of 17,739 recent unshields (8.0%) had exactly one earlier entry of about their amount (zcrowd/README.md at d66f5565bebc5bc500ab6a35f59b05c99346f907 · Kylne700/zcrowd · GitHub). The page and CLI let a user see where their own amount falls before sending.
  • Users: none known. The repository has 0 stars and 0 forks, no open issues, and I have no usage data (the tool sends nothing, so there is no telemetry). I know of no wallet that has integrated zcrowd-core.
  • Verifiability: the five-minute check in README section 3 lets anyone confirm the web page cannot send data and that check runs with its network cut. The 140 tests and CI runs are public.
  • Review: no review by anyone outside this project has been done. A separate review is welcome in this thread.

Proof of completion

Conflict of Interest Disclosure

No keyholder, FPF, ZCG or reviewer role, and no tie to any voter or reviewer that I know of. I entered zcrowd in ZECATHON as a participant and have no connection to its organisers beyond that (disclosed above). The work was produced by an AI agent team, disclosed above.

Community Forum Posting

  • I understand it is my responsibility to post a link to this issue on the Zcash Community Forums after this application has been submitted so the community can give input. I understand this is required in order for the community to discuss and vote on this grant application. Note: If you are unable to post on the forum (for example, due to new user restrictions), please leave a comment below, and we will adjust your posting permissions.