Orchard and UA for YWallet

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:

  1. YWallet desktop and mobile apps have support for
  • Unified addresses

  • Send and Receive funds from the orchard pool.

  1. 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

19 Likes

Seems like a no-brainer for me.

@hanh is there a place you’d prefer for user feedback? I’d been using Ywallet earlier for z2z messaging and noted down a few suggestions.

5 Likes

If you have a github account, the best place would be Issues · hhanh00/zwallet · GitHub
Maybe we could have a Ywallet category on the forum?

2 Likes

Github is fine for me. Testing and dev feedback provided by users, combined with a dev willing and able to take suggestions, is essential for a product to improve. I didn’t participate in the initial beta testing but I know others definitely did and likely helped Ywallet a lot. I’d encourage all users of Ywallet who have the time to help @hanh make the best app possible by leaving feedback for him.

There’s nothing more that I would like than for Ywallet to be a trustworthy wallet for Zcash for years to come. Having working and consistent wallets is mission-critical for Zcash. And without Ywallet, 99% of Zcashers would have been literally unable to use Zcash for a(n) (ongoing) portion of this year.

In order for a currency to ever become acceptable, it has to be trustworthy. It has to be available whenever you need it. We need to avoid fits and starts, and I see supporting the continued development and maintenance of Ywallet as a way to do this.

4 Likes

Maybe there should be a feedback section on the forums.

1 Like

Hello @hanh , on behalf of the @ZcashGrants committee please allow me to extend our thanks for your application. We are currently in the process of reviewing your latest grant and hope to reach a decision soon. We have the following questions that need clarifying for the committee members:

First, please explain how ZecWallet development, with its Full Node and Desktop Lite clients (for Mac, Windows, and Linux) and Mobile Apps (for Android and iOS) is comparable with the development hours required for Ywallet, which is built with a single cross-platform framework (Flutter)?

Additionally, when we discussed your previous Ywallet grant, the funding was based off of the historic average developer benchmark of ~$100 /hr. Since the grant was retroactive we had no way of tracking hours spent in development and testing; therefore it was convenient to map it to other wallet applications we had funded since the work was delivered as a completed project. The top down estimates from the previous grant were assumed to be based on the standard developer rate. The grants committee was paying past development hours, not purchasing a software product. As such, Ywallet itself (licensing, distribution, roadmap, etc) remains free and open as intended and no profit was made on top of raw development hours billed. Since we are a grants organization, all funds go to the greater good of the Zcash ecosystem and any profit on one project comes at the expense of another.

Since the new grant is new development, the work is presented as time and material. Being new work on a bespoke product, there is no way to compare Ywallet feature development to other wallets outside of dev-to-dev hours and this is in line with other grants which bill on dev hours. From our previous conversations, I respect your preference for working alone and understand you will be completing this code as a sole developer with your time being charged now at $220/hr. This is 2.2x the average rate normally applied to grants, which is too high. Please provide an explanation that justifies the high cost of this grant or bring the cost down to rate more in line with the market.

1 Like

ZecWallet Lite is also built on a cross-platform framework: React Native. The difference is with ZecWallet full node, is a separate code base that relies on zcashd for its wallet. I substituted the time needed for this part with an implementation of multi-recipient UA. Note that at this point, UA in ZW is only for Orchard. I think the vision for UA is to offer a hassle-free address for every user and for that, we need to combine transparent, sapling and orchard addresses together. IMO smart note management is harder.

  1. With all due respect, may I point out that for Add Orchard to Zecwallet Mobile and Desktop Apps
  • 1 person working full time for 13 weeks (@ $200 / hr) = 200 * 8 * 5 * 13 = $104000
  • 1 person working part time (10%) for 13 weeks (@ $200 / hr) = 200 * 4 * 13 = $10400
    Total = $114,400

So I’m asking 10% more than a developer than the committee approved without past track record.
He remained anonymous.

  1. I believe projects should be evaluated based on their value provided and difficulty.
    If they are priced based on the time by developer, I can “hire” a few people.
    More seriously, I believe applying a flat 100$/h is detrimental to attracting people of high caliber. I am sorry but with my skill and experience, I will not work for 100$/h.

