GrantProposals-2017Q4 icon indicating copy to clipboard operation
GrantProposals-2017Q4 copied to clipboard

Guarda Zcash light wallet

Open AndrewGuarda opened this issue 7 years ago • 57 comments

Guarda Wallet team application for Zcash foundation grants 2017Q4

Motivation and overview

We are a group of blockchain enthusiasts with background in software development and product management. We have a distributed team from EU, Russia and Ukraine. At the moment we have experts from IT, fintech, blockchain, security, marketing, design, UI/UE.

Recently we have united together to develop a project called Guarda. Mobile cryptocurrency wallet which would make using any cryptocurrency easy, accessible and secure.

Our wallet for the first currency was launched this week in Google Play

Zcash is one of our favourite blockchains thanks to technological supremacy, great development team and clear value proposition. As a team of crypto enthusiasts we believe in anonymity as key feature of decentralized currencies and blockchain technology overall. Zcash already is in our development roadmap. However development of Zcash light wallet is yet an issue due to the lack of open source mobile light wallet implementations.

Technical approach

We are guided by several core principles:

  • Building trustless solutions. If customer wants to rely on other cryptocurrency node he\she can type in this information.
  • Multicurrency approach. We thoroughly choose best cryptocurrencies and willing to support them all.
  • Respect customers privacy. We do not require any KYC or customers data. No registration is required as well.
  • Never touch customers funds. The proposed wallet is a light wallet allowing customer manage his\her keys himself
  • Never touch fiat. Purchase of cryptocurrencies will be delivered in collaboration with professional payment gateways.

In general the wallet consists of the following parts:

  • Server side node Blockchain community developed solution. Open-source and distributed free
  • Lightwallet library This allows you to work with the cryptocurrency blockchain, without the additional overhead of having to write your own integration code for the platform. Usually the library interacts with the server side node through JSON RPC. As we are applying for a grant we believe this part of our work should be open sourced and available for public on a royalty free basis.
  • GUI layer Customer experience oriented graphic user interface running on mobile operating system of the mobile phone.

High level architecture can be described as follows: hl arch Network HL architecture: net hl arch

We have three basic stages for the wallet implementation.

  • Everything starts from the own blockchain nodes deployment. We have own primary and backup nodes for the wallet support. In addition we offer a range of third party nodes that can be applied by user. We are using sophisticated proxy for the node balancing in order to get up-to-dated blockchain status.

  • The next step is mobile client library implementation. It is used by mobile wallet to manage transactions and abstract blockchain, security, cryptography layer from GUI developers.

  • The last stage is the design implementation of mobile application. We are thriving to use trendy and cozy interfaces in our wallets to provide best customer experience.

We are developing light wallet which means that user private keys are always under the user control. The private keys are always on the customer device and managed only by user. The wallet signing a transaction on the device side and transmit the signed transaction over Internet using ssl to blockchain node.

The Guarda wallet implemented functions are:

  • send coins
  • receive coins
  • exchange cryptocurrencies to zcash,
  • PIN code app protection

To be implemented in following two months (before Zcash wallet to be released):

  • purchase zcash for the fiat . Our committed partners for card transactions and SEPA payments are available to be disclosed upon request from Grant Review Committee.
  • other node usage
  • mnemonic phrase
  • password encrypted keyfile

Team background and qualifications

  • Paul S., CEO, has three years experience in blockchain, 10 years in fintech. Certified banking cards security and business expert. Launched over 6 successful projects within last three years. Paul interests are: cryptocurrency exchanges, wallets, smart contracts, oracles.
  • Ondrej H., product manager, has 15+ experience in IT product management. Has in the portfolio projects from mobile ads, SaaS enterprise solutions, high load IT solutions, mobile app development and production.
  • Vlad A., senior Android developer, 7+ years of mobile development
  • Valentin S., senior Android developer, 6+ years of mobile development
  • Alex N., senior iOS developer, 6+ years of mobile development
  • Roman L., senior backend developer, expert in blockchain, has 3+ years of experience for blockchain development, cryptocurrency mining, etc.

Evaluation plan

