N/
NANDRYOPEN MACHINE PROTOCOL
NANDRY PROTOCOL · WHITEPAPER v0.1

把代码和模型
铸造成链上机器

发行晶体管,编译确定性 NAND/LATCH 网表,销毁对应材料完成流片。机器由开放节点运行,执行结果回到 Solana 验证和结算。

用户 Mint
晶体管
流片产出
Machine PDA
制造成本
NAND + 4 × LATCH
执行结果
MachineRun

NANDRY Protocol

Solana 上的开放机器铸造协议#

白皮书 v0.1
2026 年 8 月

发行晶体管,以门级成本完成流片,把代码和模型制造为可验证机器。


白皮书定位#

本文给出 NANDRY v1 的完整协议设计,覆盖晶体管发行、机器制造、开放执行和结果验证。

整套协议只有五步:

  1. 创建处理器,并发行该处理器唯一的晶体管;
  2. 通过原厂铸造或买单市场获得晶体管;
  3. 使用画布、Verilog、Cursor 或模型编译器制造电路;
  4. 按门级网表的真实规模销毁晶体管,生成永久 Machine PDA;
  5. 由开放执行网络运行机器,并在 Solana 上验证、登记和结算执行结果。

五个阶段共同形成协议闭环:晶体管销毁确认制造成本,规范网表固定机器语义,执行验证确认运行结果。


1. 协议概述#

现在的软件、模型和算力各有一套交付方式:源码放在仓库,权重放在模型平台,执行发生在云端。NANDRY 给它们增加一条共同的制造路径,让一份设计最终变成可以寻址、复现和验证的 Machine。

NANDRY 将这一过程组织为类似芯片制造的连续流程:材料发行、电路设计、门级流片和机器执行。每一步都留下可验证的协议状态。

创建者在 Solana 上建立独立铸造厂。每座铸造厂发行一种零小数位 Token-2022,协议将其定义为晶体管。晶体管支持 Mint、持有和交易,并在流片时执行 Token-2022 Burn。

开发者可以在画布中连接 NAND 与 LATCH,可以提交 Verilog,也可以导入量化后的神经网络。不同设计入口统一编译为确定性门级网表,门数、时序、测试向量和哈希均由该网表导出。

门数由协议计算。流片时,程序验证已封存网表,统计 NAND 与 LATCH,从制造者账户销毁对应数量的晶体管,然后创建 Machine PDA。作者、制造者、来源 Processor、网表哈希和材料消耗由该账户永久记录。

小型机器由 Solana 直接执行。大型机器由开放节点分段运行,再通过链上复算、交互式争议或零知识证明完成验证。通过验证的执行生成 MachineRun。

协议包含三个主要资产层级:

  • 晶体管是可以发行和销毁的制造材料;
  • 电路是可以编译和验证的确定性设计;
  • 机器是完成流片后获得永久链上身份的可执行实体。

用户 Mint 的是晶体管。晶体管烧掉以后,链上才多出一台机器。


2. 六个设计选择#

这六个选择决定 NANDRY 的机器语义,并构成账户模型与指令设计的基础。

2.1 Burn 把材料和机器连起来#

每台 Machine 对应一次 Token-2022 供应量减少。Machine PDAtotal_burned 在同一笔流片交易中生成。

2.2 相同输入得到相同输出#

规范机器只处理明确位宽的整数和位串,执行语义收敛到 NAND、LATCH 和固定时钟。Rust、SBF、WASM 和证明电路共享同一组 bit-exact 测试向量。

2.3 拓扑定义机器身份#

坐标、颜色、缩放和连线路径服务于编辑器。Circuit ID 由拓扑、端口、初始状态和执行规则计算,因此同一电路可以自由重排画布。

2.4 节点独立重建机器#

Solana 保存身份、状态和承诺,大文件使用内容寻址的分布式存储。节点根据 Machine PDA、Circuit ID 和 artifact root 重建同一台机器。

