# Noir > https://aztec.network/noir/ ## Getting Started > https://noir-lang.org/index.html - Noir is a domain specific language for creating and verifying proofs. It's design choices are influenced heavily by Rust. - `nargo` is a command line tool for interacting with Noir programs (e.g. compiling, proving, verifying and more). - Alternatively, the interactions can also be performed in TypeScript. - [Install](https://noir-lang.org/getting_started/nargo/installation.html#option-2-compile-from-source): - Install [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) and [Rust](https://www.rust-lang.org/tools/install). - Download Noir's source code from Github by running: `git clone git@github.com:noir-lang/noir.git` - Change directory into the Noir project by running: `cd noir` - Option 2.1: Install Executable with WASM backend Install Nargo by running: `cargo install --locked --path=crates/nargo --no-default-features --features plonk_bn254_wasm` - Option 2.2: [Install Executable with Native Backend](https://noir-lang.org/getting_started/nargo/installation.html#option-22-install-executable-with-native-backend) - Check if the installation was successful by running `nargo --help` ### Notes ___ #### General Commands to Know > https://noir-lang.org/getting_started/nargo/commands.html - The `nargo` command (same a `nargo help` / `nargo -h` / `nargo --help`) brings up the menue. - `nargo new` - <pkg name> - nargo check - Generate `Prover.toml` and Verifier.toml files for specifying prover and verifier. - nargo excecute - <witness_name> - nargo prove - <proof_name> - nargo verify - <proof> - nargo codegen-verifier - Generate a Solidity verifier smart contract for the program. - nargo compile - <circuit_name> #### Hello World Program > https://noir-lang.org/getting_started/hello_world.html - `nargo new hello_world` - In production, the common practice is to name the project folder as `circuits` for better identifiability when sitting alongside other folders in the codebase (e.g. `contracts`, `scripts`, `test`). - Program inputs in Noir are private by default (e.g. `x`), but can be labeled public using the keyword `pub` (e.g. `y`). - `cd hello_world` & `cargo check` - Fill in input values for execution in the `Prover.toml` file. - `constrain x != y;` - example: ```JSON= x = "1" y = "2" ``` - `nargo prove` <proof_name> - `nargo verify` <proof_name>