Zingoistas are upgrading and extending core Zcash infrastructure to a state of the art secure Rust implementation.
In order to complete the Zaino project, we’re asking the ZCG to support that work via a grant.
Copied here for ease of review:
Terms and Conditions
- I agree to the Grant Agreement terms if funded
- I agree to Provide KYC information if funded above $50,000 USD
- I agree to disclose conflicts of interest
- I agree to adhere to the Code of Conduct and Communication Guidelines
- I agree to post request details on the Community Forum
- I understand it is my responsibility to post a link to this issue on the Zcash Community Forums after this application has been submitted so the community can give input. I understand this is required in order for ZCG to discuss and vote on this grant application.
Application Owners (@Octocat, @Octocat1)
Organization Name
Zingo Labs
How did you learn about Zcash Community Grants
I was involved in the design discussions.
Requested Grant Amount (USD)
$151,240.00
Category
Infrastructure
Project Lead
Name: Za Wil
Role: Zingo Labs Coordinator
Background: I am a long time hacktivist in the Zcash Community
Responsibilities: I provide an interface to other organizations when a Zingo Lab needs one, that's not otherwise available. I represent the internal discussions of Zingoistas publicly when I am asked to do so.
Additional Team Members
- Name: Undisclosed
Role: Zcasher
Background: Undisclosed
Responsibilities: Various
We provide internal details to members of the ZCG on request. In order to maximize inclusivity we do not disclose member information.
Project Summary
The Zaino project decentralizes critical Zcash infrastructure bringing diverse stakeholders in to grow the economy. This proposal would fund development, test, and deployment of core Zcash “Zaino” nodes, and “Zaino” APIs.
Project Description
Over a scheduled period of about 3 months, Zingoistas will implement many RPCs needed for core Zcash infrastructure to properly function.
Proposed Problem
The current implementation of the Zcash protocol is increasingly out-of-date with modern programming practices and paradigms. In particular it is implemented in a legacy programming language (C++) that significantly, perhaps radically, slows development.
Proposed Solution
In concert with other core Zcash teams Zingoistas are working to upgrade and replace all components of the original Zcash implementation with modern state of the art technologies (in particular Rust).
Solution Format
Zingoistas will implement core functionality (RPCs) in Rust. Preference will be given to block explorer RPCs, where feasible, to enable a rapid-rollout of User-facing functionality. This will facilitate outreach efforts by providing working examples built on the new stack.
The architecture of the Zaino was created with mixnet support in mind, this will make migrating to Nym for network privacy relatively easy.
Dependencies
We are in close collaboration with the ECC, the ZF, SL, and the Blockchain Commons.
Technical Approach
We use the tools and procedures that are standard across the Rust ecosystem.
Upstream Merge Opportunities
We are actively engaged in review, test, and contribution to codebases maintained by the Blockchain Commins, the ECC, and the ZF. It’s likely we’ll have similar patterns of cooperation with SL.
Hardware/Software Costs (USD)
$17,200.00
Hardware/Software Justification
Developers need privacy oriented, capable laptops and mobile devices.
We will test all F-Droid published Zcash wallets against each version of Zaino.
We budget $4300.00 per laptop/phone combination.
We schedule 4 Zaino developers.
Service Costs (USD)
$6440.00
Service Costs Justification
Two years of Github Enterprise for CI efficiency. 24 months * $210/month for 10 seats = $5040
Two years of Gitlab Premium $700/year * years = $1400
Compensation Costs (USD)
$127,600.00
Compensation Costs Justification
$110/hour developers
4 devs full time
3 months
Total Budget (USD)
$127,600.00 + $17,200.00 + $6,440.00 = $151,240.00
Previous Funding
Yes
Previous Funding Details
The current Zaino Grant.
Other Funding Sources
No
Other Funding Sources Details
No response
Implementation Risks
Failure to receive funding in a timely manner. Failure to coordinate with partners.
Potential Side Effects
There’s always the possibility of unforeseen downsides to Rust.
As mentioned before and elsewhere, this project and partners aims to upon completion decrease the number of node implementations from zcashd/lightwalletd and zebrad/zainod to just zebrad/zainod. This is a reduction in diversity, and therefore potentially resilience.
Success Metrics
The Zcash economy runs over Z3 (and therefore Zaino).
Startup Funding (USD)
$0
Startup Funding Justification
N/A
Milestone Details
Milestone 1: Zcashd RPC Replacement
- Amount (USD): $70,400
- Expected Completion Date: ~ 6 weeks
- Deliverables:
- Implement new RPCs using both JsonRPC and ReadStateService backends (Low priority not included in current roadmap):
- Debug [3 weeks]
Milestone 2: Updated Zcash RPC spec.
- Amount (USD): $57,200
- Expected Completion Date: ~ 6 weeks
- Deliverables:
- New wallet indexes to zaino
- Add transparent tx data to compact blocks. [2 weeks]
- Add transparent outpoint to tx RPC. [2 weeks]
- Debugging. [1 week]
- $22,000 (5 dev weeks - $110/h)
- Update Zcash RPC spec and add tonic (gRPC) backend to Zaino
- Replace LibrustZcash’s CompactTxStreamer with a new IndexerRpcService that encapsulates the complete set of RPCs served by Zaino
- update duplicate / deprecated services. [6 weeks]
- Add Tonic Backend to Zaino’s IndexerService to enable light wallets to use Zaino’s integrated chain fetch services. [2 weeks]
- Debugging [1 week]
- $35,200 (8 dev weeks - $110/h)
- New wallet indexes to zaino