2.5 三档执行覆盖不同规模#

小机器由 Solana 直接执行,中型机器提交分段轨迹,大机器提交零知识证明。机器规模越大,链上验证的数据越压缩。

2.6 版本生成新身份#

权重、网表、端口或编译器语义发生变化时,编译器生成新的 Circuit ID、Model ID 和 Machine PDA。旧机器继续使用创建时绑定的版本。


3. 核心协议对象#

3.1 Processor:处理器与铸造厂#

Processor 代表一座独立铸造厂,记录以下字段:

  • 创建者;
  • 名称、符号与故事哈希;
  • 唯一的 Token-2022 Mint;
  • 终身累计发行上限;
  • 原厂铸造单价;
  • 累计铸造量;
  • 累计销毁量;
  • 已制造机器数量;
  • 累计运行次数;
  • 首次铸造 Slot;
  • 权限与锁定状态。

每座 Processor 对应一种晶体管。NAND、LATCH、寄存器、加法器、卷积核和 CPU 共享同一种制造材料;高级元件展开为基础门后计算晶体管消耗。

3.2 Transistor:晶体管#

晶体管采用零小数位 Token-2022,Mint Authority 由 Processor PDA 控制。其供应状态分为三类:

  1. 尚未铸造的发行额度;
  2. 用户账户中的流通晶体管;
  3. 流片时被永久销毁的晶体管。

晶体管以 1 枚为最小单位。Mint 的 Freeze Authority 为空,Mint Authority 由 Processor PDA 持有,所有新增供应都经过协议指令。

3.3 Circuit:电路定义#

Circuit 是已经编译并封存的门级设计,保存参与执行的内容:

  • 输入与输出位宽;
  • NAND 与 LATCH 序列;
  • 规范字节码;
  • 编译器版本;
  • 初始状态规则;
  • 测试向量与预期输出;
  • 电路哈希;
  • 分布式制品根。

Circuit 可以被多人复用。相同规范字节码只产生一个 Circuit ID,但不同用户可以使用不同 Processor 的晶体管制造各自的 Machine。

3.4 Model:模型定义#

Model 是机器能读懂的神经网络定义。它把下面这些东西绑在一起:

  • 模型结构;
  • 输入编码;
  • 固定权重与阈值;
  • 量化规则;
  • 编译器版本;
  • 规范 Circuit ID;
  • 训练和评估制品的内容根。

Model 封印后固定。权重、阈值、预处理规则或编译器版本发生变化时生成新的 Model ID。

3.5 Machine:完成流片的机器#

Machine 才是工坊交付的成品。它保存:

  • 作者:提交并封存电路的人;
  • 制造者:支付并销毁晶体管的人;
  • 来源 Processor;
  • Circuit PDA 与 Circuit ID;
  • 关联 Model PDA,可为空;
  • NAND 数量;
  • LATCH 数量;
  • 晶体管消耗量;
  • 创建 Slot;
  • 运行次数;
  • 最近运行 Slot;
  • Machine PDA bump 与版本。

作者、制造者和执行者可以是三个不同的钱包。

3.6 Execution:执行任务与运行记录#

ExecutionRequest 定义一次待执行任务,MachineRun 保存一次完成并最终确认的运行结果。运行记录至少包含:

  • Machine PDA;
  • 执行者;
  • 输入承诺;
  • 输出承诺;
  • 执行轨迹根;
  • 执行模式;
  • 时钟或步骤数量;
  • 运行序号;
  • 最终确认 Slot。

4. 机器制造生命周期#

flowchart LR
    A["创建 Processor"] --> B["发行唯一晶体管"]
    B --> C["原厂 Mint 或挂买单"]
    C --> D["画布 / Verilog / Cursor / 模型"]
    D --> E["确定性编译"]
    E --> F["封存 Circuit 与 Model"]
    F --> G["验证门数并销毁晶体管"]
    G --> H["创建 Machine PDA"]
    H --> I["发布 ExecutionRequest"]
    I --> J["任意节点执行"]
    J --> K["复算 / 争议 / ZK 验证"]
    K --> L["写入 MachineRun"]

