Grant Application - Zcash Wallet State Integrity: Self-Healing Transaction History

Revision — September 15, 2026: The request is now $3,000 for ten weeks, covering only #3005 and #3009. The original $8,500 / three-issue scope is superseded.

Updated GitHub application

I have removed #2918 from the funded scope. The public-view change proposed there was declined in PR #2919 because nullable trust status is intentional, and the related decoding failure was addressed in Swift SDK PR #1945. My original proposal should have accounted for this.

Remaining scope and why it matters

  • #3005: recover unusable stored transaction data. Raw bytes can be present but fail to parse. That presence suppresses retrieval of a usable copy, leaving the transaction’s recognition contribution skipped. PR #3006 explicitly links this follow-up. The benefit would be recoverability through the existing retrieval pipeline; this is not a claim of a fund-theft vulnerability.
  • #3009: repair late shielded attribution. If funding ownership becomes known after storage, an internal shielding transfer can remain indistinguishable from an external receipt to downstream history consumers. The issue describes an offline repair using stored transaction bytes and viewing keys. It was expressly left outside #3006’s transparent-only replay scope.

Both issues were opened by Kris Nuttycombe on August 25 and remain open at this revision. The related #3006 PR continued receiving commits on September 14. These are specific residuals of current wallet work.

#3004 supplies real-wallet context for discovery-order problems: eight stored prevout transactions paying later-imported account addresses remained unrecognized. That is not a reproduction of either remaining issue, and its fix is not included in this grant.

The initial work covers reproducible fixtures on pinned baselines and coordination of the repair designs and branch dependencies, especially the #3006 dependency.

Deliverables, budget and schedule

The total request remains $3,000 over ten weeks, with two requested payments:

  • $1,500 startup funding: an advance at project commencement after grant execution and confirmation of useful non-duplicative contribution scope. It supports dedicated development time for reproduction, design and the first repair.
  • $1,500 at the midpoint, targeted for the end of week five: released after ZCG accepts reproducible fixtures and reviewed designs for both issues, the implemented #3005 repair with passing regression checks, and a linked midpoint report. Payment depends on accepted deliverables, not elapsed time alone.

Weeks six through ten complete #3009, upstream review iterations, one focused official mobile SDK integration check, compatibility notes and the final report. These remain required under the same grant, with no additional payment at completion.

$1,500 startup + $1,500 midpoint = $3,000. The ten weeks are a calendar delivery window, not a full-time staffing estimate.

If either issue is already resolved, overlaps another contributor’s work, or cannot be reproduced on the agreed baseline, I will report that and agree the appropriate scope, budget and treatment of any advance with ZCG before proceeding with affected work or requesting the next payment.

Hi @Foreveranka, welcome to the forum!

On your grant proposal, two of the three issues this application targets, librustzcash #3005 and librustzcash #3009 were opened by Kris Nuttycombe (ZODL) on 25 August as follow-up issues to librustzcash #3006 (Maintain transparent recognition under address-book growth via a durable involvement index)

The third issue, librustzcash #2918, is a one-line change to a view definition in zcash_client_sqlite’s wallet database.

What is your relationship with the librustzcash maintainers? Have you discussed these issues with @nuttycom, and if so, has he indicated whether he intends to address them himself as part of the #3006 work, or whether he’d welcome someone else doing so?

2 Likes

Hi @craftsoldier, thank you. This is a fair and important question.

I have not previously worked directly with the librustzcash maintainers, and I had not discussed #3005 or #3009 with @nuttycom beforehand. I identified these two items as open follow-up issues while reviewing #3006 and the related wallet-state problems.

Following your question, I asked @nuttycom whether he intends to work on these issues and whether external contributions would be welcome:

I will share an update here when he responds. If work on these issues is already planned, I will avoid duplicating it and instead focus, in coordination with the maintainers, on areas where an external contribution would be useful.

I also agree that #2918 is small in terms of the code change itself. The work around it is not limited to the one-line change; it also includes a regression test that reproduces the failure, compatibility checks against existing wallet databases, and downstream validation in a mobile SDK.

Thank you for submitting your proposal. After careful consideration by the ZCG and a period for community comments on the forum, the committee has decided not to advance this proposal.

We genuinely appreciate the work and dedication you put into your application and hope you’ll continue to participate and contribute to the Zcash community. Meeting minutes.