222 views
# 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/