4.1 创建 Processor#

创建者提交名称、符号、故事哈希、总发行上限和原厂价格。协议根据创建者地址和 Processor ID 派生 Processor PDA,并创建唯一 Token-2022 Mint。

在第一次 Mint 之前,创建者可以修改总发行上限和原厂价格,也可以取消该 Processor。第一次 Mint 发生后,两项参数永久锁定。

4.2 获取晶体管#

用户有两条路径:

  • 按固定原厂价格 Mint 新晶体管;
  • 在二级市场挂出 SOL 买单,等待持有者成交。

市场采用单侧买单。买方将 SOL 托管至 Bid PDA,晶体管持有者按照公开报价成交,市场深度由已托管的 SOL 构成。

4.3 设计与编译电路#

用户可以在画布上手动拖拽与连线,也可以使用 Cursor 编辑 Verilog 或 NANDRY Circuit DSL,还可以导入二值神经网络或二值卷积网络。

所有设计入口统一进入 Circuit IR,并由同一套编译器完成验证与规范化。

4.4 流片并创建 Machine#

用户选择一个已经封存的 Circuit 和一个 Processor,协议重新验证规范网表并计算制造成本。用户签名授权 Token-2022 Burn,销毁完成后,Machine PDA 在同一交易中创建。

Burn 和创建 Machine 放在同一笔交易里。两件事一起成功,一起回滚,材料与成品保持原子对应。

4.5 执行机器#

用户向 Machine 提交输入和执行边界。协议根据机器规模选择执行模式。结果通过相应验证规则后写入 MachineRun,并更新 Machine 与 Processor 的运行计数。


5. 晶体管发行与销毁模型#

5.1 一个 Processor 对应一个 Mint#

每个 Processor 创建一个 decimals = 0 的 Mint。Mint Authority 由 Processor PDA 持有,所有新增供应通过协议指令产生。

5.2 Burn 不恢复累计发行额度#

发行上限看累计 Mint,不看眼前还剩多少:

cumulative_minted <= total_supply

当前流通供应量满足:

live_supply = cumulative_minted - total_burned

Burn 只减少实时供应量,不增加剩余发行额度。因此公开的 total_supply 表示该 Processor 的终身累计发行上限。

5.3 首次 Mint 后参数锁定#

cumulative_minted0 变为正数时:

  • total_supply 锁定;
  • mint_price 锁定;
  • Processor 进入永久锁定状态;
  • Mint Authority 继续由 Processor PDA 持有,只能按照协议指令铸造;
  • 元数据进入不可修改状态。

5.4 创建者初始分配为零#

创建 Processor 时,创建者晶体管分配为零。创建者通过同一 Mint 指令公开铸造,铸造数量、Slot 和协议费用进入链上记录。原厂货款的收款地址与付款地址相同时,程序省略账户间的自转账。

5.5 原厂 Mint 的原子结算#

对于数量 q、单价 p

quoted_value = q × p

SOL 转账、协议费用、Token-2022 Mint 和累计计数在同一笔交易中完成,并遵循 Solana 的原子回滚语义。


6. 单侧买单市场#

NANDRY 采用单侧买单模型,将早期流动性集中到有 SOL 托管支持的报价。买方预先提交资金,卖方以晶体管完成成交。

6.1 SOL 托管买单#

买方指定 Processor、单价与数量,并把完整报价托管进 Bid PDA:

escrow = bid_price × bid_quantity

Bid PDA 记录原始数量、剩余数量、已成交数量、创建 Slot 和买方 Token Account。

6.2 买单成交#

晶体管持有者选择买单和成交数量。协议在一笔交易内:

  1. 检查卖方余额;
  2. 将晶体管转给买方;
  3. 从 Bid PDA 释放对应 SOL;
  4. 更新剩余数量与托管余额;
  5. 在买单完全成交时关闭 Bid PDA。

