Gas票证 - 以太坊区块的后台通行证

  • Nerolation
  • 发布于 2023-06-12 12:12
  • 阅读 102

文章介绍了一种名为“Gas Ticketing”的隐私保护方案,用户从协调者处购买“gas票”,赎回后,可以资助一个未注资的以太坊地址(EOA)。该方案利用盲签名技术,在保持隐私的同时,协调者也不知道谁购买了赎回的票,使得用户可以在不暴露身份的情况下为新账户提供资金,从而打破了用户身份账户和新账户之间的链上关联。

TL;DR - 用户从“协调者”处购买“票”,当兑换时,资助一个未资助的 EOA。这样做,同时保持隐私,以至于连协调者都不知道谁购买了已兑换的票。

感谢 Matt (lightclient), Guillaume, Matt Solomon, Barnabé, Chris HagerVitalik 的审查和反馈!

这个 仓库中找到用 Python (CLI) 实现的 PoC 和用 Go (Coordinator) 实现的 PoC。

今天的格局

当今以太坊格局的挑战之一是隐私。

用户资助他们的账户,被曝光,设置新的账户,重复。

管理大量的地址是一项复杂的任务,并且维护安全金融交易所需的必要隐私水平变得越来越具有挑战性。

这种隐私问题也延伸到 隐身地址。隐身地址可以通过创建不可链接的交易来增强隐私,但它们面临的挑战是,接收者的账户最初并没有 ETH 资助。如果发送者没有在隐身地址交易中附加足够的 ETH,接收者将无法使用它,并且必须首先从另一个可能被曝光的账户资助隐身地址。请查看 Vitalik 的博客文章 以获取有关该主题的更多详细信息。

无法显示图片可能的原因

  • 图片文件可能已损坏
  • 托管图片的服务器不可用
  • 图片路径不正确
  • 不支持图片格式

了解更多 →

一些隐私挑战归结为这样一个事实:EOA 需要有最少数量的 ETH 才能支付 gas 费用,然后才能在以太坊上执行操作。

通过 EIP-1559 和协议强制执行的基础费用的引入,提交零 gas 交易变得不可能。但是,我们可以通过让一个(最小程度信任的)外部方,即协调者,通过购买和兑换“gas 票”来处理未资助 EOA 的资金。在这样做的同时,我们能够有效地打破用户被曝光的账户(购买票)和用户未资助的账户(兑换票)之间的链接,从而提供更高的隐私。

在示例中维护隐私的挑战

对于以下内容,让我们假设我们正在处理一个有两个账户 AB 的用户。

账户 A 已被资助并已曝光,而账户 B 代表一个刚刚创建的账户,尚未在以太坊上执行任何操作。用户持有这些账户的私钥,已收到 1000 DAI 的赠款支付到地址 B。出于隐私原因,用户不希望将这笔钱收到地址 A

无法显示图片可能的原因

  • 图片文件可能已损坏
  • 托管图片的服务器不可用
  • 图片路径不正确
  • 不支持图片格式

了解更多 →

在这种情况下,用户无法使用 1000 DAI 做任何事情,因为他的账户中没有 ETH 来将 DAI 兑换为 ETH 或将 DAI 转移到 CEX。用户希望避免通过账户 A 为该账户提供资金,因为这将在 AB 之间创建一条链上链接,并破坏最初设置账户 B 的原因。

用户现在有不同的选择:

  1. 通过 Tornado Cash(或一些类似的混合协议)转移一些资金。
  2. 从 CEX 转账并接受 B 在 CEX 前面被曝光。
  3. 使用 gas 票务解决方案。

假设用户来自美国,因此被禁止与 Tornado Cash 互动,同时又不是一个铁杆的反叛自由主义者。那么,使用 Tornado Cash 将不是一个选择。

除了违反制裁(或增加恶意方的匿名性集合)的风险之外,基于 zk-SNARK 的混合器还具有高 gas 成本(存款 + 取款大约 100 万 gas),并且还需要用户具备一定的复杂性,因为他们需要本地构造一个 Merkle 证明才能进行提款。因此,选项 1 不适用于此用例。

选项 2 假设 CEX 在安全性和可靠性方面都可以完全信任,并且知道用户拥有账户“B”中的资金。因此,用户也放弃了这个选项。

还剩下选项 3……

在建立了背景之后,我们现在将更详细地研究 Gas 票务概念。这篇文章的灵感来自 Vitalik 的一篇 博客文章,其中概述了这样一个系统如何运作。这个票务概念最吸引人的特性之一是,它允许用户在使用未资助的 EOA 时保持他们的隐私。

Gas 票务

票务解决方案基于 David Chaum 1983 年提出的 "不可追踪支付的盲签名" 的概念,该概念巧妙地实现了中心化电子现金系统上的不可追踪支付。从那时起,该方法已用于各种需要隐私的应用中,例如数字投票,以及更多与加密货币相关的 CoinJoin 协议,例如比特币上的 Wasabi Wallet。盲签名具有一些非常酷的属性,允许它们用于构建 gas 费票务解决方案。

