# ZKP DSL, Proving System

ZKP 관련 글을 보면 **Circom, Noir, Cairo, Halo2** 같은 이름이 계속 등장하고 있다. \
하지만 "서로 뭐가 다른지, 어디에 강점이 있는지" 까지 한 번에 정리해서 설명해 주는 자료는 많지 않다. <br>

이 글에서는 Circom, Noir, Cairo, Halo2에 대해 다음 관점에서 간단히 정리한다.

* **왜 나왔는지**
  * 각각 어떤 배경과 문제의식에서 등장한 도구인지
* **어디에 속하는지**
  * 회로/언어(DSL)에 가까운지, 프루빙 시스템·VM에 가까운지
* **무슨 특징이 있는지**
  * 표현 방식, 백엔드, 사용성, 어떤 타입의 ZK 시스템에 잘 맞는지
* **어떻게 확인·테스트하면 되는지**
  * 기본적인 회로 작성 → 증명 생성 → 검증 흐름을 어떻게 가져가면 되는지

즉, 세 도구를 "그냥 ZK 프레임워크들"로 보지 않고, **각각 담당하는 레이어와 특징을 비교해서 보는 것이 핵심 구조**이다.

이 파트를 읽고 나면

* &#x20;Circom, Noir, Cairo, Halo2가 **각각 어떤 목적과 배경을 가진 도구인지**,
* ZK 스택 안에서 **어떤 역할과 특징을 갖고 있는지**,
* 간단한 예제로 **어떻게 써 보고 테스트해 볼 수 있는지**

를 한눈에 이해할 수 있게 되는 것이 목표이다. \
\
즉, "이름만 아는 상태"에서 벗어나, **각 도구의 성격과 강점을 구분해서 볼 수 있을 것이다.**


---

# 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://upsidezkp.gitbook.io/upside-zkp-docs/step-4/zkp-dsl-proving-system.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.
