Circuitos de Aztec Noir en tu navegador [ZK ES Semana 3]
Published: 2023-06-09 19:22:37

---
title: Circuitos de Aztec Noir en tu navegador [ZK ES Semana 3]
published: true
description: 
tags: 
# cover_image: https://direct_url_to_image.jpg
# Use a ratio of 100:42 for best results.
# published_at: 2023-06-06 22:40 +0000
---

{% youtube m4P-sAqa8_o %}

Noir te permite construir circuitos usando un lenguaje similar a rust que es bastante intuitivo y te permite muchas cosas. Noir es completamente compatible con cualquier chain EVM. Actualmente se encuentra es desarrollo así que puedes esperar muchas cosas interesantes de este proyecto. La noticia que más me tiene a la expectativa es el anuncio de Aztec 3, una L2 que lanzará en testnet este año donde te permitirá crear circuitos ZK asegurados por Ethereum Mainnet como Layer 1.

## Antes de comenzar

Para este tutorial ocuparás [NodeJs](https://nodejs.org/es/) que recomiendo descargarlo en Linux via [NVM](https://github.com/nvm-sh/nvm#installing-and-updating), y también necesitarás [Metamask](https://metamask.io/) u otra wallet compatible con fondos en Goerli que puedes obtener desde un [faucet](https://goerlifaucet.com/).

## Aztec Noir via WASM

Actualmente Noir no cuenta con un Playground como el de Zokrates. Por lo tanto preparé una versión similar para que probemos este nuevo lenguaje de Aztec.

Corre el proyecto en tu navegador corriendo lo siguiente:

```bash
git clone https://github.com/Turupawn/AztecNoirExample.git
cd AztecNoirExample
npm install
npm run dev
```

Ahora deberías poder interactuar con Noir desde browser en [http://localhost:3000](http://localhost:3000/).

Puedes iniciar probando creando un contrato verificador y generar pruebas el siguiente circuito que evalúa que dos números sea diferentes.

```rust
// src/main.nr
fn main(x : Field, y : pub Field) {
    constrain x != y;
}
```

## ¿Cuáles son los siguientes pasos?

Les comparto una lista de recursos buenos para iniciar:

* [Documentación oficial](https://noir-lang.org/dev/)
* [Awesome Noir](https://github.com/noir-lang/awesome-noir)
* [Cómo crear una DApp en Noir](https://www.rareskills.io/post/zk-addition-dapp-with-noir-and-nextjs)
* [Varios rompecabezas en Noir](https://github.com/RareSkills/noir-puzzles)
* [Attestations en Noir](https://hackmd.io/@joshc/rJWgTMHLn)
* [Uso de librerías de hasheo de curvas elípticas](https://github.com/colinnielsen/ecrecover-noir/blob/2b7ab6824cb9fdf67446c9989c0a238b5d58cccc/src/secp256k1.nr#L37)
* Y también, por supuesto la próxima semana que tocaremos temas de Noir más a profunidad.

## Para la siguiente semana

En la siguiente semana vamos a aplicar lo que aprendimos sobre Aztec Noir haciendo un sistema de votación anónimo on-chain. Los participantes podrán ejercer un voto sobre una propuesta sin revelar su identidad. Desarrollaremos el ejemplo paso a paso y también explicaremos qué se necesitaría para llevarlo a producción.

Para la siguiente semana asegúrate de traer una wallet lista con fondos en Goerli Testnet. Adicionalmente necesitarás Node.js, un editor de texto (te recomiendo Visual Studio Code) y Nargo. A continuación te dejo los enlaces para la instalación:

* Linux
  * Node.js: te recomiendo descargarlo en Linux via [NVM](https://github.com/nvm-sh/nvm#installing-and-updating)
  * VS Code: https://code.visualstudio.com/docs/setup/linux
  * Aztec Noir v6: https://noir-lang.org/dev/
* Windows y OSX
  * Node.js: https://nodejs.org/en/download
  * VS Code: https://code.visualstudio.com/Download
  * Aztec Noir v6: https://noir-lang.org/dev/