Skip to main content

Visual Studio Code extension for Compact

Compact용 [Visual Studio Code 확장 프로그램]은 Midnight의 Compact 언어로 스마트 컨트랙트를 작성하고 디버깅할 수 있도록 지원하는 플러그인입니다.

DApp 개발자는 다음 방법으로 새 스마트 컨트랙트를 생성할 수 있습니다:

  • 파일 템플릿 사용
  • 코드 스니펫을 활용하여 처음부터 작성

Features

Syntax highlighting

스마트 컨트랙트는 Compact 언어로 작성됩니다. 다음 언어 요소를 인식하여 서식을 적용합니다:

  • enum, struct, circuit와 같은 Compact 키워드
  • 문자열, 불리언 및 숫자 리터럴
  • 주석
  • 괄호

구문 강조

Building Compact source files and error highlighting

스마트 컨트랙트를 빌드하려면 일반적으로 package.json에 다음과 같이 스크립트 정의를 추가해야 합니다:

"scripts": {
"compact": "compact compile --vscode ./src/myContract.compact ./src/managed/myContract"
}

위 설정은 Compact 컴파일러가 셸의 명령 검색 경로에 있다고 가정합니다(경로에 없는 경우 Midnight Compact 컴파일러 실행 안내를 참고하세요). --vscode 옵션을 사용하면 오류 메시지에서 줄 바꿈이 제거되어 VS Code 환경에서 올바르게 표시됩니다.

이를 통해 다음과 같이 스마트 컨트랙트를 컴파일할 수 있습니다:

yarn compact

복잡한 컨트랙트를 편집할 때 빠른 피드백을 원한다면, 다음과 같이 작업 파일 .vscode/tasks.json을 구성하는 것이 편리합니다:

{
"version": "2.0.0",
"tasks": [
{
"label": "Compile compact file to JS",
"type": "shell",
"command": "npx compact compile --vscode --skip-zk ${file} ${workspaceFolder}/src/managed",
"group": "build",
"presentation": {
"echo": true,
"reveal": "never",
"focus": false,
"panel": "shared",
"showReuseMessage": false,
"clear": true,
"revealProblems": "onProblem"
},
"problemMatcher": [
"$compactException",
"$compactInternal",
"$compactCommandNotFound"
]
}
]
}

위 구성은 --skip-zk 플래그로 circuit 생성을 건너뜁니다. circuit 생성은 시간이 오래 걸릴 수 있으며, 구문만 확인할 때는 불필요합니다.

또한 VS Code에 대한 problemMatcher를 구성할 수 있습니다:

 "problemMatcher": [
"$compactException",
"$compactInternal",
"$compactCommandNotFound"
]

이렇게 하면 컴파일러가 보고하는 모든 오류가 Problems 탭에 표시됩니다.

Code snippets

VS Code 확장 프로그램은 Compact 스마트 컨트랙트 편집 시 다음 코드 스니펫을 제공합니다:

  • ledger (state)
  • ledger 내 constructor
  • 내보낼 수 있는 circuit (function / transition)
  • witness (private function)
  • constructor
  • Compact standard library 가져오기 (init, stdlib)
  • if 구문 (cond)
  • map (for)
  • fold
  • enum
  • struct
  • module
  • assert
  • pragma

또한 컨트랙트에 대한 간단한 Compact 스켈레톤을 생성하는 compact 템플릿이 있습니다.

코드 스니펫 및 오류

New Compact smart contract

DApp을 만들 때 빈 ledger와 단일 circuit로 구성된 새 스마트 컨트랙트를 생성하려면:

  1. 명령 팔레트를 엽니다 (Cmd+Shift+P).
  2. Snippets: Fill File with Snippet을 선택합니다.
  3. Compact를 선택합니다. 주의: 기존 파일에서 이 작업을 수행하면 파일 내용이 덮어쓰여집니다. 파일 안에서 함수 이름을 입력하기 시작하면 다른 스니펫도 사용할 수 있습니다.

파일 템플릿

License

Compact용 Visual Studio Code 확장 프로그램은 Apache 2.0 라이선스로 배포됩니다.