Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RFP: Standard JavaScript Mina Wallet Provider API #33

Closed
kantp opened this issue May 30, 2024 · 5 comments
Closed

RFP: Standard JavaScript Mina Wallet Provider API #33

kantp opened this issue May 30, 2024 · 5 comments
Assignees

Comments

@kantp
Copy link
Contributor

kantp commented May 30, 2024

RFP: Standard JavaScript Mina Wallet Provider API

  • Intent: There exists no standard way for wallets and zkApps to interact. Standardising this API means zkApps have to spend less time integrating against many wallets, allowing zkApps to interact with any compliant wallet.
  • Reference RFC: RFC-0008
  • Foundation or Organization Sponsor: Philipp Kant (GitHub: @kantp, [email protected])
  • Submit by: 2024-06-28
  • Selection by: 2024-07-12

Background

RFC-0008 describes a standard JavaScript API for Mina wallet providers, in order to ease third party integration with different wallets. The purpose of this RFP is to create a standard that covers what is described in RFC-0008, along with artefacts that ease adoption.

Objectives and Desired Artifacts

In order to have the standard be adopted, we desire the following artefacts:

  • A typescript library that provides all the data types of the standard
  • Good documentation of all the methods of the standard
  • Client side utility functions for consuming the API from a zkApp, including usage examples
  • Ideally, we would like to see the standard implemented in at least one existing wallet, as a proof of viability

Impact Measurement

Impact of this RFP will be measured by adoption. As listed above, we would like to see the standard implemented in at least one wallet as part of the work. Having good documentation, examples, and client-side utilities will be crucial for wide adoption.

Application Instructions

To apply for this RFP, applicants are required to:

  1. Thoroughly review all listed requirements and deliverables to ensure a complete understanding of the RFP's scope and objectives.
  2. Complete the application form provided at [link to form], including all requested information and any preliminary ideas or proposals.
  3. Submit their detailed proposal in the specified format to [submission email/address]. Proposals should be structured and clear, with an emphasis on how the applicant intends to achieve the RFP's objectives.
  4. Engage with the Mina community through the designated discussion channels, sharing initial ideas and seeking feedback to refine the proposal before submission.

Applicants are encouraged to ask questions and seek clarifications as needed to fully comprehend the expectations and objectives of this RFP.

Submission Form Template

Application Form

Ensure that all information provided is accurate and complete to best represent your proposal.

Contact Information

Team Lead (Main Contact Person):

  • Name:
  • Position/Role:
  • Email:
  • GitHub Username:
  • Telegram/Discord Handle:
  • Mina Recipient Address (for potential funding):

Team Members:

  • Member 1:
    • Name:
    • Role:
    • Relevant Experience/Previous Work (with links):
    • (Add more members as needed)

Team Overview:

What makes you best-suited to execute this project?

[Provide a comprehensive answer]

Proposed Solution

  • Proposed Solution Description:
    • Please describe your proposed solution based on the requirements and core features outlined in the RFP:
    • [Provide a detailed explanation]

Execution Plan

  • Step-by-Step Plan:

    • Please outline your step-by-step plan to execute this project, including expected deadlines for each piece of work:
    • [Provide a timeline with milestones]
  • Critical Milestones:

    • Please define the critical milestones that should be used to determine whether you’ve executed on this proposal:
    • [List and explain the milestones]

Additional Support and Funding

  • Support Requirements:

    • Please list any additional support your team would require to execute this project (financial, technical, etc.):
    • [Specify the support needed]
  • Grant Funding:

    • [Explain your financial needs and conditions]

Community Engagement

  • Engagement with Mina Community:
    • How have you engaged with the Mina community to refine your proposal before submission?
    • How does your experience with Mina and the community increase the likelihood of success?
    • [Describe the engagement]

Please ensure that you have reviewed all listed requirements, deliverables, and the provided resources to ensure a complete understanding of the RFP's scope and objectives.

@mrcnk
Copy link

mrcnk commented Jun 26, 2024

Contact Information

Team Lead (Main Contact Person):

  • Name: Tomasz Marciniak
  • Position/Role: CEO, Lead Developer at pallad.co
  • Email: [email protected]
  • GitHub Username: mrcnk
  • Telegram/Discord Handle: Telegram: @marciniak, Discord: schoolboytom
  • Mina Recipient Address (for potential funding): TBD

Team Members:

  • Member 1:
    • Name: Tomasz Marciniak
    • Role: CEO at pallad.co, Senior Software Engineer at GridPlus
    • Relevant Experience/Previous Work (with links): Created Pallad from scratch, delivered https://lace.io/ previously, worked on tooling for Cardano, led development of various Fintech projects. Experienced in developing crypto TypeScript SDKs (Cardano SDKs, GridPlus SDK).
  • Member 2:
    • Name: Rafał Goławski
    • Role: Senior Full Stack TypeScript Developer
    • Relevant Experience/Previous Work (with links): pallad.co features and bug fixes, 6+ years of professional Web

