零知识API调用凭证:大型语言模型及其他领域的应用

本文提出了一种基于零知识证明(ZK-STARKs)和限速空值器(RLN)的API计量协议,旨在解决AI服务(特别是LLM推理)在隐私、安全和效率方面的挑战。该协议允许用户匿名进行API调用,同时确保服务提供商获得支付并防范垃圾邮件,并通过双重质押机制解决服务器方滥用问题。

Davide Crapis 和 Vitalik Buterin

API 计量中的一个核心挑战是同时实现隐私安全效率。这对于使用大型语言模型(LLMs)进行 AI 推理尤其关键,因为用户提交的是高度敏感的个人数据,但它普遍适用于任何高频数字服务。目前,API 提供商被迫在两种次优路径之间进行选择:

  1. Web2 身份:要求认证(电子邮件/信用卡),这将每个请求链接到真实世界的身份,从而造成大规模的隐私泄露和画像风险。
  2. 链上支付:要求每个请求进行一次交易,这速度慢得令人望而却步、成本高昂,并且难以混淆用户的完整交易图谱。

我们需要一个系统,让用户能够一次性存入资金,并匿名、安全、高效地进行数千次 API 调用。提供商必须获得支付保证和防止垃圾邮件的保护,而用户必须保证其请求不能与其身份或彼此关联。我们将 LLM 推理作为主要用例,但该方法是通用的,也适用于 RPC 调用或任何其他固定成本 API、图像生成、云计算服务、VPN、数据 API 等。

示例:

  1. LLM 推理:用户将 100 USDC 存入智能合约,并对托管的 LLM 发起 500 次查询。提供商收到 500 个有效、已付费的请求,但无法将它们与同一个存款人(或彼此)关联起来,同时用户的提示仍然无法与用户身份关联。
  2. Ethereum RPC:用户存入 10 USDC,并向 Ethereum RPC 节点(例如,eth_call / eth_getLogs)发起 10,000 次请求,以支持钱包、索引器或机器人。RPC 提供商受到反垃圾邮件保护并获得支付保证,但无法将请求关联到持久的用户配置文件。

提案概述:我们利用 Rate-Limit Nullifiers (RLN) 将匿名性与经济质押绑定:遵守协议限制的诚实用户保持不可关联,而进行双重支付(或以其他方式超出其允许容量)的用户将以加密方式揭示其密钥,从而实现罚没。我们设计的协议适用于 API 使用产生可变成本的情况,但它也直接支持更简单的固定每次调用成本作为特例。

我们使用一种灵活的会计协议,其中每个请求预先设置每次调用的最大成本,一旦在调用结束时确定实际成本,服务器将发出退款。用户私下累积已签名的退款票据,以收回未使用的信用并解锁未来的容量,即使实际的每次调用成本只有在执行后才知道。双重质押(Dual Staking)机制让服务器能够执行合规政策,同时保持公共问责制。

ZK API 使用信用协议

该协议利用了服务器退款与客户端的退款累积和偿付能力证明相结合。该模型通过要求用户证明其累计支出(由其当前的票据索引表示)严格在其初始存款和其验证的退款历史范围内来强制执行偿付能力。

反垃圾邮件保护是通过经济方式强制执行的:用户的吞吐量自然受其可用存款缓冲区的限制,而任何重用特定票据索引(双重支付)的尝试都由 Rate-Limit Nullifier 阻止。

原语

  • $k$:用户的密钥。
  • $D$:初始存款。
  • $C_{max}$:每个请求的最大成本(预先扣除)。
  • $i$:票据索引(一个严格递增的计数器:$0, 1, 2, \dots$)。
  • ${r_1, r_2, \dots, r_n}$:从服务器收到的私有的已签名退款票据集合。

协议流程

注册

用户生成密钥 $k$,推导出身份承诺 $ID = \text{Hash}(k)$,并将 $D$ 存入智能合约。合约将 $ID$ 插入链上 Merkle Tree。

退款收集(异步)

请求处理后,服务器提供签名的退款票据 $r = {v, \text{sig}}$,其中 $v$ 是退款金额,$\text{sig}$ 是服务器对 $v$(以及可能的唯一请求 ID)的签名。用户将其存储在本地。

请求生成(可并行化)

用户选择下一个可用的票据索引 $i$。他们可以同时生成多个请求(例如,票据 $i, i+1, i+2$)。

用户生成一个 ZK-STARK $\pi_{req}$ 来证明:

  1. 成员资格:$ID \in \text{MerkleRoot}$。

  2. 退款求和

    该电路将退款票据列表 ${r_1, \dots, r_n}$ 作为私有输入。

    • 对于每个票据,电路:
      • 验证服务器的签名。
      • 提取值 $v_j$。
    • 电路计算总和: $$R = \sum_{j=1}^{n} v_j.$$
  3. 偿付能力(信用检查):在索引 $i$ 处的总潜在支出由存款加上所有已验证退款的总和覆盖: $$ (i + 1) \cdot C_{max} \le D + R. $$

  4. RLN 份额与空值器(Nullifier)

    • 斜率(Slope):$a = \text{Hash}(k, i)$。
    • 信号(Signal):
      • $x= \text{Hash}(M)$,
      • $y = k + a \cdot x$。
    • 空值器(Nullifier):$\text{Nullifier} = \text{Hash}(a)$。