部分成交必须满足:

remaining_escrow = bid_price × remaining_quantity

任何不满足该不变量的订单都被视为损坏订单并拒绝成交。

6.3 买单撤销#

只有买方可以撤销自己的未完成买单。未使用的托管 SOL 与账户租金返还买方。已经成交的部分不可逆转。

6.4 价格语义与市场指标#

链上程序负责订单有效性与资产结算。索引器负责聚合市场数据:

  • 最高买价;
  • 可成交深度;
  • 最近成交;
  • 创建时间;
  • 已铸造与已销毁数量;
  • 已制造机器数;
  • 真实运行次数。

页面分别展示原厂价、最高买单和最近成交,保持三种价格语义独立。


7. 机器工坊与统一设计入口#

7.1 四种设计方式#

NANDRY Machine Workshop 支持四种设计入口:

  1. 手动画布:拖放元件、端口连线、层级模块和逐拍仿真;
  2. Verilog:导入或编辑可综合的 Verilog 子集;
  3. Cursor:通过工作区与 MCP 接口远程编辑、编译和同步电路;
  4. Neural Compiler:导入 BNN、Binary CNN 或 NANDRY 模型清单。

手动画布、Cursor 与 Verilog 可以组合使用。规范 Circuit IR 作为流片输入,编辑器源文件作为开发制品保存。

7.2 确定性编译管线#

SOURCE
  → PARSE
  → ELABORATE
  → TYPE / WIDTH CHECK
  → LOWER TO BOOLEAN IR
  → CONSTANT FOLD
  → DEAD GATE ELIMINATION
  → NAND / LATCH TECHMAP
  → STATIC TIMING
  → TEST VECTORS
  → CANONICAL SERIALIZATION
  → SHA-256 CIRCUIT ID

每个阶段都输出可检查的中间结果。编译诊断定位到具体端口、信号、位宽或时钟规则。

7.3 自动布线与层级视图#

编辑器根据端口锚点自动更新连线路径,布局调整保持网表拓扑不变。综合生成的大型电路使用三层视图:

  • 模型或模块视图;
  • 神经元、算术单元或寄存器视图;
  • NAND/LATCH 门级视图。

模型视图用于观察整体结构,神经元与门级视图用于定位具体信号。分层渲染控制单屏节点与连线数量,使大型网表保持可读和可交互。

7.4 可复现编译#

编译结果必须绑定:

  • 编译器名称与版本;
  • 目标标准单元库版本;
  • 优化配置;
  • 输入源哈希;
  • 输出规范网表哈希。

同一组输入与配置必须生成完全相同的规范字节。


8. 模型到机器的编译#

8.1 二值神经网络#

普通神经网络依赖大量浮点矩阵运算,不同硬件、编译器与优化库可能产生末位差异。二值网络将推理阶段的权重和激活压缩为 bit,使主要乘法运算转化为位比较与计数。

一个二值神经元可以写成:

match[i] = XNOR(input[i], weight[i])
score    = POPCOUNT(match)
output   = score >= threshold

XNOR、加法树和比较器均可综合为 NAND,LATCH 保存层间状态。训练框架输出固定权重后,NANDRY 将模型编译为可逐位复现的确定性机器。

8.2 Binary CNN 编译#

卷积层按照以下过程编译:

输入张量
→ 确定性二值化
→ 滑动窗口展开
→ 卷积核权重复用
→ XNOR 阵列
→ POPCOUNT 加法树
→ 阈值比较
→ 池化或步幅映射
→ LATCH 层间锁存

Neural Fabric 的连线动画直接映射真实激活。用户可以从网络层展开到神经元、XNOR 阵列和最终 NAND 门,并读取每层对应的执行状态。

8.3 Model ID#

Model ID 由规范字段计算:

