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

split docs/README so we have top-level README also #23

Merged
merged 3 commits into from
Aug 28, 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
39 changes: 39 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Zirgen Circuit Compiler

Zirgen is a compiler for a domain-specific language, also called "zirgen",
which creates arithmetic circuits for the RISC Zero proof system.

For the most part, users of RISC Zero should be writing their zkApps in Rust
and using our RISC-V zkVM rather than building them directly in Zirgen.
Sometimes, however, it is necessary or desirable to write parts of an
application as an arithmetic circuit to integrate directly with our proof system
and achieve better performance. In fact, we have an upcoming version of the zkVM
circuit written in Zirgen! Zirgen will make it possible to build accelerators
for important parts of your applications, or even to build entire other VMs that
integrate into the RISC Zero ecosystem through proof composition. With that said,
it's still a work in progress and has quite a few rough edges.

[Getting Started](zirgen/docs/01_Getting_Started.md)

[Language Overview](zirgen/docs/02_Conceptual_Overview.md)

## Included circuits

* [The recursion circuit](/zirgen/circuit/recursion/)
* [The RISC-V zkVM](/zirgen/circuit/rv32im/)

## Circom integration

We also have an integration with Circom in the works -- this will make it
possible to generate recursion circuit programs that verify witnesses for
arbitrary Circom circuits. This can be found
[here](/zirgen/compiler/tools/zirgen-r1cs.cpp).

```mermaid
graph TD;
A[Zirgen] --> B[Zirgen Compiler]
C[Circom] --> B
B --> D[Rust code]
B --> E[C++ code]
B --> F[Recursion VM predicates]
```
10 changes: 5 additions & 5 deletions zirgen/docs/01_Getting_Started.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# Getting Started

We don't currently release Zirgen in any form, so it's only available through
this repository. Assuming you've cloned and built things from this repo before,
building Zirgen with Bazel is simple with the following command. Note, though,
that this isn't strictly necessary, and that Bazel will automatically (re)build
Zirgen if you use it to invoke the tests as well.
We don't currently release Zirgen in any packaged form, so it's only available
through this repository. Assuming you've cloned and built things from this repo
before, building Zirgen with Bazel is simple with the following command. Note,
though, that this isn't strictly necessary, and that Bazel will automatically
(re)build Zirgen if you use it to invoke the tests as well.

```
bazel build //zirgen/dsl:zirgen
Expand Down
16 changes: 5 additions & 11 deletions zirgen/docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,8 @@
## Introduction

The Zirgen circuit language is a domain-specific language for writing arithmetic
circuits for the RISC Zero proof system. For the most part, users of RISC Zero
should be writing their zkApps in Rust and using our RISC-V zkVM rather than
building them directly in Zirgen. However, sometimes it is necessary or
desirable to write parts of an application as an arithmetic circuit to integrate
directly with our proof system and achieve better performance. In fact, our zkVM
itself is a circuit written in Zirgen! Zirgen makes it possible to build
accelerators for important parts of your applications, or even to build entire
other VMs that integrate into the RISC Zero ecosystem through proof composition.
If that sounds like your goal, read on!

So, what kinds of things can you build with Zirgen?
circuits for the RISC Zero proof system. What kinds of things can you build
with Zirgen?
jacobdweightman marked this conversation as resolved.
Show resolved Hide resolved
* zk accelerators (hashing, bigint operations, cryptographic primitives)
* zkVMs
* recursion circuits
Expand All @@ -22,5 +13,8 @@ So, what kinds of things can you build with Zirgen?
Table of Contents:
1. [Getting Started](01_Getting_Started.md)
2. [Basic Concepts](02_Conceptual_Overview.md)
3. [Building a Fibonacci Circuit](03_Building_a_Fibonacci_Circuit.md)
4. [Components](04_Components.md)
5. [Built-in Components](A1_Builtin_Components.md)

[Next](01_Getting_Started.md)
Loading