跨 Binding IR
Rotifer IR 是协议的可移植性层——基于 WASM 构建的中间表示,包含协议特定的自定义段。Rotifer IR 之于 Gene,就像 LLVM IR 之于程序。
TypeScript Gene → rotifer compile → Rotifer IR (.wasm) → 任意 Binding- 编写 Gene(目前支持 TypeScript)
- 编译
rotifer compile— 生成包含自定义段的 WASM 二进制 - 运行 在任意 Binding:本地 CLI、Cloud(Supabase Edge Functions)、Web3(链上)或 Edge
Rotifer IR 用协议特定元数据扩展标准 WASM,嵌入在 WASM 自定义段中:
| 段 | 内容 |
|---|---|
rotifer:phenotype | Gene 身份、领域、输入/输出 schema、版本 |
rotifer:constraints | L0 宪法约束 — 权限、资源限制 |
rotifer:metering | 燃料预算、内存上限、确定性资源计量 |
这些段与二进制一起传输。当 Gene 从 Cloud 移动到 Local 时,其约束和身份被保留——无需外部元数据文件。
为什么选择 WASM?
Section titled “为什么选择 WASM?”IR 采用双层设计:WASM 负责计算,Rotifer 原生注解负责约束。
选择 WASM 作为执行层的原因:
- 形式化规范 —— 数学定义的语义,小型可信计算基
- 设计即沙箱 —— 线性内存模型,无环境权限
- 接近原生性能 —— 硬件无关,优化运行时(Wasmtime、Wasmer、WAMR)
- 跨平台工具链成熟 —— 可从 Rust、C、Go、AssemblyScript 等编译
- 确定性执行支持 —— 通过受限指令集可实现
宪法统一不变式
Section titled “宪法统一不变式”核心安全属性:在任何 Binding 中声明的 L0 约束,在编译、传输和重编译过程中都必须保留。没有任何 Binding 能削弱宪法约束。
这使 Rotifer IR 与通用 IR 根本不同——它携带安全保证,而不仅仅是计算逻辑。在 Cloud 中被沙箱化的 Gene,在本地运行时仍然处于沙箱中。
完整的 IR 规范请参见 GitHub 上的完整文档。