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

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

每一条大型区块链都让每个节点针对全局状态重新执行每一笔交易。Zycord 把执行搬到链外:交易在链外的服务器之间组装完成,抵达时已带齐它读过和写过的一切,任何机器都能仅凭字节对它进行核查,然后由单一的循环提交结果。

Three phases: construction between servers, parallel verification, sequential fold 组装 — 链下 交易在服务器之间往返,直到闭合 钱包 定序器 合约 A 定序器 合约 B 承保人 联署签名 验证 — 并行、无状态 众多节点,各查各的分片 折叠 — 串行 一个循环,比较并相加 每个 2,900 份凭证的区块 9.9 毫秒
普通服务器,web2,无共识 随着每一个加入网络的核心一同增长 唯一稀缺的资源

交易就是一份凭证

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

Certificate { reads: [(slot, access, operand)] // 我读了什么,以及怎么读的 writes: [(slot, op, value)] // 我写了什么 program: bytes // 代码或原生操作 sigs: [signature] // 花费权限 underwriter: (id, sig, seq) // 谁承担风险 ttl: height // 到此高度仍未被打包则过期 fee: (seq_gas, par_gas) // 两个市场 }
有效 = 字节的纯函数签名无误,承保人无误,且以 reads 为输入重新执行 program 得到的正是那些 writes。不碰磁盘,不看历史。
可应用 = 由位置决定当凭证轮到它在区块中的次序时,所声明的 reads 是否仍与状态相符?
ID 不含签名换一个 nonce 重新签名得到的是同一个 ID。已见集合会抓住这份副本。没有人会被收两次费。
每个槽位的访问类型EXACT 钉住具体数值。GUARD 只声明“余额 ≥ x”。DELTA 不读取就相加。支付与打赏可交换,永不冲突。

两个动词,两个阶段

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

并行

它有效吗?

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

  • 规范形式的签名核对通过
  • 重新执行的结果与 writes 相符
  • 范围证明闭合(屏蔽通道)
  • 无效:永不进入区块
串行

它可应用吗?

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

  • reads 仍然相符 → writes 被提交
  • reads 已过时 → 跳过,烧掉承保人的费用
  • 存储单元已被花费 → 跳过
  • 无论哪种情况,区块都保持有效

从诞生到入账的流程

1

在服务器之间构造

钱包发起请求。每一个热门合约都有自己的定序器 — 一台普通的应用服务器 — 它保存一份状态副本,把谁先动排出次序,并把每一份凭证串接到前一份的 writes 之上。一笔触及两个合约的交易由两个定序器共同构建,并作为单一的原子凭证抵达链上。

2

承保人签名

一位有抵押资金的承保人对照新鲜状态进行核查,联署签名,并承担跳过风险。它在带外向发送方收费,实际上卖出的是一份预确认。任何不想要中间人的人都可以用自己的保证金自行承保 — 随时可用,无需请求许可。

3

网络接收并并行验证

每个节点在转发之前都会从字节核查有效性。启用抽样时,由 VRF 抽取的委员会验证每一份凭证;任何节点都可以核查任何东西,而一条消息就足以惩罚一位为垃圾内容背书的承保人。

无效 → 丢弃,永不进入区块
4

提议者排序

一个 PoS 委员会挑选有效的凭证并组装区块。它不执行任何东西,也不持有任何应用状态。它只记住 TTL 窗口内见过的那些 ID。强制队列中的凭证必须在 F 个区块之内被打包。

5

串行折叠

按 (underwriter, seq, id) 排序 — 次序不由提议者选择。对每一份凭证:reads 是否与状态相符?检查点每 32 个区块最终确认一次。

已应用 — writes 已提交,费用支付给提议者
已跳过 — 费用被烧掉,记在承保人账上,区块仍然有效

谁做什么

网络的安全性不需要任何一种角色。即使他们全都消失,强制队列也能让系统继续存活。

钱包

做什么
构建凭证,声明 reads 与 writes,签名
看得见
它需要读取的那部分公开状态
信任
没有人

定序器

做什么
在链外为一个热门合约定序,把多批操作打包进一份凭证
被信任的部分
仅活性。若它说谎,凭证会被跳过,由保证金赔付
攫取
它自己那个应用的 MEV,且是明示的

承保人

做什么
联署签名,并以保证金承担跳过风险
看得见
存储单元是活的还是已花费 — 从来看不到被隐藏的数值
会损失
仅当出现可在字节中证明的过错(双重表述)时

验证节点

做什么
从字节核查有效性,转发,同步
需要
核心数。只有打算提交时才需要状态
成本
随网络增长而下降,因为它只验证其中一片

提议者(PoS)

做什么
对有效凭证排序,执行折叠,提议区块
看得见
字节,而不是含义
赚取
补贴 + 已应用凭证的优先费

在不触碰串行路径的前提下实现隐私

在公开图谱之上,用一次性地址做机密交易。它隐藏数额。它把与收款方的关联推迟。它不是 Monero,论文里就是这么说的。

什么被隐藏

  • 数额:承诺 C = vG + rH
  • 收款方,直到第一次花费为止(隐身地址)
  • 每个隐藏存储单元的余额 — 只有所有者能花费它,没有人能“问出来”

什么是公开的

  • 发生过一笔支付,以及是谁为它承保的
  • 哪一个输出被花掉了,在花费的那一刻
  • 公开通道与屏蔽通道之间的每一次跨越,数额都是明面上的
  • 手续费、coinbase、向合约的支付

屏蔽池是一道围栏,不是一个警报器

Shielded pool with an exit guard 公开通道 数值为 u256,带检查的算术 屏蔽池 池 = Σ 入 − Σ 出 一个公开整数,由增量推动 屏蔽 +v 解除屏蔽:守卫池 ≥ v 若密码学被攻破 伪造的数额也跨不过守卫。 通胀被困在池内。

折叠从不做曲线运算。它存下 32 字节的承诺,然后比较是否相等。所有繁重的密码学 — 范围证明、余额等式 — 都在并行阶段验证,并在那个便宜的市场里付费。

为什么不用环签名

一个环会引用其他人的输出 — 那会让有效性成为历史的函数,并且毁掉无状态验证。Zycord 不愿放弃这一性质,所以它的隐私性弱于 Monero,这是决定的结果,不是疏忽。

网络:两个 gas 市场

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

并行 gas

为验证付费:签名、重新执行、字节、繁重的证明、后量子方案。

供给随着每一个加入的核心和 GPU 而增长。上限高,价格低。

串行 gas

为折叠付费:核查 reads、writes、租约。这是每个节点都要按序运行的那个唯一循环。

稀缺。上限有弹性:每年最多在满载且健康的区块上翻一倍。没有人投票。

从上方看这个网络

四个互不重叠的层:谁定序、谁承保、谁验证、谁排序。每一层随着不同的资源而扩展。

链下

按应用划分的定序器

普通的 web2:websocket、队列、自动扩缩容。它们为热门合约定序,并把多批操作打包成 GPU 擅长验证的形状。它们从不托管数据 — 状态始终可以仅凭链本身重建出来。

链下

承保人市场

有抵押的承保人出售预确认:“数秒内被应用,否则我的保证金赔付”。双重表述会被字节中的一份证明所惩罚;缓慢只会付出声誉的代价。延迟永远不会变成没收。

并行

验证委员会

按凭证由 VRF 抽取,规模的设定使一份无效凭证得以逃脱的概率可以忽略不计。任何全节点都可以审计任何东西。一条消息就足以施加惩罚。

串行

PoS 委员会 + 折叠

提议区块,执行折叠,最终确认检查点。强制队列迫使凭证在 F 个区块内被打包并保证其被应用 — 正是这个机制让网络能在任何运营者之后继续存在,包括作者本人。