이 글은 Noir 언어를 처음 시작하는 분들을 위한 설치 가이드와 프로젝트 파일 구조 설명을 담고 있습니다.
Noir는 영지식증명(ZKP)을 쉽게 작성할 수 있도록 도와주는 Rust 스타일 DSL입니다.
noirup 설치curl -L https://raw.githubusercontent.com/noir-lang/noirup/refs/heads/main/install | bash
source ~/.zshrc # 또는 bash 사용자는 source ~/.bashrc
noirup # Nargo 설치
nargo --version
nargo new age_prove
cd age_prove
기본 구조는 다음과 같습니다:
age_prove/
├── Nargo.toml # 프로젝트 설정 파일
├── Prover.toml # 입력값 정의 (직접 생성)
└── src/
└── main.nr # Noir 회로 코드
Noir 프로젝트의 설정 파일입니다.
[package]
name = "age_prove"
type = "bin"
authors = ["Your Name"]
compiler_version = "0.9.0"
license = "MIT"
type: bin, lib, contract 중 하나entry: main.nr 대신 진입점을 지정할 때 사용Noir 회로가 작성되는 파일입니다.
예시:
fn main(age: Field, min_age: pub Field) {
assert(age >= min_age);
}
pub 키워드를 이용하여 public input 값으로 지정할 수 있습니다.입력값을 지정하는 파일입니다. nargo execute 시 사용됩니다.
age = "20"
min_age = "18"
nargo check # 회로 유효성 검사
nargo execute # 입력값 기반 실행 및 witness 생성
curl -L https://raw.githubusercontent.com/AztecProtocol/aztec-packages/refs/heads/master/barretenberg/bbup/install | bash
bbup
bb prove -b ./target/age_prove.json -w ./target/age_prove.gz -o ./target
bb write_vk -b ./target/age_prove.json -o ./target
bb verify -k ./target/vk -p ./target/proof -i ./target/public_inputs
vscode-noir 확장 설치main.nr 파일 열기fn main 위에 나타나는 Debug 버튼 클릭struct Foo {
bar: Field,
baz: Field,
}
fn main(foos: [Foo; 3]) -> pub Field {
foos[2].bar + foos[2].baz
}
[[foos]]
bar = 0
baz = 0
[[foos]]
bar = 0
baz = 0
[[foos]]
bar = 1
baz = 2