ModelID = SHA256(
    domain_separator
    || compiler_version
    || input_schema
    || layer_schema
    || bit_packed_weights
    || thresholds
    || preprocessing_rules
    || circuit_id
    || artifact_root
)

最后一个字节中未使用的位必须为零,数组顺序固定为“层 → 输出通道/神经元 → 输入通道 → 核位置”,从而排除同一模型的多种编码。

8.4 模型封印#

封印时协议验证:

  • 输入位宽与 Circuit 输入一致;
  • 最后一层宽度与 Circuit 输出一致;
  • 层间状态数量与 LATCH 数量一致;
  • 权重和阈值长度符合模型结构;
  • Circuit ID 与模型承诺一致;
  • 分布式制品清单能够由 artifact_root 验证。

封印后没有修改入口。模型升级通过新 Model PDA 和新 Machine 完成。

8.5 可验证推理可视化#

Neural Fabric 同时展示:

  • 输入张量;
  • 每层固定权重;
  • XNOR 匹配结果;
  • POPCOUNT 分数;
  • 阈值与激活;
  • 输出类别;
  • 对应门数;
  • 执行轨迹根。

可视化直接读取本次推理的中间状态。连线激活、神经元阈值与最终分类均可对应到执行轨迹中的具体状态。


9. 规范电路与虚拟机#

9.1 NAND 与 LATCH 基础单元#

NANDRY v1 将共识标准单元收敛为两种:

  • NAND(a, b) -> y
  • LATCH(d) -> q

NAND 负责算,LATCH 负责记。AND、OR、XOR、MUX、加法器、寄存器、卷积核和 CPU 指令都只是给人和编译器看的高级名字,进共识前全部拆开。

9.2 最小规范字节码#

规范字节码使用固定 28 字节头:

偏移长度字段
04magic:TSOL
41version
51flags
62reserved
84input bits
124output bits
164total gates
204LATCH count
244gate body bytes

头部之后是输出信号索引和门体:

NAND  = 0x00 || a:u24 || b:u24
LATCH = 0x01 || d:u24

所有整数使用小端序。信号 01 是常量 false 与 true,之后依次是输入信号和门输出。

9.3 结构约束#

  • NAND 只能引用已经产生的信号,从结构上排除组合环;
  • LATCH 的 D 可以引用有效信号,允许表达时序反馈;
  • 所有 LATCH 记录位于 NAND 记录之前;
  • 输出索引必须引用有效信号;
  • 保留字段必须为零;
  • 截断、未知 opcode、越界索引和计数溢出全部拒绝。

9.4 Tick 执行语义#

每个 tick 分为三个阶段:

  1. 所有 LATCH 输出 tick 开始前的旧状态;
  2. 按规范顺序计算所有 NAND 和输出;
  3. 所有 LATCH 同时提交下一状态。

同步提交保证同一个 tick 内的所有 LATCH 读取一致的旧状态。

9.5 门级资源计量#

设规范网表中 NAND 数量为 N,LATCH 数量为 L,则流片所需晶体管为:

TransistorCost = N + 4L

这一权重属于 NANDRY v1 的共识规则。高级元件必须先展开,再按基础单元计数。


10. 流片与 Machine PDA#

10.1 流片前验证#

流片只接受:

  • 已完整上传的 Circuit data account;
  • 已通过 SHA-256 校验的 Circuit ID;
  • 已通过语法、端口、引用和计数验证的规范字节码;
  • 与 Processor 绑定的正确 Mint;
  • 足够的制造者晶体管余额。

10.2 晶体管销毁与 Machine 原子创建#

协议从已经验证的 Circuit 账户读取 gate_countlatch_count,计算:

nand_count = gate_count - latch_count
cost       = nand_count + 4 × latch_count

随后调用 Token-2022 Burn,持有者余额与 Mint 实时供应量同步减少。Machine PDA、Processor 累计销毁量和机器数量在同一交易中更新。

10.3 Machine 地址派生#

v1 Machine PDA 使用以下种子:

