compact-core:编译工具链Skill compact-core:compilation-tooling

本技能是关于Midnight区块链智能合约开发中Compact编译器的完整工具指南。它详细介绍了如何使用compactc编译器进行合约编译、配置构建设置、理解零知识证明(ZK)相关的输出产物(如zkir、证明者/验证者密钥),以及如何设置开发环境(如COMPACT_PATH)和集成VS Code语言服务器以获得更好的开发体验。关键词包括:Midnight区块链,Compact编译器,智能合约开发,零知识证明,ZK证明,DApp开发,编译工具链,VS Code集成。

智能合约 0 次安装 1 次浏览 更新于 2/26/2026

name: compact-core:compilation-tooling description: 在使用Compact编译器(compactc)、配置构建设置、理解zkir/证明者/验证者输出产物、设置COMPACT_PATH环境变量,或为Midnight智能合约开发集成VS Code语言服务器支持时使用。

编译工具链

关于Compact编译器(compactc)、项目组织、构建工作流以及理解编译输出的完整指南。

快速参考

基础编译

# 编译一个合约
compactc contract.compact -o output/

# 使用调试模式编译(更快,不生成ZK证明)
compactc contract.compact -o output/ --skip-zk

# 生成VS Code语言服务器支持文件
compactc contract.compact -o output/ --vscode

编译器标志

标志 描述 示例
-o, --output 输出目录 -o build/
--skip-zk 跳过ZK证明生成(开发模式) --skip-zk
--vscode 生成VS Code语言服务器文件 --vscode
-I, --include 添加包含路径 -I ./lib
--verbose 详细输出 --verbose
--json JSON输出格式 --json
--no-typescript 跳过TypeScript生成 --no-typescript

环境变量

变量 用途 示例
COMPACT_PATH 包含路径解析 export COMPACT_PATH="/libs:/project/src"
MIDNIGHT_NETWORK 目标网络 export MIDNIGHT_NETWORK="testnet"

输出产物

编译会产生多个输出文件:

output/
├── zkir/                    # 零知识中间表示
│   ├── circuit_name.zkir    # 每个导出电路的电路IR文件
│   └── ...
├── keys/
│   ├── prover/              # 证明者密钥(用于生成证明)
│   │   └── circuit_name.pk
│   └── verifier/            # 验证者密钥(用于链上验证)
│       └── circuit_name.vk
├── contract.ts              # TypeScript类型和合约接口
├── witnesses.ts             # 见证(Witness)类型定义
└── index.ts                 # 主导出文件

开发工作流

1. 编写Compact合约
2. 使用 --skip-zk 进行编译以快速迭代
3. 运行TypeScript测试
4. 准备就绪时:进行完整编译(生成ZK密钥)
5. 部署到测试网

快速开发循环

# 快速迭代(无证明生成)
compactc contract.compact -o build/ --skip-zk

# 用于部署的完整构建
compactc contract.compact -o build/

项目结构

推荐的Midnight DApp项目布局:

my-midnight-project/
├── contracts/
│   ├── main.compact           # 主合约入口点
│   ├── types.compact          # 共享类型定义
│   └── lib/                   # 辅助模块
│       └── utils.compact
├── src/                       # TypeScript应用代码
│   ├── index.ts
│   ├── witnesses.ts           # 见证实现
│   └── deploy.ts
├── build/                     # 编译输出(git忽略)
│   ├── zkir/
│   ├── keys/
│   └── *.ts
├── tests/
│   └── contract.test.ts
├── package.json
├── tsconfig.json
└── .env                       # 环境配置

VS Code 集成

为VS Code生成语言服务器支持:

compactc contract.compact -o build/ --vscode

这将创建 .vscode/ 配置,用于:

  • 语法高亮
  • 错误诊断
  • 类型检查
  • 跳转到定义

参考文档

详细文档请参阅:

示例

可运行的项目模板和脚本: