RFP - Zcash UniFFI Library

Hello everyone, today the ZCG is posting its second RFP to make available a Zcash toolkit for developers to work with the bleeding edge cryptography that Zcash offers.

This RFP is available in a PDF format for sharing here.


Zcash Community Grants (ZCG)

Request For Proposal (RFP)

Zcash UniFFI Library

  1. Project Description

The Zcash Community Grants (ZCG) committee is inviting qualified individuals or companies (Grantee(s)) to submit a proposal to deliver a Zcash UniFFI library to generate bindings for popular languages (Kotlin, Swift, Python & Ruby) for operations with Orchard, Sapling & Transparent pools.

The relationship between the winning Grantee(s) and ZCG shall be that of a grantee and grantor, governed by standard grant terms and conditions.

  1. Background and History

ZCG exists to fund projects that advance the usability, security, privacy, and adoption of Zcash, a privacy-focused cryptocurrency. Here’s what we’ve funded so far.

Formerly known as the Major Grants Review Committee, ZCG was created by community members of the Zcash cryptocurrency in ZIP 1014, working within the Zcash governance process.

ZCG’s funds come from the decision in ZIP 1014 to allocate a portion of all newly created Zcash—over a four-year period—to the ZCG.

Legally speaking, ZCG is a technology advisory board that constitutes a committee of the Zcash Foundation, under its bylaws. Grants are chosen by a committee of five members who were chosen by the Zcash Community Advisory Panel in an open election.

Operational support is provided by the Zcash Foundation.

Resources:

  1. ZCG Responsibilities

ZCG will provide the Grantee(s) with all available relevant information to aid in the successful completion of the project. ZCG will also provide:

Aside from funding, ZCG can provide you with ourselves as guests, our feedback as listeners, and are happy to try to use our inroads with ZF, the ECC, and the Zcash Community at large to help you connect with potential guests.

We will amplify any endeavor we fund wholeheartedly through our official and personal social media presences.

  1. Project Assumptions

The following assumptions were made in the development of this Scope of Work:

The library will cover the complete scope of requirements listed with deliverables spread across milestones as suited by the applicant. The GitHub repository will be assigned before beginning work and the development activity must take place publicly for transparency and history. All code & test suite must be licensed under MIT License.

  1. Proposal Submittal and Contacts

The Grantee’s proposal shall be submitted to the Zcash Grants Platform in PDF format unless ZCG has otherwise requested supplementary materials in a different format. Late submissions will not be accepted.

Questions should be directed to ZCG.

  1. Project Schedule

The anticipated project schedule is summarized as follows:

4/20/2022 RFP Posted
TBD Proposals Due
TBD Contract Awarded
TBD Final Deliverables Submission Deadline
  1. Project Background

The Zcash protocol enables private money applications which can be leveraged by interacting with the decentralized protocol by

  1. Running a node and utilizing RPC commands,

  2. Working with the Golang-based lightwalletd service, and

  3. Interfacing with the librustzcash Rust library directly.

The barrier to entry for building apps on Zcash is too high and there is a need to extend interfaces in popular languages for developers to rely on Zcash’s underlying cryptography without re-writing the code. Throughout this project, the applicant will be required to collaborate with Zcash core developers & will receive advisory assistance from ZCG and various developers from the Zcash ecosystem to help build the right product.

  1. Scope of Work

Mozilla’s UniFFI is a toolkit for building cross-platform software components in Rust.

https://mozilla.github.io/uniffi-rs/

By writing the core business logic in Rust and describing its interface in a special interface definition file, Zcash developers can use UniFFI to:

  • Compile your Rust code into a shared library for use on different target platforms.

  • Generate bindings to load and use the library from different target languages - Kotlin, Swift, Python & Ruby.