它的工作原理如下:

  • 用户使用账户 A 从协调者处购买一张“”,价格为 0.001 ETH。为此,用户将 ETH 连同一些盲化的数据发送给协调者。理论上,这些“数据”可能是一个哈希字符串,内容为“这是我的第一张票”。“盲化”是一种加密技术,可防止协调者以明文形式查看所提供的数据。盲化需要一个随机生成的数字,即盲化因子,用于“盲化”数据,并由用户保密。
  • 协调者验证收到 0.001 ETH,对盲化的数据进行签名,并将已签名的盲化数据返回给用户。
  • 用户现在使用账户 B,可以通过首先“解盲”已签名的盲化数据(有效地获得协调者的有效签名),然后向协调者展示签名来兑换票,同时向协调者提供持有 1000 DAI 的待资助账户。
  • 如果签名有效,协调者可以资助所提供的账户,因为他们知道用户之前已通过购买票为此付费。在最后一步中,协调者会记录已使用的签名,以防止重复兑换。

(1) 用户生成随机/任意数据并对其进行盲化。(2) 用户将其与一些 ETH 一起发送给协调者。(3) 协调者确认收到并对盲化的数据进行签名。(4) 协调者返回已签名的盲化数据。(5) 用户解盲已签名的盲化数据并获得协调者的签名。(6) 用户使用一个未资助的账户,提交一个待资助的地址以及协调者的签名和未盲化的票。(7) 协调者验证签名并使用票的值资助所提供的地址。

重要的是,协调者在签名之前从未见过未盲化的数据,但会遇到它自己的有效签名,用户从协调者返回的已签名的盲化数据中提取了该签名。只有通过解盲返回的已签名的盲化数据,才能提取签名。看到签名后,协调者可以确信该用户(记住,使用的是账户 B)有权获得一些账户的资助以兑换票,而不知道确切兑换了哪张票。

为了保持这篇文章的可读性,而又不会因代码过多而使其不堪重负,我选择不包括具体的代码示例。在 此存储库 中可以找到用 Python 实现的盲签名的 PoC。

道路上的一些挑战

更多地思考这个概念,人们可以识别出几个挑战,其中一些可能只是实现细节,而另一些则更具有根本性。

信任假设

如上所述,票务需要对协调者有一定的信任,协调者可能会潜在地撤回你的资金并带着尚未兑换的票(基本上是 ETH)逃跑。虽然有人可能会争辩说,最好采用无需信任的解决方案,但我同意 Vitalik 的 评估,即,即使需要对协调者有一定的信任,所涉及的资金数量也很少,因此优势大于劣势。

然而,识别值得信赖的协调者仍然具有挑战性。恶意协调者可能会出售票而不提供签名或资助地址,因此我们必须依赖协调者的信誉系统。

协调者利润

协调者可以为此服务收取一些费用,从而开辟额外的、潜在的有利可图的收入来源。用户重视他们的隐私,并且愿意支付更多费用来私下资助他们未资助的账户。

票的大小和处理零钱

出于隐私原因,票务服务需要具有固定大小的票。

广义上讲,一张票应该携带足够的价值(以 ETH 衡量),因此只需要少量票即可补偿协调者为未资助的 EOA 提供资金。对于较小的票尺寸,需要一次兑换更多的票。但是,这不会构成问题,因为用户可以同时购买和兑换多张票。

例如,用户可以通过向协调者发送 0.01 ETH 以及 10 条盲化的数据来购买 10 张票。无需处理“零钱”,因为协调者在扣除一些费用后,可以只使用整个票的价值来资助用户指定的地址。

用户 - 协调者沟通

用户应该有能力通过发送 ETH 并向他们提供盲化的数据来从协调者处购买一张票。如果没有访问盲化因子(用于盲化的随机数),则此盲化的数据对于任何其他用户都是无关紧要的。因此,可以将此盲化的数据作为 calldata 附加到交易中,而无需担心。

另一方面,协调者还必须与用户建立通信以在确认收到 ETH 后传递已签名的盲化的数据,此过程可能会带来某些挑战。

链下通信 - 一种解决方案是使用私有通信渠道。用户将向协调者发送一个 API 请求,以发送包括票购买和盲化的票的 txhash。之后,用户直接收到已签名的盲化的数据(协调者验证收到情况)并使用盲化因子对其进行解盲,该过程涉及模乘逆。

当用户希望通过提供协调者的签名和明文形式的“数据”来兑换票时,可以在协调者处设置另一个 API 端点以用于该目的,以避免暴露“数据”和明文票,因为如果暴露,其他人可能会抢先用户并兑换票。

无法显示图片可能的原因

  • 图片文件可能已损坏
  • 托管图片的服务器不可用
  • 图片路径不正确
  • 不支持图片格式

了解更多 →

未来展望

总而言之,仍然需要付出大量的努力来解决上述挑战。

票务可以被视为一个侧信道,尽管侧信道在 MEV 的上下文中声誉很差(因为它们是一种中心化力量),但它们可以通过使不可链接的交易更方便来用于提高隐私。

如果你计划成为协调者,请与我联系。我很乐意在整合方面提供帮助。特别是,考虑到隐身地址,票务方法具有显着改善用户体验的潜力,这是我个人很乐意看到的。此外,如果你有任何疑虑或反馈,请随时在 Twitter 上联系 - 我很乐意回答即将到来的问题或参与讨论。

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

0 条评论

请先 登录 后评论
Nerolation
Nerolation
江湖只有他的大名,没有他的介绍。