Development experience

Team Overview:
What makes you best-suited to execute this project?

Our team consists of experienced TypeScript developers who have worked on various Web3 products in different ecosystems, including Ethereum, Cardano, and Mina. We always tend to raise the bar and adhere to the highest industry standards, writing type-safe, reusable and tested code. Our wallet, Pallad, is a manifestation of these principles.

Proposed Solution

  • Proposed Solution Description:
    • Our team in Pallad has already implemented a web connector that strictly follows RFC-0008 and RFC-0009. The source code to verify this is available in the "web-provider" package of Pallad: https://github.com/palladians/pallad/tree/main/packages/web-provider. We hope it meets the "Ideally, we would like to see the standard implemented in at least one existing wallet as proof of viability".
    • Our solution would be to extract the existing types and interfaces so that they can be reused by any Mina wallet.
    • We have an existing documentation system that publishes articles to pallad.co/docs, and one of our next steps is to add complete Web Connector documentation and guides.
    • To make life easier for zkApp developers, our team can provide a Viem (https://viem.sh/) and Wagmi (https://wagmi.sh/) inspired TypeScript client library that would provide a thin layer of abstraction over the Web Connector to help developers more easily integrate with Mina wallets, handle exceptions, and allow them to start building simple zkApps in minutes.

Execution Plan

  • Step-by-Step Plan:
    • Improve and extract Pallad's Web Connector's existing TypeScript types to satisfy the "A TypeScript library that provides all the data types of the standard".
    • Extend the documentation in pallad.co/docs and add comprehensive documentation for the Web Connector (based on RFC-0008).
    • Create a Viem/Wagmi inspired utility in the form of reusable Vanilla TypeScript (TypeScript without framework abstraction) and React hooks to enable zkApp-Wallet interaction based on Web Connector.
    • Publish @mina-js/provider (reusable TypeScript interfaces and types for existing and future wallets) and @mina-js/connect (Viem/Wagmi inspired client) to NPM.
    • Create a sample zkApp using @mina-js/connect, add test automation, and perform regression to ensure quality standards. We will reuse parts of our existing benchmark zkApp for our Web Connector implementation: https://palladians.github.io/mina-connector/.
  • Critical Milestones:
    • Extracted Web Connector types and interfaces to @mina-js/provider - 2 weeks
    • Comprehensive docs and guides for Web Connector written and published to pallad.co/docs - 2-3 weeks
    • @mina-js/connect developed and published to NPM - 3-4 weeks
    • Sample zkApp using @mina-js/connect deployed - 2 weeks
    • Final Quality Assurance - 1 week

Additional Support and Funding

  • Support Requirements:
    • Coordination with Mina Foundation to include other teams building wallets with Web Connectors on Mina for a feedback loop.
  • Grant Funding:
    • Development breakdown of RFP specified delivery:
      • @mina-js/provider library work - $10000
      • Documentation and guidelines work - $8000
      • @mina-js/connect library work - $40000
      • Sample zkApp work - $8000
      • Quality Assurance and test automation work - $8000
      • Total: $74000

Community Engagement

  • Engagement with Mina Community:
    • How have you engaged with the Mina community to refine your proposal before submission?
      • We are in touch with zkApp developers on Mina Protocol official Discord server (#zkapps-developers), on our own Discord server (Pallad - Community), on zkIgnite related channels and Telegram. There are already ongoing discussions with Auro team to improve Web Connector experience in both wallets.
    • How does your experience with Mina and the community increase the likelihood of success?
      • Having an existing web connector implementation in TypeScript, with existing types and interfaces, should greatly increase the likelihood of success. We have a proven track record in other Mina grant programs such as zkIgnite 3 and Mina Navigators.

@wjdfx
Copy link

wjdfx commented Jul 3, 2024

Contact Information

Team Lead (Main Contact Person):

  • Name: Jale Lau
  • Position/Role: Director
  • Email: [email protected]
  • GitHub Username: wjdfx
  • Telegram/Discord Handle: Discord@niu8
  • Mina Recipient Address (for potential funding): TBD

Team Members:

  • Member 1:

    • Name: Jale Lau
    • Role: Product manager and developer
    • Relevant Experience/Previous Work (with links):
      Senior blockchain industry background, head of Auro Wallet. https://github.com/wjdfx
  • Member 2:

    • Name: Buling Lyu
    • Role: Full stack engineer
    • Relevant Experience/Previous Work (with links): EX. iToken and Halo Core Engineer. https://github.com/lvshaoping007
  • Member 3:

    • Name: Remever Lee
    • Role: Back-end Engineer
    • Relevant Experience/Previous Work (with links): Proficient in Java and Golang. Back-end experience with well-known wallets and explorer products. https://github.com/romever

Team Overview:

  • Our team is Auro Wallet. A simple yet powerful
    Mina Protocol Wallet. Since the first day that Mina Mainnet went live, it has been operational. Right now, Auro Wallet is the most widely used and well-liked wallet on the Mina Protocol. There are nearly 100,000 installations. https://www.aurowallet.com.

  • Our team members have developed wallets and explorers in the past and have many years of blockchain experience.

Proposed Solution

  • Proposed Solution Description:

    • Our goal is that zkApp can be quickly connected to the Mina wallet, and it only needs to develop once to interact normally with the Mina wallet that supports the standard provider, and users can get good feedback during use.

    • We provided a lot of useful feedback on RPC-0008.
      We plan to communicate with more zkApp developers and other wallet developers based on RFC-0008 and the mina-provider currently used. Fully understand user needs to optimize and adjust the provider and related project content, so that zkApp can access the wallet more easily, so as to better implement the communication standard.

    • The mina-provider (TypeScript) currently used by Auro Wallet has been running healthily on the Mina Protocol for over 2 years with good documentation and sample demo code (TypeScript). We have been actively communicating with zkApp developers, accumulating valuable experience, and actively adjusting the provider to better meet the needs of developers on the premise of facilitating zkApp development and ensuring wallet security. We have currently implemented the main features of RFC-0008, and the above mentioned projects are open source.

    • We provide quick technical support services, and zkApp developers and users can communicate with us on Discord, Telegram, and GitHub in order to better access the wallet provider.

Execution Plan

  • Step-by-Step Plan:

    • mina-provider intergate RFC-0008 optimization development. 1 week
    • auro-wallet-extension Access to the latest mina-provider and test case development. 3 weeks
    • Multi-wallet platform (wagmi/beacon on Mina Protocol) development. 5 weeks
    • test-zkApp use Multi-wallet platform connects to the auro-wallet-extension. 3 days
    • Update the document about the latest mina-provider API content. 2 days
    • Communicate with more zkApp and Mina wallet developers. Ongoing during development
  • Critical Milestones:

    • mina-provider intergate to RFC-0008. Merge the existing mina-provider API with RFC-0008 optimization.

    • auro-wallet-extension Connect to the latest version mina-provider. Auro-wallet-extension develops the mina-provider core feature. When zkApp communicates with Auro Wallet, the corresponding content can be returned.

    • auro-wallet-extension develops test cases of mina-provider. Verify the robustness of auro-wallet-extension for provider functions to ensure secure and stable output.

    • Multi-wallet platform (wagmi/beacon on mina platform) and self-test case development.
      Access the mina-provider to provide a variety of wallet portals, and zkApp only needs to access the platform to adapt to the standard Mina-wallet. Support theme customization, black mode and other features.

    • test-zkApp use Multi-wallet platform and debugs with auro-wallet-extension. This step mainly simulates the process of zkApp interacting with mina wallet. As an example of the mina-provider and Multi-wallet platform, all the functions of the mina-provider are included.

    • Update the provider document to the latest. docs is the access document for the mina-provider, and zkApp developers can see all the content of the mina-provider API and important updates.

Additional Support and Funding

  • Support Requirements:

    • Technical communication with the o1js team, zkApp developers, and other wallet developers in order to develop a provider that is more compatible with Mina protocol features.
  • Grant Funding:

    • mina-provider access RFC-0008 optimization develop. $2,500
    • auro-wallet-extension access the latest mina-provider and test case develop. $7,500
    • Multi-wallet platform and its test cases develop. $12,500
    • test-zkApp use Multi-wallet platform interact and debug with auro-wallet-extension $1,500
    • Update the document about the latest mina-provider API content. $1,000
    • Total: $25,000

Community Engagement

Engagement with Mina Community:

  • How have you engaged with the Mina community to refine your proposal before submission?

    • We have many private and public discussions on how to help zkApp developer improve Mina provider. such as: Zeko, Lumina, ZkNoid, MinaNFT, Minascan etc.
    • In Mina official Discord channel, We are deeply involved and follow up on every request for zkApp and wallet integration.
    • We have a public Telegram group grap feedback and suggestions from developers.
  • How does your experience with Mina and the community increase the likelihood of success?

    • The mina provider we deployed has been verified for 2 years. test-zkApp provides all API examples of mina provider. These are the results of the joint efforts with Mina and the community. Based on the above work, we believe that the interaction between the provider and zkApp will be more convenient.

@kantp
Copy link
Contributor Author

kantp commented Jul 17, 2024

Update: we're happy to have received two great proposals. Unfortunately, we are behind on the selection process. Sorry about that, and thank you all for your patience.

@tmkec
Copy link

tmkec commented Aug 13, 2024

Happy to share it here

Mina Foundation - Proposals for issues 33.pdf

@TyrellCorp2020
Copy link
Contributor

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Development

No branches or pull requests

5 participants