Przejdź do treści
Słownikbezpieczenstworollupy

Noir

Otwartoźródłowy język domenowy (DSL) do budowania programów zero-knowledge. Kompiluje logikę ZK do formy pośredniej i obsługuje różne backendy dowodów — głównie używany przez Aztec do prywatnych smart kontraktów.

Do czego służy Noir

Noir pozwala programistom pisać logikę prywatną bez ręcznego budowania niskopoziomowych obwodów arytmetycznych. Kompilator przekształca kod Noir do reprezentacji pośredniej (ACIR), którą następnie docelowy backend (np. Barretenberg) kompiluje do dowodu.

Aztec używa Noir jako głównego języka do prywatnych smart kontraktów na swojej warstwie 2. To samo co Solidity dla Ethereum — ale zoptymalizowane pod kątem prywatności i dowodów zerowej wiedzy.

Noir jest stopniowo uniezależniany od Aztec — projekt staje się ogólnym językiem ZK, który można łączyć z różnymi protokołami.

Noir vs inne języki ZK

Noir
Ogólny DSL do ZK, głównie Aztec. Wysokopoziomowy, przyjazny programistom Rust/C++.
Circom
Starszy język obwodów ZK, używany przez wiele protokołów (Hermez, Tornado Cash). Bardziej niskopoziomowy.
Cairo
Język StarkWare/Starknet. Kompiluje do STARK, nie SNARK. Inny ekosystem.

Najczęstsze błędne założenia

  • Noir to nie Solidity dla prywatnych kontraktów w sensie ogólnym — jest zoptymalizowany pod ZK, nie zwykłe wykonanie.
  • Noir nie jest powiązany wyłącznie z Aztec. Trwa praca nad jego niezależnością jako ogólnego języka ZK.
  • Pisanie w Noir nie zwalnia z rozumienia ograniczeń obwodów ZK — niektóre operacje są kosztowne lub niemożliwe do udowodnienia.

Najczęstsze pytania

Nie musisz budować obwodów ręcznie, ale rozumienie podstaw (czym jest witness, constraint, co jest publicznie ujawniane) mocno pomaga. Noir ukrywa dużo złożoności, ale nie wszystko.

Źródła i dalsza lektura