["tapeout", manufacturer, processor, circuit, nonce]

nonce 允许同一制造者针对同一电路制造多个独立机器。Circuit ID 标识逻辑拓扑,Machine PDA 标识一次具体流片成品。

10.4 作者与制造者身份#

  • author 来自 Circuit authority;
  • manufacturer 是授权销毁晶体管并支付账户租金的钱包。

Machine 创建后固定作者、制造者与 Circuit 绑定关系。


11. 开放执行网络#

Solana 的交易计算预算决定了单笔链上执行的规模上限。NANDRY 按机器规模划分三种执行模式,并使用公开规则确定相应的验证路径。

11.1 Mode A:链上直接执行#

小型电路或短执行段由 Solana Program 直接解释规范字节码。交易提交输入,程序计算输出和下一状态,并生成 MachineRun。

该模式由 Solana Program 直接计算结果。当前每个非内置指令默认获得 200,000 CU,单笔交易上限为 1,400,000 CU;客户端通过预执行测量消耗并设置计算预算。

11.2 Mode B:分段执行与乐观验证#

中型和大型机器在链下运行,但执行过程被切成确定性段:

S(i+1) = Transition(machine, S(i), input, segment_i)

执行节点提交:

  • 初始状态根;
  • 最终状态根;
  • 输入与输出承诺;
  • 每段状态组成的 Merkle Trace Root;
  • 总步骤数;
  • 执行制品版本。

挑战者可以对相邻状态提出争议。协议通过 Merkle 证明定位到单个执行段,并在 Solana 上复算该段。提交错误轨迹的一方失败,正确结果进入最终状态。

11.3 Mode C:零知识执行证明#

超大机器可以生成证明,证明以下命题成立:

给定 Machine ID、初始状态和输入承诺,
按照 NANDRY VM 的确定性转移规则执行指定步数,
得到声明的输出承诺和最终状态根。

链上验证器只验证证明和公共输入。证明系统可以升级,但必须通过版本化 verifier 和 proof-system ID 明确区分。旧 MachineRun 永远保留其原始验证器版本。

11.4 无许可执行任务#

任务发布者创建 ExecutionRequest,绑定:

  • Machine PDA;
  • 输入承诺或公开输入;
  • 最大步数;
  • 执行模式;
  • 截止 Slot;
  • 结果唯一性规则;
  • 执行预算与必要保证金。

任何满足任务条件的节点都可以参与执行。硬件配置影响执行性能,协议证明决定结果有效性。

11.5 MachineRun#

验证完成后生成 MachineRun:

MachineRun = {
  machine,
  executor,
  input_digest,
  output_digest,
  trace_root,
  proof_system,
  run_index,
  step_count,
  finalized_slot
}

Machine 的 run_countlast_run_slot 原子更新。市场和浏览器展示真实 MachineRun 数量,不使用网页点击次数冒充运行次数。


12. Solana 账户架构#

flowchart TD
    P["Processor PDA"] --> T["Token-2022 Mint"]
    P --> B["Bid PDA"]
    C["CircuitDefinition PDA"] --> D["Program-owned Circuit Data"]
    M["ModelDefinition PDA"] --> C
    M --> A["Artifact Root"]
    P --> X["Machine PDA"]
    C --> X
    M --> X
    X --> R["ExecutionRequest PDA"]
    X --> U["MachineRun PDA"]

12.1 PDA 派生#

账户规范种子
Processorprocessor, creator, processor_id
CircuitDefinitioncircuit, circuit_id
ModelDefinitionmodel, model_id
Bidbid, buyer, processor, nonce
Machinetapeout, manufacturer, processor, circuit, nonce
ExecutionRequestrequest, requester, machine, nonce
MachineRunmachine_run, machine, executor, nonce

PDA 没有对应私钥,由程序使用正确种子完成签名。NANDRY 使用 PDA 管理 Mint Authority、订单托管和机器身份。

12.2 大型网表账户#

