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

New overview and updates section #16

Merged
merged 7 commits into from
Dec 2, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/co-noir-cli/co-noir-cli.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

## UltraHonk

Our co-Noir implementation cuurently supports the UltraHonk prover (with Keccak and Poseidon2 as transcript) from Barretenberg v0.62.0. To get Barretenberg with this version, use the following commands:
Our co-Noir implementation currently supports the UltraHonk prover (with Keccak and Poseidon2 as transcript) from Barretenberg v0.62.0. To get Barretenberg with this version, use the following commands:

```bash
git clone https://github.com/AztecProtocol/aztec-packages.git
Expand Down
2 changes: 1 addition & 1 deletion docs/getting-started/quick-start.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Quick Start
# coCircom Quick Start

coCircom is an implementation of [collaborative SNARKs](../resources/collsnarks.md), with a focus on the [circom](https://circom.io) framework.
In contrast to traditional SNARKs, which are run by a single prover, collaborative SNARKs are executed using a [multiparty computation protocol](../resources/mpc.md).
Expand Down
24 changes: 22 additions & 2 deletions docs/overview.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,25 @@

# Overview

TACEO is creating the Compute Layer Security (CLS) protocol to make blockchain computation encrypted by default.
The CLS enables every application to compute on private shared state. At its core will be an MPC-VM capable of producing collaborative SNARKs.
TACEO is building tooling for collaborative zkSNARKs (coSNARKs), and the MPC environments that are needed to produce them.

Here you will find documentation for tooling that lifts your code to work in MPC. So far, we have support for building collaborative SNARKs in

* Circom (see [coCircom](/co-circom-cli/co-circom.md)), and
* Noir (see [coNoir](/co-noir-cli/co-noir-cli.md))

If you are completely new to working in an MPC environment, it may be worth checking out the [coCircom quick start](/getting-started/quick-start.md) guide. It walks through compiling circuits, splitting the input, the witness extension, and proving and verifying the circuit.

If you wish to deploy your new coSNARK circuits, you'll need MPC nodes to run them on. You can either set this up yourself, or you can get in touch with us if you are interested to be an early tester of the coSNARK alphanet.

## Useful Resources

Throughout the docs you will find many links to useful articles and talks, but if you want to get started with some quick overviews, you can check out:

* [Overview of what we're doing at TACEO](https://www.youtube.com/watch?v=tlVFbr3_eEU)
* [MPC-Enabled proof markets at ZK11](https://www.youtube.com/watch?v=4-W5nnsf9-A&pp=ygUMZGFuaWVsIGthbGVz)
* [Workshop to get started with coCircom at ZK12](https://www.youtube.com/watch?v=w2HJxrDE01k)

Finally, if you have questions about anything here, we're always in the [discord](https://taceo.io/discord) to help you out.
<!-- TACEO is creating the Compute Layer Security (CLS) protocol to make blockchain computation encrypted by default.
The CLS enables every application to compute on private shared state. At its core will be an MPC-VM capable of producing collaborative SNARKs. -->
41 changes: 41 additions & 0 deletions docs/releases/co-noir-nov.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Major update to coNoir (November 2024)

## Summary

We’ve made significant progress to bring coSNARKs to Noir. It is now possible with the [coNoir CLI](../co-noir-cli/co-noir-cli.md) tool to **build simple zkApps that leverage private shared state or private proof delegation.**
Example: We are currently supporting the Private Shared State Grantee **Hashcloak** for their private machine learning proof-of-concept (some code snippets below).

## New features

First, let’s look back at the status quo from ZK12 (early October where Franco gave a [workshop.](https://www.youtube.com/watch?v=w2HJxrDE01k)) At this point coNoir was "only" supporting basic field arithmetic, and coNoir programs could just use the field datatype and simple operations, like additions and multiplications (see [A First Look at Collaborative Noir | TACEO Blog](https://blog.taceo.io/co-noir-intro/)). This has changed drastically, so let’s give some update:

### Range checks

We implemented the functionality required for **range checks** in MPC. These range checks now enable users of coNoir to use more than just the field datatype; **u64, u16, ect. are now also supported**.
Here is a [range check example](https://github.com/TaceoLabs/co-snarks/blob/main/co-noir/co-noir/examples/test_vectors/mul3u64/src/main.nr).

For those interested, this mainly required us to implement _decomposing field elements_ to smaller chunks and an _oblivious sorting_ algorithm in MPC.

### Asserts

CoNoir users can now add asserts to their code (as long as the statement inside the assert is also supported):
Here is an [asserts example](https://github.com/TaceoLabs/co-snarks/blob/main/co-noir/co-noir/examples/test_vectors/add3_assert/src/main.nr).

### Part of Brillig VM

Context: A lot of features from Noir are evaluated as _unconstrained_ functions. Whenever an unconstrained function is encountered the Brillig VM is invoked in the background.

In the last weeks we worked hard to also implement a **first version of the Brillig VM in MPC**!

The Brillig VM in general requires a fully functional MPC-VM, so don’t expect that everything works out of the box at the moment. But what works is already very powerful:

- **Comparisons** (see, e.g., https://github.com/TaceoLabs/co-snarks/blob/main/co-noir/co-noir/examples/test_vectors/approx_sigmoid/src/main.nr)
- **Simple if-statements** (same example)
- **Byte decomposition** (see, e.g., https://github.com/TaceoLabs/co-snarks/blob/main/co-noir/co-noir/examples/test_vectors/get_bytes/src/main.nr)
- **Casts between fields and rings of different types** (used, e.g., by the byte decomposition example above)
- **Simple integer divisions** (divisions where the result is rounded down) where we divide private values by public powers-of-two)
- **Simple forward jumps as used in branching** (required, e.g., by is_zero gadgets, which is used, e.g., in not-equal comparison: https://github.com/TaceoLabs/co-snarks/blob/main/co-noir/co-noir/examples/test_vectors/poseidon_assert/src/main.nr)

## Compatibility

CoNoir is **compatible with the Noir version 1.0.0-beta.0**. That means, our UltraHonk prover is also compatible with Barretenberg v0.63.0.
29 changes: 17 additions & 12 deletions sidebars.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,6 @@ const sidebars: SidebarsConfig = {
"overview",
"primer/mpc-primer",
"primer/collabSNARKs-primer",
{
type: "category",
label: "Use Cases",
items: [
"use-cases/defi",
"use-cases/ai",
"use-cases/data-ownership",
"use-cases/gaming",
],
},
{
type: "category",
label: "Getting Started",
Expand Down Expand Up @@ -81,9 +71,14 @@ const sidebars: SidebarsConfig = {
},
{
type: "category",
label: "Design",
items: ["design/mpc-vm", "design/known-issues", "design/roadmap"],
label: "Releases",
items: ["releases/co-noir-nov"]
},
// {
// type: "category",
// label: "Design",
// items: ["design/mpc-vm", "design/known-issues", "design/roadmap"],
// },
{
type: "category",
label: "Background Material",
Expand All @@ -94,6 +89,16 @@ const sidebars: SidebarsConfig = {
"resources/collsnarks",
],
},
{
type: "category",
label: "Use Cases",
items: [
"use-cases/defi",
"use-cases/ai",
"use-cases/data-ownership",
"use-cases/gaming",
],
},
],
};

Expand Down
Loading