本文提出了一种基于零知识证明(ZKPs)的API使用信用系统,旨在解决Web2身份验证和链上支付在隐私、安全和效率方面的不足。该系统允许用户匿名、安全且高效地进行大量API调用,特别是针对LLM推理和RPC服务,通过结合速率限制零知识匿名器(RLN)和服务器签名同态退款机制实现。
markdown
Davide Crapis 和 Vitalik Buterin
这是 v2 版——与 v1 版 相比,它将客户端的退款票据列表替换为服务器签名的同态退款运行总额,因此用户不再需要存储(或证明)不断增长的退款历史。
API 计量中的一个核心挑战是同时实现隐私、安全和效率。这对于使用 LLMs 进行 AI 推理尤其关键,因为用户会提交高度敏感的个人数据,但它也普遍适用于任何高频数字服务。目前,API 提供商被迫在两条次优路径中进行选择:
我们需要一个系统,用户可以一次性存入资金,然后匿名、安全、高效地进行数千次 API 调用。提供商必须获得付款保证并防止垃圾邮件,而用户则必须获得保证,其请求不会与其身份或彼此关联。我们将 LLM 推理作为主要的用例,但该方法是通用的,也适用于 RPC 调用或任何其他固定成本 API、图像生成、云计算服务、VPN、公共数据 API 等。
示例:
eth_call / eth_getLogs)发出 $10,000$ 个请求,以支持钱包、索引器或机器人。RPC 提供商受到垃圾邮件防护并保证获得付款,但无法将请求关联成持久的用户档案。提案概述: 我们利用 Rate-Limit Nullifiers (RLN) 将匿名性与经济权益绑定:遵守协议限制的诚实用户保持不可关联,而双重花费(或以其他方式超出其允许容量)的用户则会通过密码学方式披露其密钥,从而实现罚没。我们将协议设计为在 API 使用产生可变成本时也能工作,但它也直接支持更简单的固定成本每次调用作为特例。
我们采用一种灵活的记账协议,其中每个请求预先设置了每次调用的最大成本,一旦在调用结束时确定了实际成本,服务器就会发出退款。服务器会更新(并签名)一个同态加密的退款运行总额,用户可以在请求之间携带该总额。双重质押机制让服务器可以在执行合规策略的同时保持公开问责。
该协议利用服务器退款,并结合服务器签名的同态退款运行总额,用户可以在请求之间私下携带该总额。该模型通过要求用户证明其累计支出(由其当前的票据索引表示)严格在其初始存款和已验证的退款历史范围内来强制执行偿付能力。
反垃圾邮件保护是通过经济方式强制执行的:用户的吞吐量自然受到其可用存款缓冲的限制,同时任何尝试重复使用特定票据索引(双重花费)的行为都通过 Rate-Limit Nullifier 阻止。
注册
用户生成密钥 $k$,推导出身份承诺 $ID = Hash(k)$,并将 $D$ 存入智能合约。合约将 $ID$ 插入链上 Merkle Tree。
重新随机化状态
用户选择一个新的随机致盲因子 $\eta'$ 并推导出一个新的匿名承诺:$E(R)_{anon} = E(R) \oplus E(0; \eta')$。
请求生成
用户选择下一个可用的票据索引 $i$。用户生成一个 ZK-STARK $\pi_{req}$ 来证明:
提交
用户发送:Payload ($M$) + Nullifier + Signal ($x, y$) + Proof + 当前 $E(R)_{anon}$。
验证与罚没
服务器在其“已用票据”数据库中检查 Nullifier:
结算与退款更新
为了阻止超出简单限速的 API 滥用(例如,违反服务条款、生成非法内容或越狱尝试),我们引入了一个辅助质押层。例如,用户可能会提交一个提示,要求模型生成制造武器的说明,或者帮助他们绕过安全控制——这些请求将违反许多提供商的使用政策,并且提供商可能希望阻止。
用户存入总金额 $Total = D + S$。
这样做,而不是简单地提高 $D$,是为了消除服务器欺诈性地没收用户存款的动机,因为存款金额可能很高,具体取决于其大小。
如果用户提交了一个违反策略的有效 RLN 请求(但没有触发数学上的双重花费陷阱):
slashPolicyStake() 函数。
Nullifier 和 ViolationEvidence(可选哈希/原因)。Nullifier 一起记录在链上。虽然用户的身份仍然隐藏,但社区可以审计服务器销毁质押的频率以及这些销毁所发布的证据。
- 原文链接: hackmd.io/3da7PaYmTqmNTT...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!