ZGo - The Zcash Register

Main Proposal

Pitch

ZGo will enable vendors and merchants to accept Zcash as payment in a simple, affordable way.

Applicant Background

Vergara Technologies LLC was founded in 2021 to support the creation, development and operation of ZGo. We are a father-and-son team with decades of combined experience in technology consulting, project management, digital product management in South America and the United States.

  • Rene Vergara Larrea, MSc, PMP

    • Senior Technical Product Owner for a Fortune 50 insurance firm in the US, working with Java, ReactJS and MongoDB.
    • Creator of ZGo.
  • Rene Vergara Araque, MBA, MPM

    • Developer for ZGo, maintainer of ZGo’s website.
    • Creator of GeoVSU, a GIS-enabled web application for the real estate market in Ecuador.
    • Creator of the educational videos for GeoVSU.
    • Former CEO of AT&S Consultores, a technology consulting firm in Quito, Ecuador.

Description of Problem

Current electronic payment solutions are centralized, costly and take custody of the funds paid to vendors for some period of time. It is becoming more common to see vendors and merchants add surcharges for electronic payment processing fees, passing the costs to consumers[1]. The alternative proposed by the United States Federal Reserve[2] raises multiple concerns regarding surveillance and custody of funds.

Even though Zcash can provide a seamless payment experience, there is no application currently available for merchants to implement Zcash payments easily. One of the key components of mass-adoption of Zcash is the ability to transact with it on a day to day basis, and this is the gap we aim to fill.

Proposed Solution

ZGo is a private point-of-sale platform that leverages Zcash shielded memos to link a device to the vendor’s Zcash address and a ZGo shop. The vendor then purchases a session, using ZEC, enabling the full functionality of the app for a set period of time.

A ZGo shop allows a vendor to create a list of items available for sale, set their prices in the reference fiat currency and their description. The vendor then can add these items and amounts to an order for a customer.

The vendor can now prompt the customer for direct payment using a QR code and offer the customer a digital receipt. If the sale is not in a retail setting, the vendor also has the option to generate an invoice based on the order, creating a URL that can be sent to the customer via e-mail, SMS or other direct messaging app. This URL prompts the customer for payment using a QR code.

We intend to integrate ZGo with major invoicing platforms, to allow businesses to leverage existing systems to provide the option of Zcash payments.

Solution Format

ZGo aims to provide a smooth, private experience for vendors and merchants to accept payments in Zcash with a point-of-sale web app that is:

  • Non-custodial. Funds go directly from the customer to the vendor’s wallet via shielded transactions.
  • Mobile-friendly. The app works on desktops, mobile devices and supports small screens.
  • Device agnostic. The app works regardless of operating system, all that is required is a modern web browser.
  • Flexible. The app supports multiple points-of-sale for a single vendor, and has a flexible price structure for vendors that may only need the service seasonally.
  • Integrated. The app integrates with common business systems (CRMs, e-commerce).

Technical Approach

ZGo is a libre software app and includes:

  • Web front end built on AngularJS.
  • API server built on Haskell, providing both monitoring of relevant blockchain information, ZEC price data and interfacing with the ZGo database.
  • Zcash full node.
  • MongoDB database for storage.

ZGo leverages the Zcash shielded memo field to be able to identify a shop as well as individual devices acting as points-of-sale for the shop as shown in Figure 1.

fig1

Figure 2 shows the basic flow for a retail sale, where the vendor uses ZGo to put an order together, ZGo uses the latest available prices from CoinGecko to calculate the total ZEC amount for the order and then creates a ZIP-321-compliant[3] QR code that the customer can use to pay, ensuring that the correct address for the shop and the correct amount of ZEC is pre-populated in the customer’s wallet. ZGo also includes the order ID in the shielded memo, allowing the shop owner to match payments in their wallet with orders in ZGo. One of the identified future improvements to this flow is having ZGo confirm the payment of the order for vendors that provide a viewing key for their business shielded address.

Figure 3 shows the flow for a vendor that may not be doing business in a retail setting and can then send an invoice to a client for payment. ZGo allows the customer to use a URL to view the invoice and the corresponding ZIP-321-compliant QR code for payment. This flow will also benefit from the automated payment confirmation via viewing key mentioned above.

Another benefit of ZGo for vendors is keeping track of all the orders for later review. ZGo records the ZEC amount of the order, the contents of the order as well as the ZEC price at the time the order was closed, making this information available to the vendor for accounting purposes, while maintaining the customer’s privacy.

