在不泄露内容的前提下对链上数据进行认证:午夜网络的隐私证明

发布日期:2026-06-27 10:01:52   浏览量 :2
发布日期:2026-06-27 10:01:52  
2

我构建了 网格审计,这是一款审查午夜链代码并允许您在链上认证该审查结果的工具。其初衷是帮助人们审查他们自己编写的代码。但随后我的想法进一步扩展:如何在不公开报告且不泄露审计师密钥的情况下,在公共账本上记录由授权审计师针对特定报告进行的审计?

这实际上是一种通用的午夜链模式,本文将详细介绍实现这一功能的小型合约。

问题所在

您需要一份公开的、防篡改的收据,证明“此确切内容已经过审查并签署确认”。但是:

  • 报告本身是私密的。它绝不应上链。
  • 只有真正的审计师才能发布收据。杜绝冒充行为。
  • 任何人都应能在日后验证收据,而无需知晓报告内容或审计师的秘密。

在透明链上,您必须发布报告或信任链下服务器。而在午夜链上,您可以利用两个基本原语来实现:见证人和承诺。

合约

以下是完整的注册表合约。其小巧正是关键所在。

pragma language_version >= 0.23;
import CompactStandardLibrary;

// 公共账本状态。
export ledger ownerCommitment: Bytes<32>;            // H(审计师秘密),仅在部署时设置一次
export ledger receipts: Map<Bytes<32>, Bytes<32>>;   // 收据ID -> H(报告指纹)
export ledger published: Counter;

// 私有输入(见证人)。由证明者提供,绝不会以明文形式写入账本。
witness auditorSecret(): Bytes<32>;
witness reportFingerprint(): Bytes<32>;

// 在部署时将注册表与审计师的秘密绑定。仅存储承诺,绝不存储秘密本身。
constructor() {
  ownerCommitment = disclose(persistentHash<Bytes<32>>

免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。

关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
Copyright © 2025-2027 ToB产业网址导航 公安备案 浙公网安备33010602013138号 浙ICP备16025413号-9
支持 反馈 关注 数据