Hi Everyone Please take a look at a proposal that the ChainSafe team just sent-in, we’d love any feedback that you may have:
Zcash SDK Implementation [JS/TS]
Many thanks
CS Team
Zcash SDK Implementation [JS/TS]
Title:
ZCash SDK Implementation [JS/TS]
Applicant name:
ChainSafe - Daniel Choi
Team member name:
Bernard Stojanovic
Team member name:
Ivan Rubido
Pitch: A one-liner elevator pitch version of your proposal
Expanding the reach of the ZCash ecosystem by introducing an SDK that will allow for wider adoption and use.
Total Request (USD):
$300000.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:
ChainSafe [Organization] -
Established in 2017, the core business of ChainSafe Systems is software development consulting, specifically the research and development of blockchain protocols and products, including infrastructure and tools which enable the onboarding of new developers and novel use cases for blockchain technology. ChainSafe has worked to maintain stable alternative implementations, improve functionality and in turn adoption of some of the top protocols in the space such as Ethereum, Filecoin, and Polkadot - helping to create and secure over 230 Billion USD in combined value measured by market capitalization of these protocols. As part of ChainSafe’s commitment to fostering the growth and adoption of blockchain technology, they also build developer resources that serve as public goods - open source code libraries and tooling that ensures that Web3 infrastructure will be made from technology developed in Ontario. Strong proponents of open-source technology and community-oriented commercialization, and with accessibility and utility for developers as our primary objective - ChainSafe helps to produce and maintain core infrastructure the web3 ecosystem needs to succeed and serves the global web3 community.
Bero [Tech Lead] - An accomplished software engineer with a proven track record of success in the tech industry. Beginning in 2018, he joined a small agency where he quickly advanced to the role of Technical Lead. During his tenure at the agency, he worked on complex data visualization projects, honing his skills in Frontend Engineering. In 2020, he embarked on a new adventure by joining NodeFactory, where he continued to excel as a software engineer. His commitment to open source work and dedication to innovation led to a significant milestone in 2021 when ChainSafe Systems acquired NodeFactory. Following the acquisition, his focus shifted towards creating cutting-edge open source tools that have made a meaningful impact in the tech community.
Ivan Rubido [Developer] - 4 years of active web3 development experience. He began his journey at NodeFactory, working on a lot of dApps for various clients, such as Croatia National Post NFT platform and the Swap-Kiwi NFT dApp. For the following two years at Chainsafe, Ivan continued with consulting projects, statistics tools, dev tooling and maintained various Metamask snaps such as FilSnap and Polkadot Snap, and developed snaps for NEAR, Aleo, and Mina. His primary focus remains on ensuring user-friendly and secure applications and protocols. Ivan has amassed a profound understanding of blockchain technologies and standards.
Daniel [Researcher] - Daniel is blockchain researcher who has been previously a blockchain developer. Daniel has over 7 years of experience in the blockchain field and has done both research and development for various projects. He has contributed to many projects including: Kademlia DHT Double hash implementation, gasless transaction solutions, Chainlink-Cosmos, Ethermint, Polymath wallet, and testing. Currently, his areas of focus for research are ZKs, wallet and smart contract security, and Ethereum-related protocols.
Description of Problem or Opportunity:
Currently in the ZCash ecosystem, there is no convenient way for a developer to implement a web-based application to incorporate ZCash payments. With the implementation of a ZCash SDK in typescript, developers will have the ability to integrate ZEC payments and allow users to interact with the chain. Subsequently, this will potentially expand the reach of the ZCash project and bring in an audience for wider adoption. The SDK will also open up opportunities to implement a ZCash Snap and subsequently web-based wallets.
Proposed Solution: Describe the solution at a high level.
The purpose of this proposal is to add value to the Zcash ecosystem by implementing and maintaining a TypeScript SDK for enabling more Zcash capabilities in the browser. This proposal should provide ground work and a feasibility test for the development of a Zcash MetaMask Snap along with a Web wallet that would utilize said snap as a secure enclave for user keys. Enabling millions of MetaMask users instant access will help significantly with Zcash adoption and usability. The SDK will also bring in opportunities for general web-based wallets (web wallet, extensions, electron applications, etc), that go beyond the scope of Snaps. This document is focused on the initial portion of this vision: the design, implementation, and support of a JavaScript SDK for interacting with the Zcash network.
Solution Format: What is the exact form of the final deliverable you’re creating?
This proposal covers a set of deliverables: the SDK itself, SDK tests & documentation, and examples that demonstrate the use of the SDK from both client- and server-side environments.
Technical Approach: Dive into the how of your project. Describe your approaches, components, workflows, methodology, etc. Bullet points and diagrams are appreciated!
We will use monorepo approach with typescript, with it we will able to modularize parts of code for future proofing and customization. With it we will keep KISS and Fasade approach to building API’s.
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?
A couple dependencies that may affect development is librustzcash and halo2. Our team will rely on some pieces of code that will assist our process with WASM compilation and may require those involved in. The lightwalletd team to provide assistance (if any) when required.
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?
The biggest concerns will be our dependencies (librustzcash and halo2) and compatibility with wasm, in case of incompatibility we will slow down the first deliverable.
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.
If the project is a success there would be occasional maintenance and potentially future upgrades to be considered. If there are future upgrades to any dependencies listed in the previous section above, there may be breaking changes to the SDK implementation. This will require maintainers to stay up-to-date with the developmental process of related dependencies and understand the compatibility issues and make any fixes as needed.
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 metrics that we can provide include monthly SDK downloads. On the qualitative side, we will gather user feedback when it comes to installation time and ease of use.
Hardware/Software total budget:
$0.00 USD
Please provide justification for the total hardware/software budget:
N/A
Services total budget (cloud, hosting, etc.):
$0.00 USD
Please provide justification for the total services budget:
N/A
Compensation total budget:
$300000.00 USD
Please provide justification for the total compensation budget:
- 1 Technical Lead
- 1 FTE Engineers
- .5 Research Engineer
- .5 Project Manager
- Overhead fees (this includes any additional costs such as the research involved in the initial scope of work, marketing, and senior management advisory for the duration of the project)
Do you require startup funding?
No
Milestone 1 - estimated completion date:
02/29/2024
Milestone 1 - USD value of payout upon completion of deliverables:
$150000.00
Deliverable 1.1
Account APIs
Milestone 2 - estimated completion date:
03/15/2024
Milestone 2 - USD value of payout upon completion of deliverables:
$30000.00
Deliverable 2.1
Provider APIs
Milestone 3 - USD value of payout upon completion of deliverables:
$60000.00
Milestone 3 - estimated completion date:
04/15/2024
Deliverable 3.1
Synchronizer
Milestone 4 - USD value of payout upon completion of deliverables:
$60000.00
Milestone 4 - estimated completion date:
05/15/2024
Deliverable 4.1
Utility APIs, Testing & Documentation
Total proposed USD value of grant:
$300000.00 USD
How was the project timeline determined?
The software project timeline is determined by breaking down tasks, considering available resources, and estimating how long each task will take. It involves planning for uncertainties, adjusting as needed, and keeping everyone involved in the loop.