本文提出了一种基于零知识证明(ZK-STARKs)和限速空值器(RLN)的API计量协议,旨在解决AI服务(特别是LLM推理)在隐私、安全和效率方面的挑战。该协议允许用户匿名进行API调用,同时确保服务提供商获得支付并防范垃圾邮件,并通过双重质押机制解决服务器方滥用问题。
Davide Crapis 和 Vitalik Buterin
API 计量中的一个核心挑战是同时实现隐私、安全和效率。这对于使用大型语言模型(LLMs)进行 AI 推理尤其关键,因为用户提交的是高度敏感的个人数据,但它普遍适用于任何高频数字服务。目前,API 提供商被迫在两种次优路径之间进行选择:
我们需要一个系统,让用户能够一次性存入资金,并匿名、安全、高效地进行数千次 API 调用。提供商必须获得支付保证和防止垃圾邮件的保护,而用户必须保证其请求不能与其身份或彼此关联。我们将 LLM 推理作为主要用例,但该方法是通用的,也适用于 RPC 调用或任何其他固定成本 API、图像生成、云计算服务、VPN、数据 API 等。
示例:
eth_call / eth_getLogs)发起 10,000 次请求,以支持钱包、索引器或机器人。RPC 提供商受到反垃圾邮件保护并获得支付保证,但无法将请求关联到持久的用户配置文件。提案概述:我们利用 Rate-Limit Nullifiers (RLN) 将匿名性与经济质押绑定:遵守协议限制的诚实用户保持不可关联,而进行双重支付(或以其他方式超出其允许容量)的用户将以加密方式揭示其密钥,从而实现罚没。我们设计的协议适用于 API 使用产生可变成本的情况,但它也直接支持更简单的固定每次调用成本作为特例。
我们使用一种灵活的会计协议,其中每个请求预先设置每次调用的最大成本,一旦在调用结束时确定实际成本,服务器将发出退款。用户私下累积已签名的退款票据,以收回未使用的信用并解锁未来的容量,即使实际的每次调用成本只有在执行后才知道。双重质押(Dual Staking)机制让服务器能够执行合规政策,同时保持公共问责制。
该协议利用了服务器退款与客户端的退款累积和偿付能力证明相结合。该模型通过要求用户证明其累计支出(由其当前的票据索引表示)严格在其初始存款和其验证的退款历史范围内来强制执行偿付能力。
反垃圾邮件保护是通过经济方式强制执行的:用户的吞吐量自然受其可用存款缓冲区的限制,而任何重用特定票据索引(双重支付)的尝试都由 Rate-Limit Nullifier 阻止。
注册
用户生成密钥 $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}$ 来证明:
成员资格:$ID \in \text{MerkleRoot}$。
退款求和:
该电路将退款票据列表 ${r_1, \dots, r_n}$ 作为私有输入。
偿付能力(信用检查):在索引 $i$ 处的总潜在支出由存款加上所有已验证退款的总和覆盖: $$ (i + 1) \cdot C_{max} \le D + R. $$
RLN 份额与空值器(Nullifier):
提交
用户发送:负载 ($M$) + $\text{Nullifier}$ + 信号 ($x, y$) + 证明。
验证与罚没
服务器在其“已用票据”(Spent Tickets)数据库中检查 Nullifier:
结算
为了阻止超出简单限速的 API 滥用(例如,违反服务条款、生成非法内容或越狱尝试),我们引入了二级质押层。例如,用户可能会提交一个提示,要求模型生成制造武器的指令或帮助他们绕过安全控制——这些请求将违反许多提供商的使用政策。我们希望有一种方法来执行这些政策,同时不给提供商一个从误报中获利的直接途径。
具体来说:
用户存入总金额 $\text{Total} = D + S$。
这样做而不是简单地提高 $D$ 的目的是为了消除服务器通过欺诈手段夺走用户存款的动机,这笔存款可能会很高,具体取决于存款的金额。
$S$ 的罚没机制
如果用户提交了一个有效的 RLN 请求,该请求违反了政策(但未触发数学双重支付陷阱):
slashPolicyStake() 函数。
Nullifier 和 ViolationEvidence(可选的哈希/原因)。Nullifier 一起记录在链上。虽然用户的身份仍然隐藏,但社区可以审计服务器销毁质押的速率以及这些销毁的已发布证据。有关仅在整个过程中呈现新逻辑的更新规范,请参阅此处。
作为维护不断增长的退款票据列表的替代方案,我们可以使用加法同态加密(例如,Pedersen Commitments 或基于格(Lattice-based)的 HE 用于后量子安全)。这种设计允许服务器更新用户的总信用额度而无需了解总余额,同时保持客户端数据和 ZK 电路复杂性不变。
被动收集(服务器端更新)
服务器不存储用户的单个收据,而是在结算阶段同态地执行信用更新:
请求生成(隐私包装)
为了保持匿名性,用户不直接向服务器透露签名或承诺。相反,它们被“包装”为 ZK-STARK $\pi_{req}$ 中的私有见证:
签名验证:电路验证所提供的 $\sigma_{srv}$ 是来自服务器公钥的对 $E(R)$ 的有效签名。
承诺开启:电路验证用户知道承诺 $E(R)$ 的秘密开启(值 $R$ 和盲因子)。
偿付能力约束:与之前相同,电路断言 $(i + 1) \cdot C_{max} \le D + R$。
- 原文链接: ethresear.ch/t/zk-api-us...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!