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

Fix example in readme #9

Closed
wants to merge 1 commit into from
Closed
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
7 changes: 4 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,16 +32,17 @@ You'll need to [install Go](https://golang.org/doc/install).
git clone https://github.com/consensys/gnark.git
cd gnark
make
go build
Copy link
Contributor

Choose a reason for hiding this comment

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

My understanding is that go build is not needed here. @gbotrel ?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

The make alone does not create the gnark binary

Copy link
Collaborator

Choose a reason for hiding this comment

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

indeed --> gnark uses build tags to determine at compile time which curve the binary is going to be compiled for.
For example, go build -tags bls381 (or bn256, bls377).

The makefile takes care of that, build a special binary that can switch between these "curve-specific" binaries depending on the input of the CLI.

Note that the Makefile is not Windows friendly in its current form.

Copy link
Collaborator

Choose a reason for hiding this comment

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

--> @nkeywall what platform? Can you copy paste here the output of the make?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

linux

But actually the problem is that is writes in ~/.../go/bin/ not the current dir. If it's what you want you can remove this 'go build' from the patch.

Copy link
Collaborator

Choose a reason for hiding this comment

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

Yes, it mimicks the go install command, which doesn't produce a binary in the current dir but in the GOPATH/bin dir.
We may do a make install and make build target to mimick both behaviors.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

(nit inside) There is the directory examples/cubic_equation to report as well in the current master (it's examples/cubic)

'cd examples/cubic_equation' is not included in this patch but should be fixed as well.

```

### Workflow

[Our blog post](https://hackmd.io/@zkteam/gnark) is a good place to start. In short:
1. Implement the algorithm using our API (written in Go)
2. Serialize the circuit in its R1CS form (`circuit.r1cs`) (in the `examples/cubic_equation` subfolder, that would be `go run -tags bls381 cubic.go`)
2. Serialize the circuit in its R1CS form (`circuit.r1cs`) (in the `examples/cubic` subfolder, that would be `go run examples/cubic/cubic.go`)
3. Run `gnark setup circuit.r1cs` to generate proving and verifying keys
4. Run `gnark prove circuit.r1cs --pk circuit.pk --input input`to generate a proof
5. Run `gnark verify proof --vk circuit.vk --input input.public` to verify a proof
4. Run `gnark prove circuit.r1cs --pk circuit.pk --input examples/cubic/input`to generate a proof
5. Run `gnark verify circuit.proof --vk circuit.vk --input examples/cubic/input.public` to verify a proof

Note that, currently, the input file has a simple csv-like format:
```csv
Expand Down