# Halo2 Tutorial Intro

Hey there!

In this tutorial we are going to walk you through how to build with the Ethereum Foundation's [Halo2](https://github.com/privacy-scaling-explorations/halo2) implementation. We will do this by simultaneously walking you through the steps in the order that you would normally do, and talking about the theory behind it. This way you should come out with the knowledge of how to use the repo, and how to potentially solve problems as they arise thanks to the knowledge of what is happening under the hood.

Once you get a hang of it it should be relatively straightforward to make circuits (but that doesn't mean easy or quick), but it will take some focus and effort to learn the underlying workings.

The associated tutorial code used in this explainer can be found [here](https://github.com/EDGDrummond/EF-grant/blob/main/halo2/tests/tutorial.rs).

NOTE: This tutorial was created with rust in nightly mode, to prevent problems there it is worth switching as you do it.

This tutorial was born from needing to create a Halo2 hello world tutorial as part of a grant for the EF's PSE team. I decided to continue adding to this book with some friends as part of our working group [ZK Natives](https://twitter.com/zknatives), where we are working on other cool projects and trying to teach people to become ZK circuit engineers with us.

Questions: feel free to join this telegram [group](https://t.me/pse_halo2_natives_book) to ask questions and chat with others.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://erroldrummond.gitbook.io/halo2-tutorial/halo2-tutorial-intro.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
