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

Create a GitLab Plugin for zkApp Wallet Setup #14

Open
6 tasks
jmikedupont2 opened this issue Sep 8, 2024 · 0 comments
Open
6 tasks

Create a GitLab Plugin for zkApp Wallet Setup #14

jmikedupont2 opened this issue Sep 8, 2024 · 0 comments

Comments

@jmikedupont2
Copy link
Member

GitLab Plugin for zkApp Wallet Setup

Issue Title: Create a GitLab Plugin for zkApp Wallet Setup


Description:

We want to develop a GitLab plugin that facilitates the creation of zkApp wallets for users and securely stores the relevant data using GitLab CI/CD variables. The plugin will generate a wallet, store it in GitLab’s CI/CD pipeline as environment variables, and help users initiate their wallet setup without us managing the wallet directly. This will be done through an OAuth app to allow secure interaction between GitLab and the wallet service.


Features:

  1. OAuth Integration:

    • Implement OAuth authentication for secure communication between the GitLab instance and the wallet service.
    • The OAuth app will guide users through authorization and wallet setup without the plugin managing the wallet on their behalf.
  2. Wallet Creation Job:

    • Create a GitLab job (CI/CD) that runs on the GitLab Runner and is triggered after OAuth authentication is completed.
    • The job will:
      • Generate a new zkApp wallet.
      • Assign the wallet address and keys to GitLab environment variables (e.g., WALLET_ADDRESS, PRIVATE_KEY, PUBLIC_KEY).
      • Ensure wallet data is securely stored and not exposed in logs.
  3. Storing Wallet in GitLab Variables:

    • Set up secure GitLab CI/CD environment variables to store the wallet keys and related data.
    • Make sure these variables are protected and masked where necessary.
  4. User Interface:

    • Add a UI/UX interface within GitLab to guide the user through the wallet creation process after OAuth.
    • The interface will include:
      • Option to connect via OAuth.
      • Trigger button to create the wallet and store it in GitLab variables.
      • Documentation to guide users on accessing and managing their wallet after setup.
  5. Job Template:

    • Provide a customizable GitLab CI job template that users can include in their pipeline to leverage the wallet details for zkApp deployment.
    • Example job for creating and managing a wallet.
  6. Security Considerations:

    • Ensure the plugin operates in a secure manner, especially when handling private keys and sensitive information.
    • Utilize GitLab’s built-in security mechanisms for masking environment variables and ensuring only authorized jobs can access them.

Acceptance Criteria:

  • OAuth integration is functional and allows users to authorize and connect to the zkApp wallet creation service.
  • Wallet creation job is triggered after OAuth connection and creates the wallet successfully.
  • Wallet details are securely stored in GitLab CI/CD environment variables.
  • A UI within GitLab helps guide the user through wallet setup and job execution.
  • The CI job template for zkApp deployment is provided and well-documented.
  • Security and best practices are adhered to when handling sensitive wallet data.

Technical Considerations:

  • The wallet creation logic should be developed in a way that GitLab runners can execute it efficiently and securely.
  • Consider the use of GitLab’s CI/CD features like masked and protected variables to handle private keys and sensitive data.
  • Ensure OAuth tokens are stored securely and only used for the wallet creation process.

Out of Scope:

  • We will not manage the users’ wallets directly. The users retain full control over their wallet and the associated keys.

Milestones:

  1. Implement OAuth flow and GitLab integration.
  2. Create a job template for wallet creation.
  3. Build the user interface to guide users through wallet creation.
  4. Test security and wallet management.

Reference:

https://docs.minaprotocol.com/node-operators/generating-a-keypair

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

No branches or pull requests

1 participant