This is a port in the arkwork framework of the original implementation in bellperson of Snarkpack.

Overview

CircleCI

Snarpack on arkwork

This is a port in the arkwork framework of the original implementation in bellperson of Snarkpack. Note both works are derived from the original arkwork implementation of the inner pairing product argument (IPP) paper.

Dependency

Add the following to your Cargo.toml

snarkpack = { git = "https://github.com/nikkolasg/snarpack" }

Usage

See the straightforward example in tests/aggregation.rs.

Contribution

There are plenty of issues to tackle so you're more than welcome to contribute.

Comments
  • Avoid cloning reference manually for sharing channel

    Avoid cloning reference manually for sharing channel

    Currently the par! macro forces us to clone the references to the channel where we send the PairingCheck to, like in here. It would be nice to find a more elegant way for this.

    enhancement 
    opened by nikkolasg 0
  • Review affine/projective usage

    Review affine/projective usage

    For simplicity, everything is put as Affine in the proof. Maybe some elements would benefits from being in projective form, a more in-depth review would be welcomed and any documentation on why each choice is best as well.

    documentation 
    opened by nikkolasg 0
  • Parallel version of fixed and variable base MSM

    Parallel version of fixed and variable base MSM

    This implementation makes heavy usage of parallelization and thus a parallel implementation of those two algorithms would drastically improve the verification speed, as it is done on the original bellperson implementation.

    performance 
    opened by nikkolasg 0
  • Review challenge generation

    Review challenge generation

    Currently the way the transcript works is done accordingly to the bulletproof usage of Merlin transcript which differs from the regular arkwork. A couple of things to review and adapt:

    • it takes 64 bytes of output from the hash function currently, maybe arkwork does it differently
    • it tries to see if there is an inverse first, but doesn't return it, leading to two inversion sometimes (because we need the inverse)
    bug 
    opened by nikkolasg 0
  • Use precomputed tables for fixed based MSM

    Use precomputed tables for fixed based MSM

    Currently there is no pre-computation for the prover SRS, while he has to perform expensive MSM. We should use the available fixed based msm feature of arkwork from here

    performance 
    opened by nikkolasg 0
Owner
Nicolas Gailly
Security blabla. 0522CEE1152EDA6E6658757574A11EE3EE6B320F
Nicolas Gailly
A Rust port of the password primitives used in Django Project.

Rust DjangoHashers A Rust port of the password primitives used in Django Project. Django's django.contrib.auth.models.User class has a few methods to

Ronaldo Ferreira 52 Nov 17, 2022
Generate or convert random bytes into passphrases. A Rust port of niceware.

niceware My blog post: Porting Niceware to Rust A Rust port of niceware. Sections of this README have been copied from the original project. This libr

Andrew Healey 20 Sep 7, 2022
Port path module (and tests) of nodejs to rust using the same algorithms.

rusty_nodejs_path Port path module (and tests) of nodejs to rust using the same algorithms. crates.io Documents Progress posix path.basename(path[, ex

Yunfei He 10 Sep 25, 2022
A Rust port of the password primitives used in Django Project.

Rust DjangoHashers A Rust port of the password primitives used in Django Project. Django's django.contrib.auth.models.User class has a few methods to

Ronaldo Ferreira 52 Nov 17, 2022
A port of TinySMPC into Rust.

smol-mpc Smol-mpc is a tiny library to learn Secure Multiparty Computation (MPC) basics using the Rust programming language. Smol-mpc allows to the us

HashCloak 13 Sep 22, 2023
Node implementation for aleph blockchain built with Substrate framework

This repository contains the Rust implementation of Aleph Zero blockchain node based on the Substrate framework. Aleph Zero is an open-source layer 1

Aleph Zero Foundation 55 Dec 15, 2022
Implementation of Proof of Existence consensus using Substrate Framework, Frame, Pallets, RUST

Substrate Node Template A fresh FRAME-based Substrate node, ready for hacking ?? Getting Started Follow the steps below to get started with the Node T

Vijayendra Gaur 1 Jun 8, 2022
A Rust implementation of OpenAI's Whisper model using the burn framework

Whisper Burn: Rust Implementation of OpenAI's Whisper Transcription Model Whisper Burn is a Rust implementation of OpenAI's Whisper transcription mode

null 19 Jul 24, 2023
Easy to use cryptographic framework for data protection: secure messaging with forward secrecy and secure data storage. Has unified APIs across 14 platforms.

Themis provides strong, usable cryptography for busy people General purpose cryptographic library for storage and messaging for iOS (Swift, Obj-C), An

Cossack Labs 1.6k Dec 30, 2022
An extensible open-source framework for creating private/permissioned blockchain applications

Exonum Status: Project info: Community: Exonum is an extensible open-source framework for creating blockchain applications. Exonum can be used to crea

Exonum 1.2k Jan 1, 2023
Bindings to the macOS Security.framework

macOS/iOS Security framework for Rust Documentation Bindings to the Apple's Security.framework. Allows use of TLS and Keychain from Rust. License Lice

Kornel 172 Dec 24, 2022
⚓ Solana Sealevel Framework

Anchor ⚓ Anchor is a framework for Solana's Sealevel runtime providing several convenient developer tools. Rust eDSL for writing Solana programs IDL s

Project Serum 2.6k Jan 2, 2023
A framework for creating PoC's for Solana Smart Contracts in a painless and intuitive way

Solana PoC Framework DISCLAIMER: any illegal usage of this framework is heavily discouraged. Most projects on Solana offer a more than generous bug bo

Neodyme 165 Dec 18, 2022
Microunit is a decentralized unit orchestration framework.

Microunit is a decentralized unit orchestration framework.

Engula 13 Oct 10, 2021
The Voting example based on MoonZoon and Solana + Anchor framework.

The Voting example based on MoonZoon and Solana + Anchor framework.

Martin Kavík 6 Aug 13, 2022
A lightweight and flexible framework to build your tailored blockchain applications.

TRINCI Blockchain Core A lightweight and flexible framework to build your tailored blockchain applications. Requirements The required dependencies to

Affidaty S.p.A. 11 Sep 26, 2022
nAssets are Nova Finance’s framework for building programmable assets.

nAssets are Nova Finance’s framework for building programmable assets. nAssets can be used to tokenize and store collective forms of value while also instructing assets to yield, exchange or rebalance.

Nova Finance 45 Dec 28, 2021
A simple frontend web app in the seed.rs Rust framework.

Seed Quickstart Basic Rust-only template for your new Seed app. 1. Create a new project You can use cargo generate to use this template. $ cargo gener

null 0 Dec 24, 2021
Organized, flexible testing framework for Rust

Stainless Stainless is a lightweight, flexible, unopinionated testing framework. Note that stainless currently requires the nightly version of the Rus

Jonathan Reem 455 Dec 5, 2022