安全保证
本页准确说明 PiNS 保证什么、不保证什么。在这里,精确比让人安心更有用:强的部分是真的强,而知道边界在 哪里,恰恰是你能够依靠它们的前提。
特性:欺诈可被察觉
PiNS 具备欺诈可察觉(fraud-evident)的特性。任何违规要么根本无法被证明,要么对任何愿意查看的人都 是公开可见的——而查看所需的数据已经公开,因此查看既不需要许可,也不需要运营方配合。
值得理解的是两个半部分之间的区别。所有权与状态转移由密码学强制保障,根本无法被违反。其余的一切则由 独立复现来确立,在那里,任何偏离都会被所有副本同时反驳。两者都很强;只是强的方式不同,而本页会明确 说明哪一种适用于何处。
根本不可能发生的事
这些由数学强制保障。运营方的任何行为都无法绕过。
- 域名无法被从持有者手中夺走。 任何状态变更都需要用该操作所要求的密钥做出 Ed25519 签名,并在电路 内以严格验证进行检查。注册方并不持有你的密钥,也无法伪造。
- 同一个名称无法被注册两次。
REG需要一份非包含证明,而已经存在的名称无法产生这样的证明。 - 不可能以卖家未曾签名的价格成交。
BUY要求支付价格等于挂牌价格,而该价格由卖家签名的LST钉在树中。 - 没有有效证明就无法锚定状态根。 BNB Smart Chain 上的锚定合约在接受某个根之前,会用
programVkey验证每一份证明。无效的状态转移根本无法被证明。 - 电路无法被悄悄替换。
programVkey承诺于确切的已编译程序。改动一行就会改变密钥,而在链上更换 密钥是需要定序器与所有者共同参与的双方行为。
由观察而非由电路来验证的部分
有些性质并非在证明内部强制保障,而是由任何重放公开数据的人来确立。这是另一种机制,而非更弱的结果: 任何观察者都能在无需许可的情况下加以检查,而偏离对所有人同时可见,而不是只有少数特权者才看得到。
- 命令的纳入与排序。 批次由注册方组装,因此确实是它在给命令排序。但由于协议地址及其查看密钥都已 公开,每一个独立索引器都会从链本身推导出相同的顺序并算出相同的根。被遗漏或被重排的命令会产生一个 被所有副本反驳的根——立刻发生,而且无需任何人专门去找。
- 批次所报告的
end_block_height。 它被透传到公开输出,而不是在电路内部加以约束,因为复现本身 已经确立了它:重放链的索引器知道该批次覆盖了哪个区块,因此错误的高度会像其他任何偏离一样被发现。 - 提现的目标地址。 支付金额、手续费和义务都可以凭已公开的查看密钥完整审计——每一笔支付都带有指明 其所结算账户的备注,因此任何人都能重建余额账本。公开记录中唯一没有的,是用户所指定的目标地址,因为 该请求是在网站上发出的。这一部分由收款人本人直接确认,因为他保留着自己签名的请求。参见 信任与隐私。
为什么真正的保证是复现
ZK 证明回答的是:给定这些输入,规则是否被遵守?
复现回答的是:这些是否就是真实的输入?
在实践中,第二个问题才最重要,而密码学并不回答它——回答它的是注册方公开了自己的协议地址以及查看 密钥,从而使任何人都能解密自创世以来的完整命令历史,通过开源索引器重放,并比对根。偏离规则的注册方 会得到一个被每一个独立副本反驳的根。
正因如此,查看密钥的公开并不是细枝末节。它就是那个机制。
准确地说:一个主权 rollup
从结构上看,PiNS 就是一个 ZK-rollup:
- 数据可用性 — 每条命令都存放在一笔 PIVX 交易的备注中,而付款就在同一张屏蔽票据里,因此意图与 付款被原子性地绑定在一起。
- 执行 — 在链下,于 SP1 zkVM 中进行。
- 结算 — BNB Smart Chain 保存锚定的根,并在数秒内验证证明。
与典型 rollup 的不同之处在于,数据可用层是一条隐私链,因此「任何人都能读取输入」这句话要求查看密钥 必须被公开——而它确实已经公开了。
自己动手验证
以上没有任何一点需要你凭信任接受: