Title:
Orchard and UA for YWallet
Applicant name:
hanh
Pitch: A one-liner elevator pitch version of your proposal
Add Orchard features to YWallet Mobile and Desktop Apps
Total Request (USD):
$114400.00 USD
Have you previously received a grant from Zcash Community Grants (formerly called ZOMG) or ZF?
Yes
Please provide details:
-
Cold Wallet
-
BTCPay Server integration of Zcash
-
YWallet
Are you seeking or have you received funding from other sources for this proposed project?
No
Applicant background:
YWallet author
Background in OS, Database engine, and high frequency trading systems
Over 25 years of experience
Description of Problem or Opportunity:
The Zcash protocol recently activated NU5, which has the Orchard pool. Orchard is a big step forward for Zcash, and should have support within YWallet.
The Orchard pool is designed as a separate shielded pool from Sapling, and so requires a significant amount of wallet work to support sending transactions to and from the Orchard pool.
Proposed Solution: Describe the solution at a high level.
YWallet will implement full support for the Orchard shielded pool in its various wallets and SDKs. This includes full support for sending and receiving shielded Orchard funds in a way that works across all wallets.
We’ll implement smart note management, leveraging UA’s ability to include multiple address types.
Solution Format: What is the exact form of the final deliverable you’re creating?
YWallet Mobile and Desktop
-
Add support for all Unified Addresses
-
Add support for zcashd v5.0.0 mnemonic wallets
-
Add sending and receiving funds from Orchard
-
Lite client support for Orchard
-
WarpSync for Orchard, so that orchard blocks are synced at full speed.
-
Create an account from UA view key
-
Smart note management, leveraging UA’s ability to include multiple address types.
-
Note Management: Auto and manual shielding across all pools as recommended by “shielded by default”
Technical Approach: Dive into the how of your project. Describe your approaches, components, workflows, methodology, etc. Bullet points and diagrams are appreciated!
YWallet uses its own SDK (called zcash-sync), which features the “warpsync” algorithm that syncs the Zcash blockchain significantly faster. The main part of this grant is adding Orchard support to YWallet including extending warpsync to the orchard pool, adding support for unified addresses, and the ability to decode v4 and v5 transactions
The UI will also be extended to support Orchard features like the unified addresses and the separate Orchard pool.
Dependencies: What external entities is your project dependent on? What involvement is required from ZF, ECC, and/or other external organizations? Who would have to incorporate your work in order for it to be usable?
No external dependencies. A prototype has been built.
Execution risks: What obstacles do you expect? What is most likely to go wrong? Which unknown factors could jeopardize success? Who would have to incorporate your work in order for it to be usable?
A prototype has been built for Orchard/warpsync.
Smart note management is a work in progress. There could be an issue with finding the optimal combination of notes in complex cases but this should not affect normal users.
Unintended Consequences: What are the negative ramifications if your project is successful? Consider usability, stability, privacy, integrity, availability, decentralization, interoperability, maintainability, technical debt, requisite education, etc.
One of the big challenges of this work is that UI complexity will increase because of the additional shielded pool, and it will make UX worse for a while.
This could lead to user confusion and make YWallet and Zcash harder to use. Although the use of Unified Addresses will mitigate this substantially, for a transition period (while all Zcash users move over to the orchard pool from sapling), there will be increased complexity and confusion in the product.
Evaluation plan: What metrics for success will you share with the community once you’re done? In addition to quantitative metrics, what qualitative metrics will you commit to reporting?
Success criteria are:
- YWallet desktop and mobile apps have support for
-
Unified addresses
-
Send and Receive funds from the orchard pool.
- These features are deployed to 100% of mobile and desktop users of YWallet.
Hardware/Software total budget:
$114400.00 USD
Please provide justification for the total hardware/software budget:
The total budget is identical to the grant for ZecWallet since the project is of the exact same nature.
I replaced the part about FullNode (since YWallet does not have it) with support for UAs with multiple receivers and UA View keys.
Also, I added an intelligent note selection module that improves privacy taking ZIP 315 into consideration.
Together, they will provide a UX close to its intentions.
Services total budget (cloud, hosting, etc.):
$0.00 USD
Please provide justification for the total services budget:
N/A
Compensation total budget:
$114400.00 USD
Please provide justification for the total compensation budget:
N/A
Do you require startup funding?
No
Milestone 1 - estimated completion date:
12/01/2022
Milestone 1 - USD value of payout upon completion of deliverables:
$70000.00
Deliverable 1.1
Sinsemilla Hash
Deliverable 1.2
Warp Sync for Orchard
Deliverable 1.3
Refactorization of Warp Sync to support both Sapling / Orchard side by side
Milestone 2 - estimated completion date:
01/15/2023
Milestone 2 - USD value of payout upon completion of deliverables:
$20000.00
Deliverable 2.1
Smart Note Selection / Management - Shielded by Default
Milestone 3 - USD value of payout upon completion of deliverables:
$24400.00
Milestone 3 - estimated completion date:
02/15/2023
Deliverable 3.1
YWallet 2.0
Total proposed USD value of grant:
$114400.00 USD
How was the project timeline determined?
1 person working full time for 13 weeks (@ $220 / hr) = 220 * 8 * 5 * 13 = $114400
Application submission date:
09/20/2022
https://zcashgrants.org/gallery/25215916-53ea-4041-a3b2-6d00c487917d/32175613/