NANDRY Protocol
Solana 上的开放机器铸造协议#
白皮书 v0.1
2026 年 8 月
发行晶体管,以门级成本完成流片,把代码和模型制造为可验证机器。
白皮书定位#
本文给出 NANDRY v1 的完整协议设计,覆盖晶体管发行、机器制造、开放执行和结果验证。
整套协议只有五步:
- 创建处理器,并发行该处理器唯一的晶体管;
- 通过原厂铸造或买单市场获得晶体管;
- 使用画布、Verilog、Cursor 或模型编译器制造电路;
- 按门级网表的真实规模销毁晶体管,生成永久 Machine PDA;
- 由开放执行网络运行机器,并在 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 PDA 和 total_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 枚为最小单位。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_minted 从 0 变为正数时:
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 买单成交#
晶体管持有者选择买单和成交数量。协议在一笔交易内:
- 检查卖方余额;
- 将晶体管转给买方;
- 从 Bid PDA 释放对应 SOL;
- 更新剩余数量与托管余额;
- 在买单完全成交时关闭 Bid PDA。
部分成交必须满足:
remaining_escrow = bid_price × remaining_quantity
任何不满足该不变量的订单都被视为损坏订单并拒绝成交。
6.3 买单撤销#
只有买方可以撤销自己的未完成买单。未使用的托管 SOL 与账户租金返还买方。已经成交的部分不可逆转。
6.4 价格语义与市场指标#
链上程序负责订单有效性与资产结算。索引器负责聚合市场数据:
- 最高买价;
- 可成交深度;
- 最近成交;
- 创建时间;
- 已铸造与已销毁数量;
- 已制造机器数;
- 真实运行次数。
页面分别展示原厂价、最高买单和最近成交,保持三种价格语义独立。
7. 机器工坊与统一设计入口#
7.1 四种设计方式#
NANDRY Machine Workshop 支持四种设计入口:
- 手动画布:拖放元件、端口连线、层级模块和逐拍仿真;
- Verilog:导入或编辑可综合的 Verilog 子集;
- Cursor:通过工作区与 MCP 接口远程编辑、编译和同步电路;
- 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) -> yLATCH(d) -> q
NAND 负责算,LATCH 负责记。AND、OR、XOR、MUX、加法器、寄存器、卷积核和 CPU 指令都只是给人和编译器看的高级名字,进共识前全部拆开。
9.2 最小规范字节码#
规范字节码使用固定 28 字节头:
| 偏移 | 长度 | 字段 |
|---|---|---|
| 0 | 4 | magic:TSOL |
| 4 | 1 | version |
| 5 | 1 | flags |
| 6 | 2 | reserved |
| 8 | 4 | input bits |
| 12 | 4 | output bits |
| 16 | 4 | total gates |
| 20 | 4 | LATCH count |
| 24 | 4 | gate body bytes |
头部之后是输出信号索引和门体:
NAND = 0x00 || a:u24 || b:u24
LATCH = 0x01 || d:u24
所有整数使用小端序。信号 0 和 1 是常量 false 与 true,之后依次是输入信号和门输出。
9.3 结构约束#
- NAND 只能引用已经产生的信号,从结构上排除组合环;
- LATCH 的 D 可以引用有效信号,允许表达时序反馈;
- 所有 LATCH 记录位于 NAND 记录之前;
- 输出索引必须引用有效信号;
- 保留字段必须为零;
- 截断、未知 opcode、越界索引和计数溢出全部拒绝。
9.4 Tick 执行语义#
每个 tick 分为三个阶段:
- 所有 LATCH 输出 tick 开始前的旧状态;
- 按规范顺序计算所有 NAND 和输出;
- 所有 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_count 与 latch_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_count 和 last_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 派生#
| 账户 | 规范种子 |
|---|---|
| Processor | processor, creator, processor_id |
| CircuitDefinition | circuit, circuit_id |
| ModelDefinition | model, model_id |
| Bid | bid, buyer, processor, nonce |
| Machine | tapeout, manufacturer, processor, circuit, nonce |
| ExecutionRequest | request, requester, machine, nonce |
| MachineRun | machine_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 承诺 |