We have quite tiny and reasonable schedule for the wallet implementation. The distributed team with a variety range of professionals gives us ability to launch in the parallel main project phases: blockchain node deployment, mobile library and wallet GUI development. We are using agile approach with continuous delivery, so in any time of moment we are ready to present our progress and performance to the Grant Review Committee.

Security considerations

Security is our priority. The light wallet approach itself is our vision for the secured blockchain wallet. The customer private keys are the most important and sensitive aspect. We store keys in OS secure storage in an encrypted form. We are using additional product features to increase the product resistance for the attacks. The team has already implemented PIN-code for the wallet access, password keyfile encyption is expected by the middle of October. At the node side we are using network security tools, like a WAF with ML.

Schedule

We are estimated the whole zcash wallet duration as 11 weeks:

  • 1 week hosting & node setup, UE
  • 2 week node proxy, setup net security tools, mobile library, UI mock ups
  • 3 week mobile library development, UI prototyping
  • 4 week mobile library development, UI design
  • 5 week mobile library development, mobile app implementation, UI design
  • 6 week integration with third parties services, mobile app implementation
  • 7 week mobile app implementation
  • 8 week alfa release, QA, bug fixes, mobile app implementation
  • 9 week QA, bug fixes, beta-release
  • 10-11 week Project Risks worked

Budget and justification

We have estimated preliminary costs estimation for 60K USD for the project that will cover almost all issues.

Facebook Twitter email github

AndrewGuarda avatar Sep 13 '17 07:09 AndrewGuarda

Congratulations for the launch of your Ethereum wallet! Is it open-source? How much of that code will be reused for the Zcash wallet? What are your thoughts about supporting Zcash shielded transactions and z-addresses?

tromer avatar Sep 17 '17 14:09 tromer

