Title:
Zcash Parsers
Applicant name:
Mark Harris
Pitch: A one-liner elevator pitch version of your proposal
Extend the adoption of Zcash to more platforms by providing parsing libraries in Go
Total Request (USD):
$7200.00 USD
Have you previously received a grant from Zcash Community Grants (formerly called ZOMG) or ZF?
No
Are you seeking or have you received funding from other sources for this proposed project?
No
Applicant background:
My name is Mark Harris. I have 25 years of experience writing code and leading teams that write code. I consider myself to be technology agnostic and have worked with a large set of modern languages. I have led and participated in several ports of legacy code to modern frameworks.
Description of Problem or Opportunity:
Although Zcash has address parsers available in the Rust programming language, several exchanges need a Go implementation of the parsers. In addition, a Kotlin Version has been identified as a need.
Proposed Solution: Describe the solution at a high level.
I will develop and release a fully tested set of parsing libraries adhering to Zcash requirements in Go and Kotlin languages. These will be useful for exchanges and wallet developers These libraries will parse Tex, Sapling, Orchard, and Universal addresses. Libraries will include packages for F4Jumble algorithms, and Universal address encoding and decoding. In addition in the case of the Kotlin code. Bech32 and Blake2b packages will be included.
Solution Format: What is the exact form of the final deliverable you’re creating?
Public git hub repositories with the appropriate libraries
Technical Approach: Dive into the how of your project. Describe your approaches, components, workflows, methodology, etc. Bullet points and diagrams are appreciated!
I will use the existing Rust libraries and Zcash Documentation as the foundation for porting code. Each package will be tested against existing Zcash Test vectors.
Dependencies: What external entities is your project dependent on? What involvement is required from ZF, ECC, and/or other external organizations? Who would have to incorporate your work in order for it to be usable?
In go lang I am using GitHub - btcsuite/btcd: An alternative full node bitcoin implementation written in Go (golang) opensource libraries for Bech32m decoding and github.com/gtank/blake2/blake2b library for Blake 2b decoding. My current research is pointing me towards writing these packages myself for the Kotlin port. We will need deep peer review from the Zcash Folks.
Execution risks: What obstacles do you expect? What is most likely to go wrong? Which unknown factors could jeopardize success? Who would have to incorporate your work in order for it to be usable?
Adoption by Binance is the goal for the Go libraries. The availability of the Kotlin Libraries is intended to spur development on other platforms. Crypto seems to be pretty fickle. The biggest potential Obstacle is Crytpo exchanges moving away from supporting Zcash.
Unintended Consequences: What are the negative ramifications if your project is successful? Consider usability, stability, privacy, integrity, availability, decentralization, interoperability, maintainability, technical debt, requisite education, etc.
As the libraries are currently hosted by me, maintenance and management pull requests would fall largely on my shoulders. To mitigate we should move the libraries to Zcash public repos and provide a set of reviewers.
Evaluation plan: What metrics for success will you share with the community once you’re done? In addition to quantitative metrics, what qualitative metrics will you commit to report?
The number on success metric will be adoption of libraries by the community.
Hardware/Software total budget:
$0.00 USD
N/A
Services total budget (cloud, hosting, etc.):
$0.00 USD
Please provide justification for the total services budget:
N/A
Compensation total budget:
$7200.00 USD
Please provide justification for the total compensation budget:
Each implementation ( Go and Kotlin ) represents approximately 24 hours of work. I arrived at my figures using a base rate of $150.00/hr.
Do you require startup funding?
No
Milestone 1 - estimated completion date:
05/15/2024
Milestone 1 - USD value of payout upon completion of deliverables:
$3600.00
Deliverable 1.1
Go language Libraries
Milestone 2 - estimated completion date:
05/24/2024
Milestone 2 - USD value of payout upon completion of deliverables:
$3600.00
Deliverable 2.1
Kotlin libraries
Total proposed USD value of grant:
$7200.00 USD
How was the project timeline determined?
The go libraries are ready for review. I am extrapolating my time out for the Kotlin libraries
Application submission date:
05/13/2024