# ZGo 2025 Proposal
## Pitch
The migration from the `zcashd` node to the Zebra node presents a challenge to applications that currently depend on `zcashd`, like ZGo. We are modernizing the ZGo app to run on the new Zebra node.
## Applicant Background
[Vergara Technologies](https://vergara.tech/) has been building applications that leverage the Zcash blockchain since 2022.
We are the creators of:
- [ZGo](https://zgo.cash/), the Zcash point-of-sale app
- [Zenith](https://vergara.tech/zenith), the full-node wallet for Zebra[^1].
- [Zcash-Haskell](https://vergara.tech/products/zcash-haskell.html), the Haskell library for interacting with Zcash.
## Opportunity
The Zcash community is working towards the deprecation of the `zcashd` node in favor of the modern Zebra node[^2].
The ZGo point-of-sale application was originally built to rely on the functionality provided by `zcashd`, and to continue serving the community after 2025, it needs to be migrated to Zebra.
## Proposed Solution
The developments of our Zenith wallet, its RPC server in particular, give us a great replacement for the embedded `zcashd` wallet that ZGo currently depends on.
We propose to replace the `zcashd` node with a Zebra node and a Zenith wallet in the infrastructure of ZGo, enabling the application to continue to operate after the deprecation of `zcashd`.
As part of this migration, we will also make necessary improvements and updates to the infrastructure of ZGo, increasing its reliability and performance.
## Technical Approach
We propose a re-design of the ZGo back-end application to:
- Remove the dependencies with the `zcashd` node, replacing this functionality with the Zenith RPC server.
- Replace the `zcashd` nodes in our infrastructure with Zebra nodes
- Migrate the back-end database from `MongoDB` to `MariaDB`, a more robust database.
- A complete re-write of the ZGo server code to leverage the `servant` Haskell library, a far more robust server implementation.
- Enhancements to the Zenith wallet to improve its performance and to add needed functionality to the RPC server.
```graphviz
digraph G {
label="Planned migration"
fontname="Helvetica,Arial,sans-serif"
node [fontname="Helvetica,Arial,sans-serif"]
rankdir="LR";
overlap=prism;
subgraph cluster_2 {
label="Future"
node [shape=block, fillcolor=orange, style=filled]
z2 [label="Zebra"]
z3 [label="Zenith RPC"]
node [shape=ellipse, fillcolor=white, style=filled]
c2 [label="ZGo-ng"]
node [shape=cylinder, fillcolor=white, style=filled]
d2 [label="MariaDB"]
graph[style="solid", color=blue];
}
subgraph cluster_1 {
label="Current";
node [shape=block, style=filled]
z1 [label="zcashd"]
node [shape=ellipse, fillcolor=white, style=filled]
c1 [label="ZGo"]
node [shape=cylinder, fillcolor=white, style=filled]
d1 [label="MongoDB"]
graph[style="solid", color=blue];
}
c1 -> z1;
c1 -> d1;
c2 -> z3;
z3 -> z2;
c2 -> d2;
}
```
## Execution Risks
- Significant changes to the `librustzcash` Rust crates could potentially increase the development timeline.
- Testnet availability during the NU7 upgrade can potentially impact the development timeline.
## Unintended consequences
None identified.
## Budget
| Item | Estimate |
|------|---------:|
|Hosting | $2,000.00|
|Development | $136,800.00 |
|**Total** | **$138,800.00**
### Development
We are estimating 1,440 person-hours at $95/hour for a total development cost of $136,800
## Schedule
```mermaid
gantt
title ZGo 2025
dateFormat YYYY-MM-DD
axisFormat %b
todayMarker on
excludes weekends
Database Redesign: a1, 2025-04-01, 30d
Zenith Performance Enhancements: a2, after a1, 40d
Zenith RPC enhancements: a3, after a2, 30d
ZGo server rewrite: a4, after a2, 80d
ZGo-Zenith integration: a5, after a4, 30d
Testnet implementation: a6, after a5, 5d
ZGo Payment Gateway update: a7, after a6, 10d
MainNet Release: milestone, a10, after a7, 0d
```
[^1]: Zebra: https://zebra.zfnd.org/
[^2]: Zcashd Deprecation: https://z.cash/support/zcashd-deprecation/
[^4]: Open Privacy Research Society: Cwtch https://cwtch.im/
[^5]: The Tor Project: https://www.torproject.org/