Giter Club home page Giter Club logo

polycircuit's Introduction

FHE components library

This repository is an initial phase of building an application layer FHE Components library for developers and serves as the home to the award-winning solutions from the FHERMA challenges platform. The library will be constantly extended by adding new FHE components.

The initial version of the library contains the results of the first challenges:

Check out the FHERMA competition platform for innovative FHE solutions and challenges.

FHE backend

Currently, Polycircuit supports two FHE backends:

  • OpenFHE
  • Lattigo

The library is designed with flexibility in mind, ensuring it's backend-agnostic.

Contributing to the Library

There are two ways to contribute to Polycircuit:

  • Create PR with a new component or improvements for an existing one;
  • Participate in the challenges on the FHERMA platform.

Stay Connected

Join our vibrant community to stay updated on the latest developments, participate in discussions, and connect with fellow FHE enthusiasts:

  • Discord: Join our Discord server for real-time chat, Q&A, and community events.
  • Twitter: Follow us on X for the latest news, updates, and interesting tidbits from the world of Fully Homomorphic Encryption.
  • LinkedIn: Join our LinkedIn group to stay in touch with the team and the updates.
  • Visit our Fair Math blog and FHERMA challenges wrap-ups for in-depth articles, feature announcements, tutorials, and insights into the future of privacy-preserving technologies.

polycircuit's People

Contributors

alexandra-mara avatar g-arakelov avatar nkaskov avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

polycircuit's Issues

[Docs]: Add description of the existing components

Our challenges platform hosts competitions where the winning solutions are subsequently open-sourced and integrated into our library as components.

  • Suggestion 1: I recommend incorporating markdown files that detail each component within the include/ directory's respective subdirectories. While our blog provides comprehensive summaries of these challenges, the content tends to be heavily focused on the competitions themselves. A more effective approach would be to extract and repurpose the functionality descriptions from these blog posts, using them to clearly articulate each component's purpose and capabilities within its markdown description.

  • Suggestion 2: It's also valuable to communicate the advantages of these components. Extract insights and highlights from our blog posts to articulate why these components stand out. This will not only inform users about the functionalities of the components but also convey their value and the problem-solving capabilities they bring to the table.

  • Suggestion 3: In the bin directory, we currently have binaries to build the particular component. I suggest adding some minor markdowns the as well.

By implementing these suggestions, we can enhance the repository's navigability and provide users with a clearer understanding of each component's functionality and benefits, directly linking the practical applications of our competition outcomes to real-world problem-solving scenarios.

Expected structure of the cpp dir after implementing all three suggestions:

├── CMakeLists.txt               # Top-level CMake configuration
├── src/
├── include/
│   ├── matrix_mult/
│   │   ├── ckks.hpp
│   │   └── README.md            # Description of matrix_mult component
│   ├── sigmoid/
│   │   ├── ckks.hpp
│   │   └── README.md            # Description of sigmoid component
│   └── signum/
│   │    ├── ckks.hpp
│   │    └── README.md            # Description of signum component
├── bin/
│   ├── matrix_mult/
│   │   ├── CMakeLists.txt
│   │   ├── main.cpp
│   │   └── README.md            # Description and usage of matrix_mult standalone component bin
│   ├── sigmoid/
│   │   ├── CMakeLists.txt
│   │   ├── main.cpp
│   │   └── README.md            # Description and usage of sigmoid standalone component bin
│   └── signum/
│   │    ├── CMakeLists.txt
│   │    ├── main.cpp
│   │    └── README.md              # Description and usage of signum standalone component bin

[Docs]: Add placeholders of the planned components

We have a couple of components in the competition phase on fherma right now. We shall add their description in the corresponding directories in the same manner as it is done for existing components.

Suggested content of a planned component markdown:

  • Purpose of the component, use-cases.
  • Link to the challenge on fherma.io
  • ETA according to the ongoing competition

Apart from the markdown, let's add the header (*.hpp) file since it won't be changed after the component is finished. It provides the interface for the component and will help users to understand how it will be used. You can take the header from the corresponding repository in fherma github.

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.