Compact核心语言参考Skill compact-core:language-reference

本技能提供Midnight Network上Compact智能合约语言的完整中文参考手册,涵盖原始类型、复合类型、电路语法、见证语法、控制流和模块系统等核心内容。关键词:Compact智能合约,零知识证明,ZK语言,区块链开发,Midnight Network,隐私计算,电路编程,类型系统,模块化开发。

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

name: compact-core:language-reference description: 在编写Compact智能合约时使用,需要参考原始类型(Field、Boolean、Uint)、复合类型(结构体、枚举、Vector、Bytes)、电路/见证语法、控制流(if/else、for循环、assert)或模块系统(import、include、export)。

Compact语言参考

用于Midnight Network的Compact智能合约语言的完整参考。

快速参考

原始类型

类型 描述 示例
Field ZK原生域元素(约254位) const f: Field = 42;
Boolean 真/假值 const b: Boolean = true;
Uint<N> 无符号整数(N位,N ≤ 248) const n: Uint<64> = 100;

复合类型

类型 描述 示例
Bytes<N> 固定大小的字节数组 const h: Bytes<32> = ...;
struct 命名的记录类型 struct Point { x: Field, y: Field }
enum 标签联合类型 enum Maybe<T> { Some(T), None }
Vector<T, N> 固定大小的数组 const v: Vector<Field, 3> = [1, 2, 3];

特殊类型

类型 描述 示例
Opaque<'string'> 来自TypeScript的UTF-8字符串 witness get_name(): Opaque<'string'>;
Opaque<'Uint8Array'> 来自TypeScript的二进制数据 witness get_data(): Opaque<'Uint8Array'>;

电路语法

// 可从TypeScript调用的公开电路
export circuit transfer(to: Bytes<32>, amount: Uint<64>): [] {
    // 电路主体
}

// 私有辅助电路
circuit helper(x: Field): Field {
    return x * x;
}

见证语法

// 声明(在TypeScript中实现)
witness get_private_key(): Bytes<32>;

// 在电路中使用
export circuit sign(message: Bytes<32>): Bytes<64> {
    const key = get_private_key();
    // 使用key...
}

控制流

// 条件语句
if (condition) {
    // then分支
} else {
    // else分支
}

// 有界循环(边界必须是编译时常量)
for i in 0..10 {
    // 循环体
}

// 断言
assert condition, "错误信息";

模块系统

// 导入特定项
import { hash } from "CompactStandardLibrary";

// 包含整个文件
include "utils.compact";

// 导出供外部使用
export circuit public_fn(): Field { ... }

参考

有关每个主题的详细文档:

  • 类型系统 - 包含约束的完整类型参考
  • 电路 - 电路和见证模式
  • 控制流 - 条件语句、循环、断言
  • 模块 - 导入、包含、导出、COMPACT_PATH