The duration of this grant is approximately 3 months with the potential opportunity for becoming the Zcash UniFFI repo maintainer. Once ready, the deliverable shall be put up for review done by Zcash core developers(based on their availability) & audited via a separate grant sourced from the ZCG. The applicant will be required to fill out KYC documents with the Zcash Foundation, which is responsible for the administration of this grant.

Project Deliverables:

  1. UniFFI library setup and bindings supporting Kotlin, Swift, Python & Ruby platforms.

  2. Writing methods to expose the functionality of librustzcash including (but not limited to):

  • Parsing and verifying the integrity of the Unified Addresses, ZIP-321, transaction building, payment disclosure, broadcast

  • ZIP-321 URI request parsing to librustzcash for building a transaction that is ready to be broadcast.

  • get Address for Unified Address(Orchard and/or Sapling AND Transparent pool encodings), Sapling Z-address & Transparent T-address.

  • get Incoming & Full Viewing Key for UAs & Sapling addresses.

  • get spending key for Unified Address, Sapling Z-address & Transparent T-address private keys.

  • HD address access and parsing.

  • Validate address for Unified Address, Sapling Z-address & Transparent T-address.

  • get a fee rate (flat 0.00001 per ZIP-313).

  • Generate transactions to send coins from/to UA, Sapling Z-address & Transparent address (by providing an input of notes to spend from). Define interfaces to provide the inner workings of notes, internal addresses, etc.

  1. Writing tests with pre-generated data for each method for every supported platform - Kotlin, Swift, Python & Ruby.

  2. Documentation for every method with emphasis on utilizing Unified Addresses by default.

  3. The project codebase must be hosted on Zcash Foundation’s GitHub repo.

  1. Proposal Requirements

The Proposal shall outline the Grantee’s Scope of Services, which at a minimum must include the criteria set forth within this Request for Proposal, and the Grantee’s approach to administering and completing the project. The applicant/team must have the following:

  • A strong understanding of Zcash and blockchain fundamentals.

  • Proficient in Rust language.

  • Writing tests in Kotlin, Swift, Python & Ruby.

  • Good code documentation skills.

Nice to Haves:

  • Experience with building on librustzcash.

  • Contributions to librustzcash repo.

  • Experience building apps in Kotlin, Swift, Python & Ruby.

  • Previous technical writing experience to help with documentation of code.

  1. Selection Criteria

The applicant must attach links to the team member’s resume and links to related prior completed works. Proposals that do not involve Mozilla UniFFI(e.g. Diplomat) would also be evaluated. ZCG will review the Proposals and make a selection based on the best value, considering the following selection criteria:

Criteria Standard Weighting Factor
Cost Does the Grantee(s) provide a cost proposal that is deemed reasonable for the complexity of the work to be undertaken? Does it provide “value for money”? 4
Personnel Qualifications Do the assigned personnel have the skills and experience to produce the project’s desired outcome? Have personnel demonstrated success in these roles with documented examples of direct experience with this type of work? 3
Project Approach Does the Proposal approach show an understanding of project constraints and meet the project objectives? Do the proposed work hours accurately reflect the level of effort required to complete each Project task? Does the Proposal approach demonstrate an efficient, reliable plan of progression and achievable timeline? 3

The criteria scale ranges from 1 to 10: 1 is poor, 5 is average, and 10 is outstanding. Criteria will be multiplied by the associated weight to give a weighted score, which will be summed for a cumulative score. The maximum possible cumulative score is 100.

  1. Diversity Statement

ZCG believes in providing equal opportunity to all business enterprises to participate in all aspects of the ZCG grant program without regard to race, creed, age, sex, national origin, ethnic identity, physical or mental disability, veteran status, marital status, economic status, religion, sexual orientation, gender identity or expression, or any other legally protected basis, and will conduct its grant program so as to prevent such discrimination.

