Giter Club home page Giter Club logo

builder-bounties's Introduction

Nillion Builder Bounties

Nillion is a secure computation network that decentralizes trust for high value data in the same way that blockchains decentralized transactions. Builder bounties reward developers for building awesome open source blind applications, libraries, and projects on Nillion.

Builder Bounty Board

Use our Builder Bounty Board to discover open bounties. Open bounties have specific requirements; follow the bounty's submission instructions by the due date to be eligible for rewards.

Developer Resources

Getting help

  • Have a question about a specific bounty? Navigate to the bounty within the Builder Bounty Board to ask your question as a comment on the posted bounty.
  • Start a technical discussion or ask a question on Github Discussions
  • Contact the Nillion team in the #developers-general channel on Discord

Terms and Conditions

builder-bounties's People

Contributors

oceans404 avatar

Stargazers

Didier A. E. Gabiam avatar Holder_funny avatar  avatar Feras Barqawi avatar winrhcp avatar

Watchers

Sergio Medina avatar

Forkers

winrhcp

builder-bounties's Issues

Build a Passkey Proof of Concept with the WebAuthn API for a Ed25519 Key Pair

Bounty Objective

A Nillion Network user has a Ed25519 key pair consisting of a public and private key.

Implement a passkey system using the WebAuthn API with Ed25519 key pairs so that a user can authenticate their ED25519 key pair without revealing it. The proof of concept implementation should include both registration and authentication processes, allowing users to create and use passkeys on supported devices. The final deliverable will be a fully functional example that demonstrates the complete backend and frontend flow, including proper handling of the WebAuthn API and storage of necessary public key data.

Resources

Bounty Requirements

Build an open source backend that:

  • Implements endpoints for initiating registration and authentication
  • Generates and manages challenges for WebAuthn requests
  • Validates registration and authentication responses
  • Stores public keys and metadata in a database
  • Uses appropriate libraries and frameworks to handle cryptographic operations

Build an open source frontend that:

  • Implements registration and authentication flows
  • Communicates with the backend to fetch registration and authentication options
  • Uses the WebAuthn API to create and get credentials
  • Properly handles and parses responses from the WebAuthn API
  • Provides a user-friendly interface for registration (creating a new passkey) and authentication processes
  • Ensures the private key is securely generated and stored within the authenticator (for example a user’s device, a FIDO2 security key, or phone). The private key never leaves the authenticator and is not exposed to the backend, frontend, or any other parties. Only the authenticator can use the private key to sign authentication challenges.

Document your solution:

  • Submit your completed implementation as an open source GitHub repo
  • Include instructions in the README on how to run your implementation
  • Explain who are the trusted parties in your solution’s flow - only the authenticator and the user’s device (browser) should be trusted parties
  • Provide a demo video showcasing your frontend’s registration and authentication flows

How to Submit

Review the Terms and Conditions for Nillion Builder Bounties here.

Open source your repo and submit your bounty by creating a new discussion in Nillion’s “Show and Tell” Github Discussions Forum. For project type, choose “Builder Bounty Submission”

Launch a Blind AI App on the Nillion Testnet

Bounty Objective

The Nillion community wants to see more Blind AI Apps. Create and launch a Blind AI application on the Nillion Testnet and provide a live link so anyone can try it. Your Blind AI App should use at least 1 Nada program with the Nada AI library to provide predictions while ensuring data privacy.

Bounty Requirements

Create a new Bind AI App using the following workflow:

  1. Pick an Interesting Data Set:

    Choose a dataset that is suitable for your AI project. The dataset should be relevant and provide meaningful insights.

  2. Train a Plaintext Model:

    Use your preferred AI tools to train a model on the chosen dataset. Check out examples and Google Colab links in nada-ai examples. Here are the available models:

    • Multilayer Perceptron: Available layers include Linear, Conv2d, AvgPooling2d, DotProductSimilarity, ReLU, Flatten
    • Linear Regression Model: Linear model
    • Logistic Regression Model: Linear model implementation with cleartext sigmoid and potential multiclass classification
    • Prophet: Time series forecasting model
  3. Write at Least One Nada Program that utilizes the nada-ai library

    Ensure that your program integrates the trained model and is capable of making predictions.

  4. Store your AI Program on the Nillion Testnet

  5. Build a Blind App:

    Build a blind app that uses the compiled Nada program to obtain live, privacy-preserving predictions from your model.

    Ensure the app securely computes predictions without revealing sensitive data.

  6. Host this web app demo and provide a live link so we can try it

How to Submit

Review the Terms and Conditions for Nillion Builder Bounties here.

Open source your repo and submit your bounty by creating a new discussion in Nillion’s “Show and Tell” Github Discussions Forum. For project type, choose “Builder Bounty Submission”

Build a Nada Playground Web App

Bounty Objective

Build an open source “Nada Playground” web app that provides an interactive environment for developers to write, run, and share Nada code. The playground should be user-friendly and serve as a resource for learning and experimenting with Nada programming.

Here are some examples of awesome open source language playgrounds for inspiration

Additional resources

Bounty Requirements

Build an open source Nada Playground web app. This bounty submission should include a live working link to your Nada Playground web app. We built a proof of concept Nada Sandbox that you can use as inspiration, but require that your bounty submission is built with a modern JavaScript framework (React, NextJS, etc.)

Your Nada Playground must include these core components:

Nada code editor

  • Provides a code editor with syntax highlighting for Nada programs
  • Allows users to write and edit Nada program code

Inputs section

  • Provides a way to add each Nada program input by name, type, and value corresponding to the Nada program
    • input name
    • data type (PublicInteger, PublicUnsignedInteger, SecretInteger or SecretUnsignedInteger)
    • input value
  • Has a “Run” button that starts program execution (compile and run) with the inputs

