Compact 컴파일러 매뉴얼 페이지
NAME
compactc
OVERVIEW
Compact 컴파일러 compactc는 지정된 소스 파일에서 Compact 프로그램을 읽어 들여 지정된 디렉토리에 여러 출력 파일을 생성합니다.
SYNOPSIS
compactc flag ... sourcepath targetpath
DESCRIPTION
플래그 flag **...**는 선택 사항이며, 아래 FLAGS 섹션에서 설명합니다.
_sourcepath_는 Compact 소스 프로그램이 담긴 파일 경로이고, _targetpath_는 출력 파일이 생성될 디렉토리 경로입니다. 대상 디렉토리가 없으면 자동으로 생성됩니다.
compactc는 소스 파일을 컴파일하여 다음 출력 파일을 생성합니다. 여기서 _sourceroot_는 sourcepath 파일의 확장자를 제외한 이름입니다.
-
TypeScript 타입 정의 파일 targetdir/contract/index.d.ts
-
Javascript 소스 파일 targetdir/contract/index.js
-
Javascript 소스맵 파일 targetdir/contract/index.js.map
-
각 내보낸 circuit _circuitname_에 대한 Zk/ir circuit 파일 targetdir/zkir/circuitname.zkir, 그리고
-
각 내보낸 circuit _circuitname_에 대한 증명 키 쌍 targetdir/keys/circuitname.prover 및 targetdir/keys/circuitname.verifier.
Compact 소스 파일은 include 형식을 통해 다른 Compact 소스 파일을 포함할 수 있습니다:
include 'name';
또한 import 형식을 통해 외부에서 정의된 모듈을 가져올 수 있습니다:
import name; import 'name';
절대 경로가 아닌 경로를 가진 포함 파일이나 외부 모듈은 기본적으로 해당 파일이 위치한 디렉토리를 기준으로 name.compact라는 이름으로 검색합니다. 검색에 실패하면 Compact 검색 목록에서 파일을 찾습니다. Compact 검색 목록은 다음과 같이 결정됩니다:
- 제공된 경우 --compact-path 명령줄 옵션의 값,
- 그렇지 않으면 설정된 경우 COMPACT_PATH 환경 변수의 값,
- 그렇지 않으면 비어 있음. 검색 목록은 콜론으로 구분된(Windows에서는 세미콜론) 디렉토리 경로 목록 dirpath:...:dirpath (Windows: dirpath;...;dirpath)이며, 컴파일러는 각 _dirpath_에 대해 dirpath/name.compact 경로로 순서대로 검색하여 파일을 찾거나 항목이 모두 소진될 때까지 반복합니다.
대부분의 Compact 프로그램은 표준 라이브러리 CompactStandardLibrary를 import해야 합니다. 보통 프로그램 상단에 다음 줄을 추가합니다:
import CompactStandardLibrary;
CompactStandardLibrary는 파일 시스템에서 찾는 것이 아니라 컴파일러에 내장되어 있습니다.
FLAGS
다음 플래그를 사용하여 컴파일러의 동작을 제어할 수 있습니다:
--help
도움말 텍스트를 출력하고 종료합니다.
--version
컴파일러 버전을 출력하고 종료합니다.
--language-version
컴파일러가 지원하는 언어 버전을 출력하고 종료합니다.
--runtime-version
컴파일러가 요구하는 런타임 버전을 출력하고 종료합니다.
--ledger-version
컴파일러가 요구하는 ledger 버전을 출력하고 종료합니다.
--vscode
컴파일러가 오류 메시지에서 줄 바꿈을 생략하여 Compact용 VS Code 확장 프로그램 내에서 올바르게 렌더링되도록 합니다.
--skip-zk
컴파일러가 증명 키 생성을 건너뛰도록 합니다. 증명 키 생성에는 시간이 오래 걸릴 수 있으므로, TypeScript 출력만 디버깅할 때 유용합니다. zkir을 찾을 수 없는 경우에도 컴파일러는 경고를 출력한 후 증명 키 생성을 건너뜁니다.
--no-communications-commitment
컨트랙트 간 호출의 데이터 무결성을 보장하는 통신 커밋먼트 생성을 생략합니다.
--sourceRoot sourceRoot-value
생성된 소스맵(.js.map) 파일의 sourceRoot 필드 값을 재정의합니다. 기본적으로 컴파일러가 소스 및 대상 디렉토리 경로를 기반으로 적절한 값을 결정하지만, 애플리케이션의 배포 구조에 맞지 않을 수 있습니다.
--compact-path search list
Compact 검색 목록을 search list로 설정합니다.
--trace-import
각 포함 파일과 가 져온 모듈 소스 파일의 검색 경로를 보여주는 추적 메시지를 출력합니다.
--trace-passes
주로 컴파일러 개발자에게 유용한 내부 추적 정보를 출력합니다.
EXAMPLES
src/test.compact에 circuit foo와 bar를 export하는 유효한 Compact 프로그램이 있다고 가정합니다:
compactc src/test.compact obj/test
위 명령은 다음 파일을 생성합니다:
obj/test/contract/index.d.ts
obj/test/contract/index.js
obj/test/contract/index.js.map
obj/test/zkir/foo.zkir
obj/test/zkir/bar.zkir
obj/test/keys/foo.prover
obj/test/keys/foo.verifier
obj/test/keys/bar.prover
obj/test/keys/bar.verifier
compactc --skip-zk src/test.compact obj/test
키 파일을 제외하고 동일한 결과를 생성합니다.