CircuitDefinition PDA 保存固定大小元数据。完整字节码存入独立的 program-owned data account,并按照严格递增的 cursor 分块上传,从而避免 SBF 在处理大型网表时反序列化完整 Vec

每个 chunk 必须满足:

offset == uploaded_len

成功交易原子推进 cursor;失败交易保持原值。客户端读取最新 cursor 后继续上传,严格追加规则保证字节连续且唯一。

12.3 Finalize 与不可变性#

Finalize 要求上传长度等于声明长度,并重新计算完整 SHA-256。验证成功后:

  • Circuit 进入 finalized;
  • 所有写入口永久关闭;
  • 输入、输出、门数和 LATCH 数由解析器写入元数据;
  • 后续 Machine 只能引用该不可变定义。

13. 分布式制品存储#

Solana 保存共识所需状态。模型权重、编译日志和执行 trace 等大型制品通过内容寻址清单组织:

  • 原始 Verilog 或 Circuit DSL;
  • 规范网表副本;
  • 模型结构与量化配置;
  • 权重;
  • 测试向量;
  • 编译日志;
  • 训练与评估摘要;
  • 执行轨迹分片;
  • 证明制品。

Artifact Manifest 对文件路径、媒体类型、字节长度和内容哈希进行规范排序,Merkle Root 写入 Model 或 Circuit 账户。

协议支持多个内容寻址网络、社区镜像和点对点节点。执行节点根据 Artifact Manifest 获取制品,并在本地校验内容哈希。

完整性与可用性分别衡量:

  • 哈希正确,代表拿到的文件没有被替换;
  • 文件可用,代表至少有节点愿意持续提供它。

当全部制品副本暂时不可用时,Machine 身份继续存在,其运行状态标记为 unavailable


14. 确定性执行与验证#

14.1 域分离#

Processor、Circuit、Model、输入、输出和执行轨迹使用独立 domain separator,使相同字节在不同对象类型中产生不同承诺。

14.2 输入规范化#

每台机器公开输入 schema:位宽、符号位、张量顺序、通道顺序、图像阈值、padding 和未使用位规则。未使用位必须归零。

14.3 输出规范化#

输出同样固定字节序、位宽和类别映射。UI 可以显示文字标签,但 MachineRun 承诺的是规范位串。

14.4 执行轨迹根#

每个执行层或执行段产生规范状态:

TraceLeaf_i = SHA256(
  trace_domain
  || machine_id
  || step_index
  || state_i
  || output_i
)

叶子按照执行顺序组成 Merkle Tree。任何节点都能证明某个中间状态属于已提交轨迹。

14.5 跨实现一致性#

Rust、SBF、TypeScript、WASM 和证明电路必须共享同一组 golden vectors。每个版本至少覆盖:

  • 组合 NAND;
  • 多 LATCH 同步提交;
  • 时序反馈;
  • 极限信号索引;
  • 截断与非法 opcode;
  • BNN 多层激活;
  • CNN 卷积窗口;
  • 执行轨迹根;
  • MachineRun 摘要。

跨实现测试采用 bit-exact 标准。任意单 bit 差异都视为版本不兼容。


15. 产品结构#

产品界面围绕五个核心操作组织。

市场 Market#

发现 Processor、查看原厂价格与买单、Mint 晶体管、出售给现有买单、查看真实销毁量和机器运行量。

铸造厂 Foundry#

创建 Processor,设定名称、符号、总供应量与原厂价格,并在首次 Mint 前完成检查和修改。

机器工坊 Machine Workshop#

使用画布、Verilog、Cursor 或 Neural Compiler 设计机器,完成仿真、编译、门级展开与流片。

执行网络 Execution Network#

发布任务、运行公开 Machine、查看输入输出、轨迹根、验证模式和最终 MachineRun。

我的实验室 My Lab#

管理自己创建的 Processor、持有的晶体管、Circuit、Model、Machine、买单、执行任务和运行记录。