ZGo currently supports multiple fiat currencies for conversion, including U.S. dollars(USD), Euros (EUR), British pounds (GBP), Australian dollars (AUD) and Canadian dollars (CAD).

The code for ZGo is maintained in GitLab and available under the Bootstrap Open Source License in our Front End repo and our Back End repo. Feature requests, bugs and discussions are tracked in GitLab. Our main website contains guides and demos of using the app successfully.

Feature Roadmap

The features we have currently identified for implementation are:

  • Payment confirmation, using a provided viewing key.
  • Support for Unified Addresses.
  • Integration with CRM tools like QuickBooks.
  • Spanish UI translation.
  • Data export.
  • Adding tips to orders.
  • Adding a tax line to orders.
  • UX enhancements.
  • Referral program.

Dependencies

Zcash Wallets

ZGo generates QR codes compliant with ZIP-321, a wallet that supports this standard is required for the best experience with the application. Currently, Nighthawk and ZecWallet support it on Android devices. Unstoppable does not, we have reached out to them and received a response that they would look into implementing ZIP-321 after they are done with updates related to NU5.

ZGo implementation of Unified Addresses is also dependent on wallets making this new functionality available.

Incorporating other future changes in the Zcash protocol into ZGo will also depend on wallets in the ecosystem making the corresponding upgrades.

ZEC Price feed

ZGo currently uses CoinGecko API to obtain ZEC prices. If the availability of this API changes, ZGo may need to switch to a different service to keep up-to-date prices.

Execution Risks

Legal Risks

As a platform that enables people to sell goods and services, ZGo needs to have very solid Terms of Use that allows for a safe, sustainable operation for the users and for Vergara Technologies LLC. Given that Zcash is global, the legal framework for the operation of ZGo needs to be compatible with multiple jurisdictions.

One of the goals of this grant proposal is to obtain the funding and support to have the appropriate legal documents reviewed and updated by a reputable experienced legal firm to mitigate this risk.

Technical Risks

As a web platform, ZGo is exposed to the Top Ten Web Application Security Risks[4]. To mitigate these risks, the app uses TLS for the external communications to the server, both for the UI and the API. The UI is designed as a Single-Page Application (SPA) to minimize opportunities for injection attacks. The authentication of users relies on the strong privacy provided by Zcash shielded memos to transmit information and the assurance that only the owner of the wallet with access to the private keys could complete sign-up.

Unintended Consequences

A large adoption of ZGo may create some pressure on wallet developers to implement @zip321 to leverage the app.

Evaluation Plan

The impact of ZGo in the Zcash ecosystem can be measured by:

  • Number of shops opened
  • Number of active shops
  • Number of orders processed
  • ZEC transaction volume

These metrics would only be reported in the aggregate, eliminating any potentially identifiable information.

Budget

The estimated total cost for this proposal is $114,200.00. The breakdown of the budget is listed on the table below.

Item                       Estimate
------------------------ ----------
Hardware                    $600.00
Software                  $1,500.00
Hosting                   $1,500.00
Legal Services            $5,000.00
ZGo User Support          $9,600.00
ZGo Feature Development  $96,000.00

Hardware

This proposal includes the cost of purchasing an iPad tablet to allow for feature testing on iOS devices.

Software

This proposal includes a budget for the cost of the different CRM platforms currently targeted for integration: Quickbooks and Xero.

Hosting

This proposal includes the cost of 12 months of hosting services for the ZGo servers.

Legal Services

This proposal includes a budget for the cost of having a reputable legal firm with experience in the blockchain space review and amend the application’s terms of use to mitigate any legal risks.

ZGo User Support

This proposal includes the cost of 12 months of user support, estimated at 10 hours per month.

ZGo Feature Development

This proposal includes the cost of 12 months of feature development, estimated at 100 hours per month.

Schedule

Milestones

  • Milestone 0: Start-up funds for hardware, software and start of legal review, $8600
  • Milestone 1: Payment confirmations, $17,600
  • Milestone 2: Unified Addresses support, $17,600
  • Milestone 3: First integration available in test server and Spanish translation available in test server, $17,600
  • Milestone 4: Spanish translation in production, first CRM integration in production, Data export in production, $17,600
  • Milestone 5: Second CRM integration in test server, Tipping and Added Tax functionality in production, $17,600
  • Milestone 6: Second CRM integration in production, UX enhancements, User feedback, $17,600.

  1. ↩︎

  2. ↩︎

  3. https://zips.z.cash/zip-0321 ↩︎

  4. ↩︎