Thanks! It's been a rush :) However a lot to be done in the future.

  1. For the moment not. However, we will be open sourcing all the libraries we develop for the SVP wallets (if there's none existent at the moment). The best example of such a library is web3j. The library will be available for Android and iOS.
  2. The GUI code will be reused (Business layer and UI layer on HL scheme). Most of the work is carried out in the SVP library.
  3. If we develop the wallet we will support these. That's core functionality of the Zcash blockchain. Without the support of shielded transactions, the wallet would make no sense.

AndrewGuarda avatar Sep 17 '17 16:09 AndrewGuarda

@guardaco, about shielded transactions: Generating shielded transactions is currently very expensive: about 40sec on a desktop CPU (so minutes on a phone), and 3GB of application RAM (too much for most phones). https://github.com/zcash/zips/issues/104 and https://z.cash/blog/cultivating-sapling-new-crypto-foundations.html will help but are not available yet. So what are your plans for this, short term and long term?

tromer avatar Sep 30 '17 02:09 tromer

@tromer Thanks for the question. You're right, the shielded transaction will occupy the device resources for a long time. We are not willing to become a bleak light wallet. We are looking for the suitable UE solution in order to fulfill the customer’s expectations. In the short time terms, we’re considering to use one of the following approaches:

  1. The shielded transactions are available for all devices. It sounds like a doubtful idea, some devices probably can be stucked, anyway we need to check it. We’re going to perform the test/benchmarking how it will work in order to evaluate this approach.

  2. The shielded transactions will be available for the powerful devices only. We’ll rate the devices based on it’s hardware. The shielded transactions will be available only for the high-rated devices with suitable transaction calculation time.

  3. Spreading the calculations between the customer device and guarda server. We’ll use a secure way to communicate with server to keep the privacy.

We’ll choose one of the mentioned above approaches (or tune it) based on R&D results. It should meet our expectations for reasonable shielded transactions implementation.

We are going to use further/ongoing tools from zcash foundation to improve the UE in the long time terms.

AndrewGuarda avatar Sep 30 '17 18:09 AndrewGuarda

Every informal proposal has multiple reviews by the review committee. The reviews are being collected and discussed in a private google doc (the 5 reviewers all have edit access to it, no one else can view it). By way of early, informal feedback, the reviewers have made a list of projects that they consider leading candidates for grant funding.

In that vein, your project was selected as one of the leading candidates, and the review committee encourages you to submit a full proposal by October 6th and looks forward to reviewing it.

acityinohio avatar Oct 04 '17 04:10 acityinohio

Hey @acityinohio it's really great to hear that community has chose our project as short-listed one. Could you clarify the structure, content for the great full proposal or just give us any tips how to create it.

AndrewGuarda avatar Oct 04 '17 09:10 AndrewGuarda

The full submission should be a single file attached to this Issue, structured as explained in https://github.com/ZcashFoundation/GrantProposals-2017Q4. I see you've already followed this structure, so just double-check it and put a copy as an attachment here (so we can refer to a specific, time-stamped version).

tromer avatar Oct 04 '17 13:10 tromer

@guardaco The tentative $60k budget is a large fraction of the total funds available for the 2017 Q4 Grants round, and this affects the probability of funding the proposal.

Is it feasible to break the work into two stages, allowing the committee to fund only the first stage in the current Grants round, and hopefully fund the second stage in the next Grants round? If so, please include both stages in your proposal, but demarcate their schedule and budget. The first stage should still be meaningful and useful by itself.

Also, please clarify your position on open-source distribution of the code. Is it accurate to say that the server-side code and client-side library code will be open sourced, but the client-side GUI will be proprietary? In this case, my opinion is that the GUI development costs should be excluded from the budget.

tromer avatar Oct 05 '17 15:10 tromer

Dera @tromer , sure, we can divide the project scope for two stages: Android (most popular) wallet & iOS wallet. Both wallets require SPV library and mobile application development, only the node setup is а common task. So we can use the mobile platform as a demarcation point. We can divide the total budget for two equal parts in this way, 30K each. Hopefully it should work.

Regarding open source policy issue - we agree to make open sources for SPV library and Server. GUI will stay our proprietary solution. We haven't included GUI in the quotation. It will be reused from our ETH project with design changes only.

AndrewGuarda avatar Oct 05 '17 16:10 AndrewGuarda

Also just a reminder @guardaco that the submission deadline is October 6th! Please endeavor to have a final proposal submitted by then, as an attachment to this issue (and yes, it can be October 6th anywhere in the world).

acityinohio avatar Oct 06 '17 01:10 acityinohio

Dear Zcash team, please find attached application for the Q42017 grant.

The application for Zcash foundation grant 2017Q4.pdf

AndrewGuarda avatar Oct 06 '17 15:10 AndrewGuarda

I see that there are quite a few light Zcash SPV wallets: https://www.zcashcommunity.com/wallets/ . I understand the proposal will have an open-source SPV server and library, which AFAIK none of those provides. Are there other significant differences?

tromer avatar Oct 13 '17 01:10 tromer

Dear @tromer, we believe that following three points will answer your question:

  1. SPV single currency wallet will definitely bring more brand awareness. Existing of Zcash-only light wallet helps blockchain to stand out of the list among other currencies. AFAIK no SPV single currency wallet is available for the moment.

  2. Our proposal includes open source option for the server side and SPV library that will drive the Zcash ecosystem services development. It can be used by the community and 3rd party developers for new exciting product launches on top of Zcash blockchain.

  3. Shielded transactions support is the key to the blockchain anonymity growth. Our proposal fulfillment can help solve the problem of efficient amount of shielded transactions which leads to even more anonymity of Zcash blockchain.

AndrewGuarda avatar Oct 13 '17 19:10 AndrewGuarda

@arielgabizon and @ebfull proposed an improvement to the current Zcash code that will reduce memory consumption of the prover to around 1.4GB: https://github.com/zcash/zcash/pull/2243

That's small enough to fit on a modern Android phone with 3GB or more of RAM. (I think the Android OS will let a process allocate 1.4GB on such a phone.) Though it will still take several minutes of computation, and ~1GB of device storage for the proving key.

And this will probably be available before the other two solutions (delegated proving and Sapling).

So, how difficult would it be to take zcashd's shielded-transaction code and use it in the proposed Android SPV library? Can it be refactored into a stand-alone library? Note that Zcash's shielded-transaction code directory originated from libzerocash, which is a stand-alone library. Should such a library include more than just the shielded-transaction handling?

tromer avatar Oct 15 '17 04:10 tromer

Dear @tromer,
Dear zcash team.

It’s really great to know zcash still working for the performance of shielded transactions. Looks like we have a good chance to process good enough with shielded transaction using mobile light wallet.

It’s hard to make proved estimation regarding SPV library development difficulty level beforehand. The change request for the reducing of memory consumption is pending and it isn’t included in the master branch of zcash. We need to have a look in to the details of the pull request, perform necessary R&D and test it with number of devices. In the theory, it should help to solve only the issue of the optimization calculations for the shielded transaction at the device side.

We’ll release stand-alone library that will support SPV for Android. It’s not library for shielded transactions only. It will use JSON-RPC to communicate with zcash node and will support necessary methods for the light wallet: - create wallet - restore wallet - load wallet balance - transactions history - send the transaction - shielded transaction support The library will be open sourced and will be available for using by 3rd parties.

AndrewGuarda avatar Oct 16 '17 08:10 AndrewGuarda

@guardaco : I'm thrilled to inform you that the Grant Review committee—and the Zcash Foundation board—has tentatively approved your proposal! While the recommendations are already posted, we are planning to make a more public post tomorrow morning (November 21st) Pacific Standard Time.

Next steps: please email me josh [at] z.cash.foundation with an email address suitable as a point of contact. Due to our newfound 501(c)3 status there are additional reporting and compliance burdens that may delay or change disbursements, but we are working through them as fast as we can.

Just in case you didn't see it, please find the committee recommendation for your project below, and congratulations again!

Proposes to develop a mobile Zcash wallet for Android. While several mobile wallets are already available, this one will be tailored to Zcash in UX and capabilities, including support for shielded transactions (as soon as this becomes technically feasible via low-memory proving or Sapling). Moreover, the SPV back-end and client-side library will be released as open source, that can be used in other prospective Zcash SPV solutions.

A risk factor is the dependence of the Zcash-specific portions on code that is currently in zcashd, and will need to be refactored into libraries, forked or reimplemented; but the same issue will arise with other efforts to support the full Zcash functionality, so it's important to start tackling it.

We recommend collaboration with IDEO CoLab on the UI design.

The team has prior experience developing mobile wallets, and the budget is reasonable.

acityinohio avatar Nov 21 '17 02:11 acityinohio

The low-memory prover is integrated into the Zcash v1.0.13 release, and with memory use around 1.4GB, in principle can be used to create shielded transactions in a mobile wallet.

tromer avatar Nov 21 '17 04:11 tromer

That's really awesome update. Guarda team is proud to be able to get the support from Zcash foundation. We are looking forward to the project beginning.

AndrewGuarda avatar Nov 22 '17 19:11 AndrewGuarda

Any progress updates on this @guardaco ? Is there a github repo anywhere with your work?

mineZcash avatar Dec 16 '17 15:12 mineZcash

hey @mineZcash we are in progress with UI/UX at the moment. Would you like us to put updates here? It will be great to have like the weekly updates.

AndrewGuarda avatar Dec 16 '17 15:12 AndrewGuarda

Just to add on @mineZcash's comment, would love to see a GitHub repo, updates here, and/or blog or email updates! The grant program is new and while we don't have a strict reporting/updates requirement (other than the final report six months from now) it would be great to point to progress on grants on a semi-frequent basis.

Additionally, after this point by @mineZcash in Zcash Community chat (https://chat.zcashcommunity.com/channel/the-zcash-foundation?msg=rx822kt6tscW6cAzm) it sounds like others (@hoffmabc from Open Bazaar and @jasondavies) are either working on SPV code or could benefit from it. If you've done any work, or want to contribute to theirs, I thought I would at least mention it to connect you all.

acityinohio avatar Dec 18 '17 04:12 acityinohio

@guardaco, I'm a UX researcher for zcashco. If it would be beneficial, I am available to collaborate on the UI/UX of the Zcash wallet. I'd be willing to do a current UX evaluation of any prototypes, perform user research, or help design any layouts/elements that you need.

lindanlee avatar Jan 04 '18 12:01 lindanlee

@lindanlee Hello Linda,

Nice to meet you, I’m Andrew from Guarda team. I’m expressed Zcash foundation attitude and help for our project.

It would be nice to have your opinion about the wallet UX. You can see the current releases that are available on google play: https://play.google.com/store/apps/developer?id=guarda.co as we announced in our proposal we are going to adopt the existing UX for Zcash solution. So it will be great in case you'll be already familiar with UI/UX about 20th of January. That's approx date when we'll be ready to start the discussion about the wallet GUI.

Also you can check our roadmap at https://github.com/guardaco/zcash-SPV/issues/2

AndrewGuarda avatar Jan 04 '18 15:01 AndrewGuarda

@guardaco, I'll check out a current release and familiarize myself before the 20th. If applicable, I'll also have any feedback ready before the discussion starts.

Are all of your wallets implemented with the same set of features/similar in layout and UX? I was planning to poke around the Bitcoin one, but let me know if I should look at another one.

Looking at the roadmap, I'd be happy to help out with steps 3. App design (UX/UE/UI) and all substeps, 5.3. GUI implementation/realization, and 6. Quality assurance, specifically with the manual testing of the application. Let me know how I can help facilitate this process (signing up for any email lists, slack channels, etc).

lindanlee avatar Jan 04 '18 15:01 lindanlee

@lindanlee I can recommend starting with ETH/ETC as far as it has more options in the menu, like tokens, GAS mode or Fee mode while transaction sending. So we can inherit some functionality from ETH, I guess.

Sure, I have the same opinion, we’ll glad to get your feedback on stages 3 especially. It will be very useful to involve you in UX/UI stage in that terms. I’ll send you the invitation to the design in figma or invision and we can continue a discussion on GitHub, e.g. I can create the separate issue for the design. It will be public and more relevant for the community, I hope.

AndrewGuarda avatar Jan 04 '18 15:01 AndrewGuarda

@guardaco thanks for the heads up! I'll then start with the ETH/ETC wallet. I'm glad I asked. 👍

Sounds great. Let me know when you decide which platform you'll be using. When it is time, you can include me in the github discussion and send an invite to [email protected] on invision and figma.

Looking forward to syncing back later in the month!

lindanlee avatar Jan 04 '18 16:01 lindanlee

Hey, @lindanlee I've sent you the invitation to our issue, let's start the UX discussion there, in terms do not block thread here by many UX messages. We can put here just the UX/UI milestones

AndrewGuarda avatar Jan 18 '18 09:01 AndrewGuarda

Dear Community members,

Just brief update from Guarda Wallet team. We are moving forward into the accordance with the roadmap almost.

We've finished with Zcash node setup at our side, it's now available at zec.guarda.co

We've started the collaboration with @lindanlee , Z-cash UX expert. Linda's feedback is very helpful for our team. This week we've presented our very first ZEC wallet prototypes that have t-addr and z-addr: https://www.figma.com/file/q6OZOmsg8ot8JTXyIMUhHj/Guarda-Zcash-Wallet-(Android/iOS). UPD: Linda already left her feedback, we are working with it. The next design is in the process of development. The update will be available for comments in figma project.

This week we are planning to have a call regarding ZEC wallet with @techoluwoye from Coincentrix.io, who are got Z-cash Foundation grant for Z-cash Education Outreach. I hope we can help to make some valuable effort for Z-Cash community together.

Next week we are going to start SPV library API public discussion. We are planning to proceed in the same way as for UI issue.

I'll put all valuable updates here.

AndrewGuarda avatar Feb 02 '18 13:02 AndrewGuarda

Dear Z-Cash foundation, Dear Z-Cash Community, Guarda moved to the next project stage, we're going to implement the SPV library. We've created the discussion regarding SPV library functions and methods at https://github.com/guardaco/zcash-SPV/issues/1 It will be really nice to have feedback or comments on it. @tromer @acityinohio @mineZcash @amiller @naconner

AndrewGuarda avatar Feb 28 '18 05:02 AndrewGuarda

Dear all, We've finished beta for Zcash wallet (t-addr only at the moment). Please find the link to the beta release for Zcash community on Google Play market https://play.google.com/store/apps/details?id=com.guarda.zec Any valuable feedback is very welcome.

@tromer @acityinohio @lindanlee @mineZcash

AndrewGuarda avatar Mar 20 '18 18:03 AndrewGuarda