Neural Fabric 是机器工坊的旗舰制造模式,同时拥有独立深链路和展示页,并复用 Machine Workshop 的编译、流片和执行体系。


16. 模型训练与机器推理#

模型训练使用 GPU、浮点优化器和现有训练框架完成。训练产生固定权重后,NANDRY 接管量化、门级编译、流片、执行和验证。

NANDRY v1 负责:

  • 固定模型的规范登记;
  • 模型到确定性门级机器的编译;
  • 机器制造所需晶体管的真实销毁;
  • 机器身份与制品承诺;
  • 公开执行任务;
  • 可独立验证的输出和运行记录。

机器工坊同时支持通用 CPU、密码学核心、状态机、音频分类器和 Binary CNN。神经网络是旗舰机器类型,底层协议覆盖所有可以编译为规范 NAND/LATCH 网表的数字机器。


17. 版本与扩展规则#

版本号直接进入机器身份。规则更新通过新的 Program ID、VM version、Circuit ID 和 Machine PDA 发布,既有 Machine 保持创建时的执行语义。

v1 机器标准#

  • 单一 Processor 晶体管;
  • 原厂 Mint 与仅买单市场;
  • NAND/LATCH 标准单元;
  • TSOL v1 规范字节码;
  • 手动画布、Verilog、Cursor 与 BNN/Binary CNN 编译;
  • 原子 Burn 与 Machine PDA;
  • 直接、分段和证明执行;
  • MachineRun 永久记录;
  • 内容寻址分布式制品。

扩展边界#

新的证明系统、压缩格式和跨链验证器使用独立版本号和 Program ID。扩展不得改变 v1 字节码、晶体管消耗公式或已创建 Machine 的执行语义。

跨链扩展验证 NANDRY Machine 承诺并共享统一机器身份。Solana 保持 v1 的主登记与结算层。


18. 结论#

一台完整的 Machine 可以公开查询来源 Processor、晶体管消耗、规范网表、作者、制造者、执行记录和验证路径。

创建者建立 Processor,发行唯一晶体管。开发者获得晶体管,把代码、电路或模型编译为规范 NAND/LATCH 网表。流片交易按照真实门数销毁晶体管,并创建永久 Machine PDA。执行节点运行同一台机器,提交同一种结果,Solana 验证并保存每一次 MachineRun。

协议的核心关系可以概括为:

处理器发行晶体管。
晶体管制造机器。
任意节点运行机器。
Solana 验证机器。


附录 A:核心不变量#

1. one_processor_has_one_mint
2. mint.decimals == 0
3. mint.freeze_authority == none
4. cumulative_minted <= total_supply
5. live_supply == cumulative_minted - total_burned
6. first_mint => price_and_supply_locked
7. finalized_circuit => immutable_bytecode
8. transistor_cost == nand_count + 4 × latch_count
9. machine_exists => transistor_burn_succeeded
10. machine_run_exists => execution_verification_succeeded

附录 B:核心地址#

Processor PDA
  = PDA("processor", creator, processor_id)

Circuit PDA
  = PDA("circuit", circuit_id)

Model PDA
  = PDA("model", model_id)

Bid PDA
  = PDA("bid", buyer, processor, nonce)

Machine PDA
  = PDA("tapeout", manufacturer, processor, circuit, nonce)

MachineRun PDA
  = PDA("machine_run", machine, executor, nonce)

附录 C:术语#

中文英文含义
处理器Processor发行一种晶体管的独立铸造厂
晶体管Transistor用于流片销毁的零小数位 Token-2022 资产
电路Circuit已规范编译、可验证但尚未必流片的设计
模型Model固定权重、结构、输入规则与电路承诺
流片Tapeout销毁晶体管并生成 Machine PDA 的原子交易
机器Machine完成流片、拥有永久身份的可执行成品
运行记录MachineRun一次通过协议验证的机器执行结果
执行轨迹根Trace Root中间状态序列的 Merkle 承诺