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

Suggestions on titles / formatting #4

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
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/MNT4753.markdown
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<div class="module">
<h1>
MNT4753
MNT4-753 Elliptic Curve
</h1>
<div class="entries">
<p>This page describes the constants, fields, and groups associated with the MNT4-753 curve.</p>
Expand Down
2 changes: 1 addition & 1 deletion docs/MNT6753.markdown
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<div class="module">
<h1>
MNT6753
MNT6-753 Elliptic Curve
</h1>
<div class="entries">
<p>This page describes the constants, fields, and groups associated with the MNT6-753 curve.</p>
Expand Down
55 changes: 27 additions & 28 deletions docs/index.markdown
Original file line number Diff line number Diff line change
@@ -1,30 +1,34 @@
# The SNARK Challenge

Welcome to the SNARK challenge! The SNARK challenge is a
global competition to advance the state-of-the-art in performance
for SNARK proving. Participants will be part of an effort that aims
to have a massive impact on user-protecting cryptographic technology,
and compete for $100,000 in prizes.
while also competing for $100,000 in prizes.

The SNARK challenge is divided
up into two stages. In the first stage, you'll get your feet wet and
up into two stages. In <a href="#stage-1">Stage 1</a>, you'll have a chance to get your feet wet and
learn about the algorithms underlying the SNARK prover.
Think of this stage as a paid training for the ultimate challenge
of writing a super-fast SNARK prover. There are $5,000 in prizes in
this stage.

The second stage is the main stage of the competition.
There are $95,000 in prizes including $55,000 for speeding up the
<a href="#stage-2">Stage 2</a> is the main stage of the competition.
There is a grand total of $95,000 in prizes, including $55,000 for speeding up the
[Groth16 prover](/snark-challenge/problem-07-groth16prove.html) and $20,000 for developing better cryptographic
primitives. Here you'll apply GPU programming and techniques for
speeding up elliptic-curve and finite-field arithmetic to try
to build the fastest possible [Groth16 prover](/snark-challenge/problem-07-groth16prove.html).

## Table of Contents

