ZYCORD 文档
简体中文
Zycord文档网络的工作原理
Zycord (ZCD) — 网络的工作原理

链下组装。
并行验证。
按序提交。

每一条大型区块链都让每个节点针对全局状态重新执行每一笔交易。Zycord 把执行搬到链外:付款由钱包构建,合约调用由该合约的定序器根据用户签名的意图执行,无论哪种方式,结果抵达时都已带齐它读过和写过的一切。任何机器都能仅凭字节对它进行核查,然后由单一的循环提交它 — 或者跳过它,并向为它提供保证金的一方收费。

Three phases: construction by sequencers, parallel verification, sequential fold 组装 — 链下 定序器执行意图,并联合签署一份 fill 钱包 定序器 合约 A 定序器 合约 B 定序器 合约 C 验证 — 并行、无状态 每个节点在每个核心上核查每一份凭证 折叠 — 串行 一个循环,比较并相加 应用或跳过,从不执行
普通服务器,web2,无共识 随着每一个加入网络的核心一同增长 唯一稀缺的资源

交易就是一份凭证

它不是在请求“执行这个”。它陈述“我读了这些,我写了那些,证明在此”。任何人都可以重算并比对。

Certificate { chain_id: u64 // 它所属的网络 seq: u64 // 保证金提供者自己的计数器 program: (type, body) // 原生操作、机器调用、fill、强制 reads: [(slot, access, operand)] // 我读了什么,以及怎么读的 writes: [(slot, op, value)] // 我写了什么 sigs: [(key, signature)] // 花费授权 deposit: (cell, amount, change) // 由谁为它负责 ttl: height // 若到此高度仍未被打包则过期 fee_bid: (seq_gas, par_gas) // 两个市场 }
有效 = 字节的纯函数签名验证通过,以 reads 为输入重新执行 program 得到的正是那些 writes,且 deposit 足以覆盖最坏情况。不碰磁盘,不看历史。
可应用 = 由位置决定当凭证轮到它在区块中的次序时,所声明的 reads 是否仍然成立?
ID 不含签名换一个 nonce 重新签名得到的是同一个 ID。已见集合会抓住这份副本。没有人会被收两次费。
每个槽位的访问类型EXACT 钉住具体数值。GUARD 只声明“余额 ≥ x”。DELTA 不读取就相加。支付与打赏可交换,永不冲突。

两个动词,两个阶段

整个设计就是把这两个问题分开 — 并在最便宜的地方各自作答。

并行

它有效吗?

只看凭证本身就能回答。任何机器上都可以一次数千份。

  • 严格 Ed25519 签名核对通过
  • 重新执行的结果与 writes 相符
  • 保证金足以覆盖最坏情况
  • 无效:永不进入诚实的区块
串行

它可应用吗?

在凭证于区块中所处的位置回答,把字节与状态表相比对。

  • reads 仍然成立 → writes 被提交
  • 读取过时或溢出 → 跳过,保证金提供者支付一笔固定费用
  • 保证金没有资金或已被花费 → 丢弃,不收取任何费用
  • 无论哪种情况,区块都保持有效

四种结果,以及由谁付费

凭证出了问题是一种结果,从来不是拒绝区块的理由。每一种结果都向选择了该风险的一方收费,而一个签名至多被收费一次。

已应用

每一个所声明的读取都成立,因此写入落地,费用按实际成本结算:基础费被烧掉,优先费支付给生产者。

强制失败

一份调用回滚或突破了其界限的强制凭证。它的付款地址被扣款,找零退回给用户,此外不写入任何东西,且该 id 被标记为已见。

已丢弃

保证金存储单元没有资金或已被花费,因此没有可以收取的东西。凭证被携带但不收费,也不标记为已见。

从诞生到入账的流程

1

钱包构建一笔付款,或签署一个意图

一笔付款不需要服务器:钱包对它持有的一个一次性存储单元加守卫、扣款、将其标记为已花费,向收款方的新地址入账,并把找零发到它自己的一个新地址。对定序合约的调用则是一个签名意图:调用什么、对结果的界限、付给定序器多少,以及为它出资的一次性付款地址。

2

定序器执行并确认

它在自己的视图之上运行该意图 — 链的最新端加上它已经构建的每一份 fill — 在几毫秒内以一份签名回执作答,并把结果作为一份以它自己的余额作保证金的 fill 发布。一次跨越绑定到不同定序器的多个合约的调用,由每个定序器联合签署,并作为一份原子的 fill 落地。

3

每个节点并行验证

每一份凭证在到达时、被转发之前,都从其字节进行核查:签名、针对所声明读取的重新执行、保证金。没有状态,没有历史,任何核心,任何机器。

无效 → 丢弃;若出现在区块中,则使该区块无效
4

生产者排序

工作量证明矿工挑选有效的凭证并求解区块;在切换到权益证明之后,改由为该时隙抽中的质押者为区块签名。它不执行交给它的任何东西,并记住 TTL 窗口内见过的 id,因为把同一份打包两次会让区块无效。在其区块末尾,它可以执行来自强制路径的开放意图。

5

串行折叠

首先是 fill,按流水线顺序;然后是其他所有凭证,按 (deposit address, seq, id);然后是强制凭证,按 id。这些都不由生产者选择。对每一份凭证:所声明的读取是否仍然成立?

已应用 — 写入落地,基础费被烧掉,优先费归生产者
已跳过 — 不写入任何东西,跳过费从保证金中烧掉,区块仍然有效

状态:存储单元、地址、类型化访问

存储单元是位于某个槽位上的一个 256 位整数。不存在的存储单元读作零。并发不是在运行时发现的:它是逐个槽位声明的。

类型化访问

一次读取要么是 EXACT,它参与计算,并在存储单元变动时过时;要么是一个守卫 — GUARD_GE、GUARD_LE、GUARD_EQ — 它不返回任何东西。一次写入是 SET、DELTA_ADD、DELTA_SUB 或 MARK_SPENT。只有 EXACT 会过时,因此对同一个槽位的带守卫借记和贷记可以交换,只有在真正透支时才会跳过。

一次性地址与持久地址

一次性地址只花费一次:对它扣款的那份凭证会把它永久标记为已花费。钱包为每一笔入账付款提供一个新地址,这是零争用的路径。持久地址可以重复使用 — 即一个账户 — 挖矿奖励也应当进入持久地址:一次性地址一旦被花费,就会烧掉它持有的每一笔奖励,因此节点拒绝把一次性地址用作收款地址。合约有自己的地址种类,任何密钥都无法为其签名。

原生资产,无需机器

自区块 0 起:至多 32 笔转移的 TRANSFER,带供应上限的 ISSUE,受该上限守卫的 MINT,至多 64 个一次性地址的 RETIRE。向一个新存储单元入账就是打赏。一个区块里的一万次打赏就是一万次加法:零冲突,无需定序器,无需机器。

机器及其定序器

带守卫增量消解了付款之间的争用。剩下的是那些必须读取精确状态才能决定写什么的逻辑 — 订单簿、做市商 — 在那里,由合约选择它的串行化者。

cEVM

以太坊虚拟机的一种方言,因此 Solidity、它的编译器和它的审计者都可以沿用。存储是声明式的:SLOAD 和 SSTORE 是精确的,另有六个新操作码提供带守卫、可交换的规则。NUMBER 和 TIMESTAMP 读取纪元信标,在一天之内保持不变;没有对应物可指的操作码被移除。代码随凭证一起传输。一个代币、一个打赏罐和一个托管合约,以增量优先的方式编写,在机器开启时预先部署。

定序或开放

每个合约的记录都指定一把定序器密钥。如果它非零,合约的精确路径就需要该密钥的签名;如果它为零,任何人都可以走这条路径,合约只受其代码保护。带守卫增量从不受此限制:一个定序代币仍然接受来自任何人的每一笔转账。定序器目录说明每个定序器在哪里应答 — 是发现,而不是授权。

意图、fill、回执

意图就是用户的全部授权,在至多 8 个区块的窗口内有效:定序器可以改变它何时运行,但永远不能改变它做什么。fill 的 id 就是意图的哈希,因此同一意图的两份 fill 共用一个 id,只有一份能被收费。回执是一种预确认,是定序器在 fill 被应用之前的承诺;两份相互矛盾的回执就是任何人都能从字节核查的证明,而用户会离开。

流水线、fence、联合定序

链为每个定序器和合约记录最后一个已应用的 seq,而一份 fill 只能以下一个序号进入,因此流水线按其定序器签署的顺序提交。每个合约还保有一个 fence 计数器:一份设置其状态的强制凭证,或一次定序器的更换,都会推进它,而在被绕过的状态之上构建的每一份 fill 都无法进入 — 不向任何人收费,定序器重新构建。跨定序器的调用是一份带有每个定序器签名的 fill,按构造即是原子的。

强制路径:打包即应用

一个唯一入口就是其定序器的合约,一旦定序器审查、多收费或消失,就会变成一座监牢。每个用户都有一扇无需任何人许可的慢门。

每个区块按三类进行折叠,其顺序不由生产者选择

Fold order within a block: fills, then every other certificate, then forced certificates 折叠顺序 fill 按流水线顺序 任何跳过由定序器付费 其他所有凭证 按保证金地址、seq、id 任何跳过由保证金提供者付费 强制凭证 由生产者执行,按 id 至多 16 份;失败的也会落地

用户签署一个开放意图 — 一个未指定定序器、由用户自己的一次性付款地址出资的意图 — 并把它转发到网络。生产者持有其区块末尾的状态,它以该状态执行它所选择的开放意图,并把结果作为区块的最后几份凭证追加上去。没有队列、租约、配额或截止期限。意图的付款支付费用,因此生产者赚到的与定序器会赚到的一样多。

它会推进 fence

一份设置了某合约状态中某个存储单元的强制凭证,会推进该合约的 fence 计数器,于是在它所绕过的状态之上构建的每一份 fill 都要重新构建。只做读取、守卫或增量相加的强制凭证不会动 fence,失败的强制凭证也不会。定序器损失的是延迟,仅此而已。

按构造即有界

每个区块至多 16 份强制凭证,每份至多 4,000 个派生单位的并行预算(200,000 机器 gas):至多为创世并行上限的三分之一。给合约作者的规则是:提款必须符合这个预算。

谁做什么

安全性不需要任何角色。即使每个定序器都消失了,合约依然通过其增量方法和强制路径存活,用户借此提款,合约也可以借此绑定到一个新的定序器。

钱包

做什么
把付款构建为凭证;为合约签署意图
看得见
它需要读取的那部分公开状态
信任
没有人

定序器

做什么
为其合约执行意图,签署回执,发布 fill
被信任的部分
仅活性。若它说谎,它的 fill 会被跳过,由它自己的保证金赔付
攫取
它自己那个应用的订单流,且是明示的

验证节点

做什么
从字节核查每一份凭证,转发,同步
需要
核心数。只有运行折叠才需要状态
成本
验证分摊到它拥有的每一个核心上;折叠是一个在内存上的循环

区块生产者

做什么
用 RandomX 挖矿,对有效凭证排序,在其区块末尾执行开放意图
看得见
字节和状态,而不是含义
赚取
补贴的 94%,加上被应用凭证的优先费

合约作者

做什么
把每个槽位声明为精确或带守卫;选择一个定序器,或不选
获得
并行性,按槽位可选启用
对用户的义务
一个符合强制预算的提款操作

网络:两个 gas 市场

一条在单一拍卖里为一切定价的链,会让一次证明验证去和一次状态写入竞价。在这里,每一种资源都有自己的价格。

并行 gas

为验证付费:签名、字节、派生单位 — 繁重的证明、后量子方案。

供给随着每一个加入的核心和 GPU 而增长。目标和上限固定为其串行对应值的 3×。上限高,价格低。

串行 gas

为折叠付费:读取、写入、已花费注册表插入、已见集合插入。这是每个节点都要按序运行的那个唯一循环。

稀缺。有弹性:目标每天按被应用的 gas 调整一次,介于 1.6M 与 5.12M 之间;软上限为目标的 2×,硬上限为 4×。没有人投票。

时代:今天运行的,以及之后到来的

一个时代就是编译进发行版的一个高度,或一个在链上测得的条件。一个低于某道关口、却携带了该关口所启用内容的区块是无效的;一个新的时代永远不会改变较早区块的含义。

Era 0 — 挖矿与支付

自区块 0(2026年10月7日)起上线。遵循中本聪规则的工作量证明、原生资产、一次性地址和持久地址、两个手续费市场、94/3/3 的补贴划分以及国库:国库持续累积,且没有任何凭证能从中扣款;动用途径如果有的话,会经由日后的升级到来,且不早于高度 259,200。

Era 1 — 机器

高度 80,640,约在 2026年11月4日,已在发布二进制文件里。cEVM 及其标准库、带定序器和管理员的合约记录、意图、fill 与联合定序、定序器目录,以及强制路径。

Era 2 — 权益证明

质押在纪元 182 开启,约 2027年4月7日:权益可以被质押、解除质押或委托给一个权益池,最低质押额为 1,000 ZCD。一旦活跃权益在 30 个纪元内持有供应量的 10%,最迟从纪元 273 起,一段 90 个纪元的权益爬坡期开始:区块仍然是挖出来的,每个区块还由一个按权益抽中的质押者签名,该质押者获得生产者份额的 k/180。它是其自己的发行版,以硬分叉方式交付。

切换

在第 90 个通过闸门的纪元之后的那个纪元的第一个区块 — 闸门即该纪元 90% 的区块带有签名,且活跃权益至少为供应量的 10%。挖矿结束;被抽中的质押者为每个 5 秒时隙签名,而一个 17,280 个时隙的纪元支付的数额与之前一天支付的相同。区块按深度达到最终,即 120 个区块或 10 分钟。只有双重签名受到惩罚,且委托者永不受罚。

超越全面验证

一个方向,而不是一项规范。当每日交易量接近一个普通节点所能验证的量时,后来的某个时代可以抽取一部分权益来验证每一份凭证,而不是由每个节点验证,同时状态和折叠仍是一个,每一份凭证仍是原子的。在那之前,每个节点验证一切。

Era S — 机密支付

隐藏金额与一次性地址,只在独立审计和一个对抗性的公共 testnet 之后才会到来。不属于 v2 协议:它将遵循自己的规范。

从上方看这个网络

四个互不重叠的层:谁构建、谁验证、谁排序,以及那扇谁也关不上的门。每一层随着不同的资源而扩展。

链下

钱包与定序器

普通的 web2:websocket、队列、自动扩缩容。钱包自己构建付款;定序器执行意图,并在几毫秒内作答。它们在活性上受信任,在安全性上从不受信任,也从不托管数据 — 状态始终可以仅凭链本身重建出来。

并行

转发与验证

每个节点在转发每一份凭证之前,都从其字节对它进行核查。区块以区块头加上一个哈希列表的形式传输,而这些哈希对应的内容接收方大多已经持有;区块体是链数据。节点朝着经过验证的最多工作量同步,而不是朝着声称的最高高度。

串行

生产者与折叠

工作量证明矿工对凭证排序并求解区块,或者在切换到权益证明之后,由为该时隙抽中的质押者为它签名;每个节点运行折叠,折叠只做比较、相加和写入。折叠的顺序由规则固定,因此生产者唯一的选择是打包什么。

串行

强制路径

开放意图,由生产者在其区块末尾执行。打包即应用 — 正是这个机制让网络能在任何运营者之后继续存在,包括作者本人。