Outputs section

  • Shows the returned outputs after a computation is run

Program Executor

  • Compiles the Nada program using the jsnadac script
  • Runs the compiled Nada program with the values from the input section using the nada_run script

Nada Playground Feature Wishlist

How to Submit

Review the Terms and Conditions for Nillion Builder Bounties here.

Open source your repo and submit your bounty by creating a new discussion in Nillion’s “Show and Tell” Github Discussions Forum. For project type, choose “Builder Bounty Submission”

Create a blind app inspired by a Nillion tinydemo library

Description

Create a blind app inspired by a Nillion tinydemo library (tinybid auction, tinybio biometric auth, tinybin API data integration)

Image

Requirements

  1. Take a look at our 3 existing repos tinybid - blind auction, tinybio - biometric authentication, and tinybin - api call. These repos don't use Nada yet. Use one of these 3 existing repos, tinybid, tinybio, or tinybin, as inspiration to create a local Nillion blind application that solves a novel and imaginative use case that you define. Your Nillion blind app (frontend + Nada programs should meet these requirements:
    1. Come up with a novel use case for your Nada programs based on the 💡ideas below.
    2. Your frontend uses the Nillion JavaScript Client to compute with your Nada program(s). Hook this up to either the existing frontend demo code or a frontend demo you create tailored to your novel use case. Hint: try Nillion’s scaffold-nillion NextJS starter repo within the JavaScript Developer Quickstart.
    3. All code is in an open source repo.
  2. Create a video walkthrough to demo your build.
  3. Submit your open source repo and video by creating a new post in the "Show and Tell” category of our Nillion Github Discussions
  4. Reply to the Farcaster bounty post with a link to your "Show and Tell” Github discussions post

Pick one of the 3 tinydemo libraries

1. tinybid

To qualify for the tinybid bounty, you could write a Nada program that does some form of an auction where each secret is a bid amount from a different bidder and returns the highest bid and the winning bidder. Connect that program to a frontend so bidders can submit their bids

2. tinybio

To qualify for the tinybio bounty, you could write a Nada program that compares 2 sets of points, each of which is a secret input. Your frontend could use an existing auth api to get the facial points from an image or webcam) and feeds these to the Nada program to compute how close or far apart they are to decide if they are the same face.

3. tinybin

To qualify for the tinybin bounty you could write a Nada program that compares a secret user input to an input from an api. One example could be a weather guessing app. For a weather guessing app, you could compare what a user secretly guesses the temperature will be tomorrow to an input that is the api call result of tomorrow's weather. The frontend would be where the user places a guess at tomorrow's temperature, stored as a secret input.

Rewards

  • 2,000 USDC for the best app that is inspired by Nillion’s tinybid library
  • 2,000 USDC for the best app that is inspired by Nillion’s tinybio library
  • 2,000 USDC for the best use of any third-party API with blind computation, inspired by Nillion’s tinybin library

Judging Criteria

Nillion will award one 2,000 USDC prize per bounty. The best project for each bounty category will be chosen considering the following:

  • Cleanest and most efficient nada programs
  • Overall clean and well documented code
  • Polished UX and UI on the frontend to make it intuitive and fun for the user to use
  • Best explanation of project within Github Discussions Show and Tell post and video demo

Questions about bounty requirements? Ask us on Discord or Github discussions

Create an “Add Chain to Keplr Wallet” Button npm Package

Bounty Objective

Create an importable button component via an npm package that allows users to easily add a custom blockchain to their Keplr wallet. Keplr is a popular wallet extension for Cosmos-SDK-based blockchains. This button should be configurable and seamlessly integrate with the Keplr wallet, enabling users to add new chains including NilChain Testnet.

Bounty Requirements

Build an open source npm package that:

  • Provides a React component for a button that, when clicked, prompts the user to add a custom blockchain to their Keplr wallet
  • Allows developers to customize the button text and ChainInfo
  • Uses the Keplr API to facilitate the addition of the new chain
  • Validates and handles errors gracefully if the chain cannot be added
  • Provides feedback to the user indicating whether the addition was successful or not
  • Is compatible with major web browsers (Chrome, Firefox, Edge)

Build a web app demo that:

  • Imports your npm package
  • Includes a working “Add NilChain to Keplr” button with the NilChain Testnet chain info from the chain-info.json file: https://docs.nillion.com/network#nilchain-testnet
  • Shows the NIL balance of the connected account
  • Host this web app demo and provide a live link so we can try it.

Document your solution:

  • Submit your completed implementation as an open source GitHub repo
  • Include instructions in the README on how to run your implementation
  • Explain how to install and use your npm package in a new web app

How to Submit

Review the Terms and Conditions for Nillion Builder Bounties here.

Open source your repo and submit your bounty by creating a new discussion in Nillion’s “Show and Tell” Github Discussions Forum. For project type, choose “Builder Bounty Submission”

Build a Minesweeper game

Description

Build a Minesweeper game with blind computation using Nillion

minesweeper

Requirements

  • Code is in an open source repo and game logic uses a Nada program
    • The game should have a visual frontend players can interact with
    • You can use any fixed size of minesweeper board
    • The nada program should have at least two parties, a party who “places” the mines and a party who “minesweeps”
      • If you want to be creative and have more parties, feel free to do so
  • Post a video walkthrough of your build
  • Crosspost the above in the "Show and Tell” category of our Github Discussions forum: https://github.com/orgs/NillionNetwork/discussions

Do you have questions about the Minesweeper bounty or requirements? Ask here: https://discord.com/channels/905926225120338000/1204182721987878962/1238546393564581998

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.