16 Likes

I 100% back this grant. This helps with Zcash utility greatly. Future integrations for Quickbooks and Xero is how we get Zcash to go mainstream.

I support!

4 Likes

Hi @pitmutt ! Thanks for the detailed and thoughtful grant! I think that making merchant adoption as easy as possible is an extremely worthy goal, I love that you’re leveraging ZIP321 uris and that you’ve proactively reached out to Unstoppable for support therewith!

ZEC’s properties make it a great money, and a point-of-sale app + integration are great for that! We would love to see this used. We are curious about your thoughts about merchant outreach/marketing/adoption strategy. (An evergreen challenge in this industry! A tough nut to crack.)

How do you envision ZGo’s adoption path to its first 100 merchants, 1000 merchants, and beyond?

Edit - Wanted to add a couple clarifying questions to help me understand your decision-making in the tech stack:

  1. Your experience is in ReactJS, but you plan to build ZGo in Angular. I also generally think React is more popular and accessible to collaborators and fellow developers. What made you choose Angular?

  2. What made you choose Haskell in the back end? I’m impressed by the mastery of an esoteric language, but it also seems less accessible to fellow developers than, say, NodeJS or Python.

  3. Why MongoDB? It seems to me like accounting, with payments, orders, and accounts, (not sure what else is in your schema) that an RDS like postgres would be preferable.

#3 is minor and more just a curiosity from me (I have little experience with Mongo, I’m sure you can tell I’m basically speaking from the textbook). But wrt the other two: I do think accessibility to other developers is important, and I’d like to know the trade-offs you considered here.

8 Likes

Hi @BrunchTime . We are looking into a few approaches to increase the
outreach to vendors and merchants:

  • Extend the existing Beta Testing Partner Program’s duration to 90
    days to give vendors more time to use ZGo.
  • Create a referral link program, where a vendor using ZGo can extend
    their ZGo access for every other vendor that creates a ZGo shop
    using their referral link. This strategy has been fairly successful
    in other areas of the crypto space and we believe it can be used in
    this space as well.
  • The feedback we have received from the community so far has shown
    that there is a niche of vendors (mostly in professional services)
    already in the crypto space that are likely to be interested in
    Zcash for payments, which is why we are putting our focus on the
    integration with the large CRM platforms. We believe adoption will
    be faster in a community that’s already in the cryptocurrency space
    than in the retail space.
  • We have reached out to a couple of business associations and
    chambers of commerce and there is some interest, but those
    conversations require more than just the pitch for ZGo, they require
    starting with basic education about cryptocurrency, wallet
    management, etc. We would love suggestions from the community on
    areas with more cryptocurrency adoption, where we could put our
    focus on. This also ties in with the legal review of the Terms of
    Use, to ensure that the operation of ZGo is in the correct legal
    framework for the area, that could be potentially out of the US.

For the technical questions:

  • We chose Angular and its standard components because we wanted to
    have an application with a modern look and feel but that would be
    consistent and compatible with different browsers on different
    devices.
  • We chose Haskell for the backend partly out of personal interest but
    also to leverage its concurrency and its testing capabilities. I
    also expect that as volumes increase, the Haskell backend will
    continue providing fast performance without needing much changes.
    Also, we had more views on the Haskell code than we ever did on the
    NodeJS code :slight_smile: .
  • We think ZGo is one of those applications that could have been also
    built on an RDB. We chose MongoDB because it is very friendly to
    passing JSON data and the schema-less approach has already proven
    useful with the longer Unified Address needing no changes to be
    supported.
6 Likes

I’m not surprised. Ive only done a couple of 20min scans but I’ll vouch for the quality of the Haskell code :+1:.

I’m all for this grant too, it will be the game changer we’ve been looking for, enabling invoice based small businesses to start accepting ZCash. In addition the Xero & Quickbooks integrations will make their accountants happy too and removes another potential road block preventing adoption.

I’ll definitely be closely following this project and providing my input where it can assist.
Will likely be one of the first customers to put it through its paces once its available to start testing/using.

5 Likes

Thank you for the support, your feedback has been most helpful in the roadmap for ZGo.

Hello @pitmutt & Zcash Community, I am happy to announce that during yesterday’s ZCG meeting the @ZcashGrants committee has unanimously voted to approve this grant!

11 Likes

Congrats @pitmutt! Well done! :partying_face: :tada: :clap:

1 Like

Thank you very much, @ZcashGrants !

We are very excited to keep the work going and will keep providing updates here in the forum.

8 Likes