<div class="table-of-contents">
<ul>
<li>
<a href="#stage-1">1: Stage 1</a>
</li>
<li>
<a href="#the-stage-1-challenges">1.1: The stage 1 challenges</a>
<a href="#the-stage-1-challenges">1.1: The Stage 1 challenges</a>
</li>
<li>
<a href="#stage-2">2: Stage 2</a>
Expand All @@ -40,15 +44,12 @@ to build the fastest possible [Groth16 prover](/snark-challenge/problem-07-groth

## Stage 1

Want to learn cutting edge cryptography, GPU programming and get
paid to do it? Then you're in the right place.

In this stage, you'll implement the sub-algorithms you need to
implement the full SNARK prover and you'll get paid to do so.
The first 25 participants who complete the four challenges in this stage
will receive $200 and a *SNARK Challenge* swag-bag.
They'll also be very well positioned to apply their solutions to
create submissions for $55,000 of the $75,000 in prizes up for grabs in the second stage.
create submissions for $55,000 of the $75,000 in prizes up for grabs in Stage 2 of the challenge.

Let's dive into it and give a quick overview of the SNARK prover so
we have an idea of where we're going. The SNARK prover itself
Expand All @@ -64,21 +65,19 @@ particular is just a big [reduction](https://developer.download.nvidia.com/asset
although the reduction function requires some work to describe.

These 2 algorithms themselves have sub-algorithms which you'll need to implement first.
In total, the first stage has 4 challenges. After implementing these challenges you'll
be well on your way to having a complete GPU implementation of the SNARK prover itself.

### The stage 1 challenges
In total, the first stage has 4 challenges. After implementing these algorithms you'll
be well on your way to having a complete GPU implementation of the SNARK prover.

The stage 1 challenges are
### The Stage 1 challenges

1. [Finite field arithmetic](/snark-challenge/problem-01-field-arithmetic.html). Reward of $50.
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion to get rid of dollar amt here since it's nested in the challenge, and $25 or w/e is kind of underwhelming right next to the challenge link

2. [Quadratic extension arithmetic](/snark-challenge/problem-02-quadratic-extension-arithmetic.html). Reward of $25.
3. [Cubic extension arithmetic](/snark-challenge/problem-03-cubic-extension-arithmetic.html). Reward of $25.
4. [Elliptic curve operations](/snark-challenge/problem-04-curve-operations.html). Reward of $100.
1. [Finite field arithmetic](/snark-challenge/problem-01-field-arithmetic.html)
2. [Quadratic extension arithmetic](/snark-challenge/problem-02-quadratic-extension-arithmetic.html)
3. [Cubic extension arithmetic](/snark-challenge/problem-03-cubic-extension-arithmetic.html)
4. [Elliptic curve operations](/snark-challenge/problem-04-curve-operations.html)

You'll want to get started with the first challenge, [finite field arithmetic](/snark-challenge/problem-01-field-arithmetic.html),
and work your way through the others. If you want to get a sense for how all these
algorithms come together to build the whole prover, check out [this page](/snark-challenge/intro.html).
You'll want to start with the first challenge, [finite field arithmetic](/snark-challenge/problem-01-field-arithmetic.html),
and work your way sequentially through the others. If you want to get a sense for how all these
algorithms come together to build the whole SNARK prover, check out [this page](/snark-challenge/intro.html).

## Stage 2

Expand All @@ -88,22 +87,22 @@ start with implementation.

### Implementation challenges

These challenges all build on the challenges of stage 1. Stage 2 officially starts on
These challenges all build on the algorithms in Stage 1. Stage 2 officially starts on
June 3, but we will add information regarding these challenges as they are
finalized in case you want to get a head start.

The challenges are
The challenges are:

1. [Writing the fastest Groth16 SNARK prover](/snark-challenge/problem-07-groth16prove.html) on a machine with these [specs](https://github.com/CodaProtocol/snark-challenge/blob/master/descriptions/testing_platform.markdown)
The prizes here total $55,000.
1. [Writing the fastest Groth16 SNARK prover](/snark-challenge/problem-07-groth16prove.html) on a machine with these [specs](https://github.com/CodaProtocol/snark-challenge/blob/master/descriptions/testing_platform.markdown).
* The prizes here total $55,000

2. Writing the fastest in-browser implementation of the Groth16 SNARK verifier.
Acceptable submissions would compile to WebAssembly or JavaScript.
The fastest entry will receive $10,000.
* Acceptable submissions will compile to WebAssembly or JavaScript
* The fastest entry will win $10,000!

3. Fastest Groth16 SNARK prover for CPU.

4. The code golf prize: Shortest Groth16 prover.
4. The code golf prize: shortest Groth16 prover.

5. Most creative Groth16 prover.

Expand Down
10 changes: 6 additions & 4 deletions docs/problem-01-field-arithmetic.markdown
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
# Field arithmetic
# Stage 1 - Challenge 1: Field arithmetic

## Table of Contents

<div class="table-of-contents">
<ul>
Expand Down Expand Up @@ -78,10 +80,10 @@ where `*` is multiplication in the field <span>&#x1D53D;<sub><a href="/snark-cha
Your submission will be run and evaluated as follows.


0. The submission runner will generate a random sequence of inputs, saved to a file
1. The submission runner will generate a random sequence of inputs, saved to a file
`PATH_TO_INPUTS`.

1. Your binary will be compiled with `./build.sh`. This step should produce a binary `./main`.
2. Your binary will be compiled with `./build.sh`. This step should produce a binary `./main`.

3. Your binary will be invoked with

Expand All @@ -103,7 +105,7 @@ Your submission will be run and evaluated as follows.
## Reference implementation

The output of your submitted program will be checked against
the reference implementation at this repo [here](https://github.com/CodaProtocol/snark-challenge/tree/master/reference-01-field-arithmetic).
the reference implementation in [this repo](https://github.com/CodaProtocol/snark-challenge/tree/master/reference-01-field-arithmetic).
The "main" file is [here](https://github.com/CodaProtocol/snark-challenge/blob/master/reference-01-field-arithmetic/libff/main.cpp).
The core algorithm is implemented [here](https://github.com/CodaProtocol/snark-challenge/blob/master/reference-01-field-arithmetic/libff/algebra/fields/fp.tcc#L161).

Expand Down
6 changes: 4 additions & 2 deletions docs/problem-02-quadratic-extension-arithmetic.markdown
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
# Quadratic extension arithmetic
# Stage 1 - Challenge 2: Quadratic extension arithmetic

## Table of Contents

<div class="table-of-contents">
<ul>
Expand Down Expand Up @@ -49,7 +51,7 @@
- **All submissions:** Swag bag including SNARK challenge T-shirt.

Now that we've implemented arithmetic in a prime-order field
in a [previous challenge](/snark-challenge/problem-01-field-arithmetic.html), we can implement field extension
in the [previous challenge](/snark-challenge/problem-01-field-arithmetic.html), we can implement field extension
arithmetic, which we'll need for multi-exponentiation.

## Definitions and review
Expand Down
8 changes: 5 additions & 3 deletions docs/problem-03-cubic-extension-arithmetic.markdown
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
# Cubic extension arithmetic
# Stage 1 - Challenge 3: Cubic extension arithmetic

## Table of Contents

<div class="table-of-contents">
<ul>
Expand Down Expand Up @@ -172,10 +174,10 @@ where `*` is multiplication in the field <span>&#x1D53D;<sub><a href="/snark-cha
Your submission will be run and evaluated as follows.


0. The submission runner will generate a random sequence of inputs, saved to a file
1. The submission runner will generate a random sequence of inputs, saved to a file
`PATH_TO_INPUTS`.

1. Your binary will be compiled with `./build.sh`. This step should produce a binary `./main`.
2. Your binary will be compiled with `./build.sh`. This step should produce a binary `./main`.

3. Your binary will be invoked with

Expand Down
4 changes: 3 additions & 1 deletion docs/problem-04-curve-operations.markdown
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
# Curve operations
# Stage 1 - Challenge 4: Elliptic curve operations

## Table of Contents

<div class="table-of-contents">
<ul>
Expand Down
2 changes: 1 addition & 1 deletion spec-lang/implementation_strategies.ml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ open Core
open Util
open Sectioned_page

let url = sprintf "%s/strategies.html" base_url
let url = sprintf "%s/implementation-strategies.html" base_url

let page_t (pages : Pages.t) =
[ ksprintf text
Expand Down