提交

用户发送:负载 ($M$) + $\text{Nullifier}$ + 信号 ($x, y$) + 证明。

验证与罚没

服务器在其“已用票据”(Spent Tickets)数据库中检查 Nullifier:

  • 分叉/双重支付检查:如果 Nullifier 存在且带有不同的 $x$(消息),则用户试图在两个不同的请求上使用相同的票据。解出 $k$ 并罚没
  • 偿付能力检查:验证 $\pi_{req}$,以确保票据索引 $i$ 得到用户当前资金水平的授权。

结算

  • 服务器执行请求。
  • 退款:服务器发放签名的退款票据 $r = (C{max} - C{actual})$。
  • 用户将 $r$ 添加到其累加器中,以“解锁”更高的票据索引供将来使用。

服务器端问责制(双重质押)

为了阻止超出简单限速的 API 滥用(例如,违反服务条款、生成非法内容或越狱尝试),我们引入了二级质押层。例如,用户可能会提交一个提示,要求模型生成制造武器的指令或帮助他们绕过安全控制——这些请求将违反许多提供商的使用政策。我们希望有一种方法来执行这些政策,同时不给提供商一个从误报中获利的直接途径。

具体来说:

用户存入总金额 $\text{Total} = D + S$。

  • $D$ (RLN 质押):受协议数学原理管辖。任何提供双重信号(已揭示的密钥 $k$)的数学证明的人(包括服务器)都可以认领。
  • $S$ (政策质押):受服务器政策管辖。如果用户违反使用政策,服务器可以对其进行罚没(销毁),但不能认领

这样做而不是简单地提高 $D$ 的目的是为了消除服务器通过欺诈手段夺走用户存款的动机,这笔存款可能会很高,具体取决于存款的金额。

$S$ 的罚没机制

如果用户提交了一个有效的 RLN 请求,该请求违反了政策(但未触发数学双重支付陷阱):

  1. 违规:服务器检测到请求负载中的政策违规(例如,违禁内容)。
  2. 销毁交易:服务器在智能合约上调用 slashPolicyStake() 函数。
    • 输入:违规请求的 NullifierViolationEvidence(可选的哈希/原因)。
    • 行动:合约从用户的存款中销毁金额 $S$。
    • 约束:服务器不能为自己认领 $S$,它被发送到一个销毁地址。这可以防止服务器被激励通过虚假禁止用户来获利。
  3. 公共问责制:罚没事件会与关联的 Nullifier 一起记录在链上。虽然用户的身份仍然隐藏,但社区可以审计服务器销毁质押的速率以及这些销毁的已发布证据。

替代逻辑:同态退款累加

有关仅在整个过程中呈现新逻辑的更新规范,请参阅此处

作为维护不断增长的退款票据列表的替代方案,我们可以使用加法同态加密(例如,Pedersen Commitments 或基于格(Lattice-based)的 HE 用于后量子安全)。这种设计允许服务器更新用户的总信用额度而无需了解总余额,同时保持客户端数据和 ZK 电路复杂性不变。

原语

  • $E(R)$:用户迄今为止收到的总退款 ($R$) 的同态加密。
  • $\sigma_{srv}$:服务器对当前加密总额 $E(R)$ 发出的签名。
  • $r$:当前请求的具体退款值(其中 $r = C{max} - C{actual}$)。

更新的逻辑流程

被动收集(服务器端更新)

服务器不存储用户的单个收据,而是在结算阶段同态地执行信用更新:

  • 计算:服务器将新的退款 $r$ 同态地添加到用户提供的承诺中:$E(R_{new}) = E(R) \oplus E(r)$。
  • 证明:服务器对新的密文进行签名:$\sigma{new} = \text{Sign}{srv}(E(R_{new}))$。
  • 交付:用户收到 $(E(R{new}), \sigma{new}, r)$ 并相应地更新其本地明文余额 $R$ 和盲因子。

请求生成(隐私包装)

为了保持匿名性,用户不直接向服务器透露签名或承诺。相反,它们被“包装”为 ZK-STARK $\pi_{req}$ 中的私有见证:

  • 签名验证:电路验证所提供的 $\sigma_{srv}$ 是来自服务器公钥的对 $E(R)$ 的有效签名。

  • 承诺开启:电路验证用户知道承诺 $E(R)$ 的秘密开启(值 $R$ 和盲因子)。

  • 偿付能力约束:与之前相同,电路断言 $(i + 1) \cdot C_{max} \le D + R$。

  • PrivateX402:用于多智能体 AI 系统的隐私保护支付通道

  • 原文链接: ethresear.ch/t/zk-api-us...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
以太坊中文
以太坊中文
以太坊中文, 用中文传播以太坊的最新进展