I think it is giving a bad message because every developer is not worth the same.

  1. Regarding YWallet price. IMO, if you had to build it again, you would spend much more.

  2. Regarding the price of Orchard integration. Trezor grant for Orchard is 130k, ZW grant for Orchard is 110k, and you have a full team at the ECC working on their wallet, I don’t know the cost but I think it’s higher than 100k.

In conclusion,

The great Jim Rohn once said, “You don’t get paid by the hour. You get paid for the value you bring to the hour.”

5 Likes

$200-220/hr does not seem high for the work that @hanh is doing imho. Some folks doing more mundane data engineering work are charging close to that nowadays… but here we have one of the few folks in the world who can do this orchard integration and that rate is “too high”? Doesn’t makes sense to me.

Do the other apps even have features like note management? (I don’t think so). Point being, the features seem richer in YWallet so compensation to the dev for that richness and value-add make sense to me.

2 Likes

Appreciate the work you are doing on YWallet @hanh. It has held up well through the recent spam challenges and I enjoy using it.

4 Likes

I appreciate the diligence @dontpanicburns and @ZcashGrants are doing in working with @hanh.

I’m not an expert whatsoever on being able to price software development. However, I do have this feeling in my gut that the value brought by a wallet that actually uses a single user facing UA across pools, can survive spam attacks, has lots of other features, and consistently works will more likely than not be worth as much or more than the current price tag.

In addition, I have a feeling that alienating or discouraging the developer of the best working mobile wallet would be much more detrimental in the long run than paying the ~$50,000 difference between $100 or $220 per hour rate for the grant in question. Furthermore, in general, I don’t necessarily see how a $100 flat rate for all developers (or a flat fee for any type of skill) is the best way to go. Some people are just more efficient or valuable per unit time than others, not much other way to reflect that than in the dollar per unit time figure…

I know the job of evaluating all the grants and trying to fairly allocate resources is not an easy one, but I really hope that we can continue on our way to improving Ywallet to become more and more user-friendly (which is of the utmost priority for all Zcash products in general) and certainly simplified UA/Orchard support is a way to get to this important goal.

2 Likes

Commenting as myself and not on behalf of the rest of zcg committee:

To be clear, all development of Ywallet to date has been funded at the average developer rate of $100/hr. This was the purpose of the retroactive funding. The 100/hr rate is an average and different projects and roles can be higher or lower. A few projects have been highlighted in this thread that are higher, and each was evaluated at the time it was presented. It is entirely possible Ywallet can be funded at a higher rate with good justification. Ywallet is a great application, prior to the retroactive funding all of its features were developed at $0/hr. Now as new features come, the rate is 2.2x higher than was funded last month. On the $114,400 grant; the amount asked is $62,400 higher than the $52,000 it would have been if included with the retroactive; this is non-trivial. Why was the previous rate acceptable in September and not now?

ZCG is currently funding 4 wallet implementations and ZCG funding will very likely disappear at the end of zip-1014. It would be a tragic end to Zcash if all projects funded by ZCG turn out to be unsustainable and couldn’t benefit the ecosystem on their own. It is my expectation these projects find a way to either: self-monetize, find additional sources of funding (grants & donations), or transition to all volunteer development efforts (which Ywallet has historically done).

Are any efforts being made to find other sources of funding for Ywallet or is it correct to assume development will be abandoned if it is not funded by ZCG?

1 Like

Because I didn’t base the pricing of YWallet retroactive grant on an hourly rate. As a matter of fact, my grant proposal does not mention an hourly rate. In my opinion, it should have been higher but I also wanted to give a package “discount”. Orchard/UA was not included because it represents a lot of new code development that is specific to Zcash.

I expect the best wallet to continue to exist through donations, DAO, grants, etc. And I hope this wallet is YWallet.

4 Likes

I’m confused here - why is extending the fastest wallet being nickel & dimed?

It’s not that much money, its going to someone with an excellent track record of delivering, and the whole point of these grants is to encourage external developers.