Recognizing that some individuals, groups, and business enterprises, including Minority Business Enterprises, Women Business Enterprises, Disability-Owned Business Enterprises, LGBTIA+ Owned Business Enterprises, and Veteran-Owned Businesses, have not historically received opportunities to participate equally in contracting opportunities and to ensure and reaffirm ZCG’s continuing commitment to progress and succeed in achieving the goal of equal opportunity, ZCG is committed to the goal of enhancing economic opportunities for Diverse Businesses. ZCG will make every good faith effort to identify and utilize Diverse Businesses.

A Grantee that is a Diverse Business may establish its qualification by providing to ZCG:

  • Its certification status from a federal, state, or local governmental agency; or
  • Documentation that would enable ZF to verify that the Grantee qualifies (examples include community engagement, public declarations, etc).

This method is designed to cover those Grantees who are easily verifiable, such as sole proprietorships, small partnerships, closely-held corporations, and small companies that do not engage in significant government business or do not have the resources to seek a governmental or third-party certification. ZCG will provide minorities, women, persons with disabilities, LGBTQI+ persons, and veterans equal opportunity to participate in all aspects of contracting programs.

It is not the policy of ZCG to provide information or other opportunities to Diverse Businesses that will not be available to all other business enterprises. It is the intent of this statement to establish procedures designed to assure Diverse Business access to information and opportunities available to other business enterprises. ZCG’s intent is to widen opportunities for participation and to increase competition.

Definitions:

  • “Disability-Owned Business” means a business enterprise which is Owned and Operated by one or more persons with disabilities.
  • “LGBTQI±Owned Business” means a business enterprise which is Owned and Operated by one or more lesbian, gay, bisexual, transgender, queer, intersex, and other sexual and gender identities (“LGBTQI+”).
  • “Minority Business Enterprise” means a business enterprise which is Owned and Operated by one or more of the following ethnic minority groups: African American, Hispanic/Latino, Asian American/Pacific Islander, and Native American.
  • “Owned and Operated” means (1) the business enterprise is at least 51% owned by a person or persons within one of the respective diversity groups, or in the case of any corporations, limited liability companies, or partnerships, at least 51% of the voting stock or interests, as applicable, is owned by a person or persons within one of the respective diversity groups and (2) the management and daily business operations of the business enterprise are controlled by a person or persons within one of the respective diversity groups.
  • “Women Business Enterprise” means a business enterprise which is Owned and Operated by one or more women.
  • “Veteran-Owned Business” means a business enterprise which is Owned and Operated by one or more veterans
  1. General

  2. Selection of a Grantee(s) will be based on the selection criteria described above. The proposal shall address all of the selection criteria.

  3. All pre-award costs related to Proposal generation shall be borne by the Grantee(s).

  4. Proposal information is not considered confidential or proprietary. Trade secrets and other proprietary data contained in Proposals may be held confidential if the Grantee(s) requests, in writing, that ZCG does so, and if ZCG agrees, in writing, to do so. Material considered confidential by the Grantee(s) must be clearly identified. Such confidential/proprietary information must be easily separable from the non-confidential sections of the Proposal. Marking the entire Proposal as proprietary will be neither accepted nor honored.

  5. A potential or actual conflict of interest exists when commitments and obligations are likely to be compromised by the Grantee’s other material interests, or relationships (especially economic), particularly if those interests or commitments are not disclosed. Therefore, it is the Grantee’s responsibility to disclose any real or perceived conflict of interest with an officer or senior employee of the Zcash Foundation or a ZCG committee member, at the time of RFP submission and anytime during a subsequent grantor/grantee engagement, Updated Zcash Foundation and ZCG rosters can be viewed here.

  6. Grantee(s) may be required to agree to AML/KYC requirements as set forth here. Applicability of these requirements will vary based on multiple factors, to be determined at the time of grant award.

  7. Upon ZCG approval, the selected Grantee(s) shall submit their winning proposal to the grants platform for tracking, milestone payment (if applicable), and transparency purposes. Instructions regarding community posting and update requirements will be provided upon grant approval.

7 Likes