Is it still politically inconvenient that Ywallet is fast & survived the spam when all others died…or have we got over that?

A fast reliable wallet is vital, just fund it.

3 Likes

Because gathering community feedback and acknowledgement before funding a project asking for a higher than an average rate is a good practice imho. I appreciate all of the comments in this thread because it helps give voice to the community and makes the process feel more authentic than debating everything that comes through in private.

7 Likes

I think there is room for all forms of communication - public, private, semi-public. The main goal in regards to communication should be trying to reach understanding between applicant, grants committee, and community. Sometimes private talks are good for that, sometimes public talks are good for that, etc. Informed debate and decisions can only be made on a foundation of understanding/facts. So I am appreciative of @dontpanicburns effort to ask questions and @hanh’s honest answers, as well the efforts you all have made in other meetings.

From what I can tell, it seems that a strong wallet that works all the time is such a high priority in the community, combined with the fact that @hanh is not an “unknown” quantity and will very likely deliver exactly what is promised in regards to UA/Orchard implementation, that people are very comfortable with the rates he quotes. In addition, there are other features promised beside just UA/Orchard in Ywallet - getting the warp sync algorithm working for Orchard also seems like a big plus. DAG-sync from ECC may represent a boon to wallets that rely on ECC’s SDK, but there is also the possibility that warp sync may be better than DAG-sync (I haven’t seen a solid apples to apples comparison between the two). Or at the very least, it may be prudent to continue to support complementary syncing software development to increase diversity and resilience in case one falls behind or one team must be forced to pivot to other problems.

(As an aside, it seems reallyyy hard to be able to estimate how many hours it may take for any complicated project. Most budget estimates are exactly that - estimates. This is one of the reasons why many jobs are based on salary - at a certain point the job becomes too sprawling to be able to do on a per-project basis. Estimates are really hard to make accurately IMO and a lot of it comes down to trust. Trust that the applicant is making an honest effort to estimate their hours and trust that they have the competence to get the job done as best they can. Of course, there are also additional factors like competition - are there two bids to do the exact same thing with an equal likelihood of success? In that case a “bidding war” to get costs lower may occur. And while ZCG is funding 4 different wallets at the moment, I don’t think they are all promising the same thing, and I think seed funding different wallet teams is necessary to give people a chance to see different wallets in action, which would help make informed decisions about future funding for the different teams. Also, there is something to be said for diversity in perhaps the most critical product Zcash has to offer - user facing shielded wallets. What happens if one has a critical bug or one team gets pulled away for some reason? I applaud ZCG for funding these different wallet efforts, I don’t see it as wasteful.)

Lastly, I know how hard text-based, asynchronous, and public communication can be when trying to discuss something as personal as how “valuable” someone is. While we can all try to hold ourselves to a high standard of polite discourse, it is nonetheless a touchy subject that I would urge all involved to handle gracefully (in general, not saying anything is amiss here). It is also the sort of thing that I think could make use of private discussions between applicant and grants committee as text-based communication can leave out a lot of context and the asynchronous component can leave parties stewing about forum posts for hours or days whereas a phone call can consolidate the effort the discussion requires to a single event, while still allowing public review and input before final decisions are made.

Thanks for reading the long post, I hope some stuff in there is useful :sweat_smile:

5 Likes

One question, will this Orchard implementation exclusive for Zcash in Ywallet? Or is there any plan to also add Orchard for Ycash, assuming Ycash folks have intention to adopt Orchard. If so, what about Orchard licensing in regards to its use by an old Zcash fork?

Asking because I haven’t see any plan by @hanh to build a Zcash-specific wallet.

1 Like

Orchard/UA is exclusive specific to zcash. Ycash has no plans to add Orchard. @hloo, please correct me if I am wrong.

Edit: Specific may be a better word than exclusive.

1 Like

That is correct: Currently there are no plans to add Orchard to Ycash.

@hanh & Zcash Community members, I am pleased to announce that at the most recent meeting, the @ZcashGrants Committee has voted to approve the “Orchard + UA for YWallet” grant submission!

9 Likes

I can’t wait to have “one UA to rule them all”!