以太坊中的隐私——隐秘地址(Stealth Address)
- 时间:
- 浏览:0
- 来源:加密货币资讯
来源:登链社区
介绍
Web3 加密用户面临的一个主要痛点是缺乏隐私。所有交易在公共账本上都是可见的,并且越来越多地与一个清晰可见的 ENS 名称相关联,这使得用户在进行某些活动时缺乏动力,或者导致他们以增加用户体验摩擦的方式进行这些活动。一个例子是简单地将资金从热钱包转移到冷钱包或反之亦然。用户可能不希望一个钱包与另一个钱包相连,因为他们可能不希望自己的冷钱包余额被看到。目前,以太坊地址并不像私人银行账户那样运作,因为每个人都可以看到你的钱包,越来越多地,你的社交活动(SBT、证明、在各种 dapp 上的活动等)也会被看到。正因如此,Vitalik 将隐私称为以太坊需要经历的 三大技术转型之一,以便对普通用户有用。
使用现有的隐私解决方案,如 Tornado Cash,出于几个原因,体验并不理想。首先:用户会合理地担心自己的地址在中心化交易所或其他平台上被列入黑名单。其次,与 Tornado Cash 等服务的交互用户体验并不友好,实际上只适合高度熟练的用户。
隐秘地址为用户提供了一种隐私,类似于他们在私人银行账户中所理所当然的隐私,并且以易于理解的方式实现。此外,围绕隐秘地址的创新意味着我们可以以符合多个司法管辖区的反洗钱法规的方式来实现这一点。
用户对隐私的需求
虽然关于网络和 Web3 用户对隐私态度的研究并不广泛,但通过网络搜索发现了以下研究,结果大致一致,表明对交易隐私有明确的需求。
2022 年进行的一项调查,由 Simin Ghesmati 等人发表在题为 User-perceived privacy in blockchain 的论文中,指出“一半的受访者表示交易隐私对他们非常重要”。虽然这项研究与比特币的关系更大,但以太坊用户可能也有类似的态度。然而,这项研究的样本量相对较小(14 名参与者)。
另一项有趣的研究来自 2022 年,发表在 Frontiers 上,题为 Political, economic, and governance attitudes of blockchain users,这项研究更为全面,共调查了 3,710 名加密用户。结果显示,大约四分之一的受访者表示隐私是“区块链和加密货币中最重要的特性”。
在对隐私的总体态度方面,Consensys 发布了一项名为 Web3 and crypto global survey 2023 的研究,其中对来自 15 个国家的 15,158 人进行了在线调查,涉及与网络相关的各种主题,而不仅仅是加密。调查发现,83% 的受访者认为数据隐私很重要,而只有 45% 的受访者表示他们信任当前互联网服务对其数据和个人信息的使用。
英国金融服务补偿计划进行的一项 调查,于 2023 年 4 月发布,强调 9% 的受访者将“对匿名性/隐私的渴望”作为他们投资加密货币的原因。
隐秘交易协议的采用
Railgun 的使用数据令人印象深刻,该协议的使用似乎随着时间的推移稳步增长,截至 2024 年 11 月,达到超过 7000 万美元的总锁仓价值(TVL)和 20 亿美元的交易量。
TVL(美元)Railgun 在以太坊主网 — 来源:Railgun — DefiLlama
Umbra 的使用人数也稳步增加(注册隐秘地址到他们的 ENS 的人数),截至 2024 年 11 月接近 77,000 人:
Umbra 累计注册人数(跨链) — 来源:dune.com
如果我们看看以太坊中最广为人知(而且现在不幸的是臭名昭著)的隐私协议 Tornado Cash,我们可以看到尽管合约地址在技术上被列入 OFAC 的 SDN 名单,但它仍然在被大量使用。
下图显示了 Tornado Cash 随时间变化的 TVL。我们可以观察到,从 2021 年 10 月左右的峰值开始,TVL 的第一次重大下降与加密市场的整体抛售相吻合,第二次重大下降发生在 2022 年 8 月,正好对应 OFAC 将 Tornado Cash 列入 SDN 名单,第三次重大下降对应于 2022 年 11 月 OFAC 的重新指定。然而,自那时以来,尽管受到制裁,Tornado Cash 的使用仍在稳步增长,TVL 接近 6 亿美元。这强烈证明了以太坊中对基本交易隐私的需求。
TVL(美元)Tornado Cash 在以太坊主网 — 来源:Tornado Cash — DefiLlama
隐秘地址的现状
本研究确定了目前在 EVM 链上生产的 4 个主要解决方案,它们是:
Fluidkey
Umbra
Labyrinth
Railgun
Fluidkey 和 Umbra 基于以太坊标准,这些标准是:
ERC-5564: 隐秘地址协议
ERC-6538: 隐秘元地址注册
Labyrinth 和 Railgun 基于 zerocash 协议(zcash 也基于此),该协议使用一个用户存入资金的保护池。Zerocash 使用“票据”的概念,这基本上是价值的加密表示,能够实现私密交易。每个票据包括一个隐藏的价值、所有者密钥和一个唯一编号(一个无效化器),使用 zk-SNARKs 验证所有权而不透露细节,从而转移票据中的价值。当票据被花费时,其无效化器会被揭示以防止双重花费,同时为接收者创建新的票据,形成一个保护池内的 UTXO 系统。
在高层次上,隐秘地址的基本原理是第三方可以向一个从未存在过的地址发送资金,而预期的接收者可以找到并控制该地址(即可以随后支出这些资金)。
erc-5564 标准指定了一种机制,接收者可以发布一个隐秘元地址,从中可以派生出新的以太坊地址。任何希望向接收者发送资金的人,都可以从隐秘元地址生成新地址,并允许接收者在没有任何直接通信的情况下得知这些资金。所有隐秘地址的实现都基于这一基本前提。
隐秘地址的工作原理
隐秘元地址本质上是两个压缩公钥的连接,分别称为“支出密钥”和“查看密钥”。隐秘元地址使用 EIP-3770 链特定地址格式,并添加“st:”前缀。以下是一个隐秘地址的示例:
st:eth:0x036ffa94a70a5b9608aca693e12da815fe0295f3739c7b22b0284c6d85c464ba4a02c0521b6fe31714b2ca0efa159402574355b754e0b50406b0b5fb33128eec3507
为了简化,这个隐秘地址可以与一个普通的以太坊地址(因此也包括 ENS)关联,使得向隐秘地址所有者发送资金变得更容易。为了发送资金,发送者会解析上述地址,并使用 EIP-5564 标准创建一个临时公钥,从中派生出隐秘地址。发送者将资金发送到新的隐秘地址,通常通过一个所有隐秘地址接收者监听事件的单例合约。该合约会发出一个“公告”事件,接收者可以订阅该事件。每当公告事件被发出时,接收者会检查公告中的临时公钥,将其与他们的查看私钥结合,确定他们是否有能力支出发送到隐秘地址的资金。如果有,他们所使用的钱包/客户端将记住隐秘地址及相应的资金,并将其添加到用户的显示余额中。要实际支出这些资金,他们可以使用私有支出密钥签署交易。
以下图表更清晰地概述了整个过程:
请记住,这个过程完全是非交互式的,这意味着发送者和接收者之间没有任何直接通信,这意味着实际上没有任何第三方可以观察到的发送者和接收者之间的链接。
然而,为了使这一切能够正常工作,接收者必须将他们的隐秘地址告知发送者。实现这一点的一种方法是使用 eip-6538 隐秘元地址注册表。这是一个单例合约,允许用户将隐秘元地址注册到一个普通的以太坊地址,发送者可以查找该地址。这允许发送者从 ENS 解析普通地址,然后从注册表中查找相关的隐秘元地址。
该方案打破了发送者和接收者之间的链接,使他们都能避免整个世界知道他们的事务。然而,有一些注意事项:
当接收者去支出资金时,他们转移资金的对象将看到这些资金来自原始发送者(即,他们可以看到资金转移的地址以及谁之前向该地址发送了资金)。这意味着转移链保持完整且可追踪,但它们只与相关接收者无关(除非接收者做一些事情,比如将资金发送到他们已知的非隐秘地址)。请注意,这仅适用于 erc-5564 实现,而不适用于 Railgun 或 Labyrinth。
上述问题的另一个副作用是,为了保持最佳隐私,用户可能需要将资金保留在他们最初发送到的隐秘地址中,直到他们真正需要它们,而不是将它们合并到一个地址下。这代表了记住地址的额外开销,并随后在这些地址上支出资金,因为你希望转移的金额需要从多个其他地址的资金组合中获取。
为了从该地址转移资金,接收者需要为该地址提供一些 ETH 以支付 gas,这可能会使接收者失去匿名性。这是隐秘地址的一个已知问题,也是许多实现支持 eip-4337 和支付者的原因之一。
隐秘地址方案的一个缺点是,接收者需要监控区块链以获取 公告 事件,并检查每个公告以确定他们是否收到了资金。这显然对大多数用户来说是一个不切实际的开销,尤其是在接收多个网络的资金时。为了使这个过程更高效,标准指定了一个“查看标签”,这是从共享秘密派生的截断哈希,可以用来快速丢弃那些显然不打算发送给他们的交易。通过使用查看标签,桌面上的性能并不是那么糟糕,但在移动设备上可能会更明显。性能下降真正明显的唯一时刻是如果钱包正在恢复,在这种情况下,钱包需要扫描自链上合约部署以来的每个地址,这非常耗时。
为了解决这个问题,用户可以选择与可信的第三方共享私有查看密钥。这个第三方服务可以监控各种网络,并在他们收到资金时通知用户。当然,这带来了一个权衡:尽管第三方实际上无法支出用户的资金(他们没有私有支出密钥),但他们可以看到发送给特定接收者的所有资金,这意味着用户需要信任他们的隐私。Fluidkey 默认执行此操作。
标准隐秘地址协议,即 ERC-5564,旨在促进隐私保护的转移,然而,非金融用例(如调用任意智能合约函数)需要更多的工程,通常是特定于实现的。
比较矩阵
我们可以通过多种方式比较本文探讨的四种隐秘地址实现。所有实现都有细微的差异和权衡,但可能最重要的要点是关于可追踪性和价值的模糊化。
虽然 Fluidkey 和 Umbra 都允许资金转移到标准以太坊地址,同时打破与接收者身份的任何链接,但它们仍然保留了交易的可追踪性,这意味着发送者对任何检查隐秘地址交易历史的人都是可见的。这意味着如果你在隐秘地址收到资金,你决定将这些资金发送给的人将看到它们的来源。此外,实际转移的价值也是可见的。Railgun 和 Labyrinth 隐藏了发送者以及发送的价值,但以此为代价的是这一切都发生在一个单一的合约内,而不是作为对普通以太坊地址的正常交易。
下面的图展示了我们在本文中讨论的协议在这两个重要的比较维度上的相互比较。
为了更详细地探讨这些差异,以下是四个主要隐匿地址协议在六个主要维度上的比较矩阵:
完整的端到端隐私(只有发送者和接收者看到支付信息)
前向保密。通过隐匿交易接收的资金不允许第二个接收者看到资金的来源
遵循 erc-5564 和 erc-6538 标准
实现了可扩展的模块化架构,允许与第三方 dapp 的集成
实现是否提供开发人员可以用来集成的 SDK?
解决方案是否通过某种去匿名化支持提供合规性?
设计是否支持对转移的金额/价值进行混淆?
以下部分更详细地捕捉了一些其他细微差别和区别。每种实现都有有趣的细微差别,这可能对你的用例产生影响或不产生影响。
例如:在 Fluidkey 中:所有交易直接转到链上的隐匿地址,而 Umbra**:** 只有 ETH 转到链上的隐匿地址,而代币转到中央合约,与 Railgun 和 Labyrinth 一样,所有交易都转到核心合约,而不是直接转到链上的隐匿地址。
深入探讨隐匿地址的实现
Fluidkey
Fluidkey 是一种 erc-5564 的实现,允许用户发送、接收、交换和桥接 ETH 和 erc-20 代币。在撰写本文时,Fluidkey 已在 Base、Optimism、Arbitrum、Polygon、Gnosis 和以太坊主网上部署。
用户通过其网页用户界面与 Fluidkey 互动。当他们首次使用钱包登录时,他们会签署一条密钥生成信息,从中推导出他们的查看和支出密钥。每次用户进入应用时,这些相同的密钥以相同方式重新生成。
Fluidkey 有几种不同于其他实现的方式。其中一种不同之处在于,用户与 Fluidkey 共享他们的私有查看密钥(实际上是一个 BIP-32 派生节点)。这使 Fluidkey 能够为用户生成隐匿地址,并在他们收到这些地址的付款时通知用户。然而,这也意味着 Fluidkey 有能力查看用户的进账交易和余额,这是一个权衡。然而,Fluidkey 仍然保持完全自我保管。
Fluidkey 设计中的另一个有趣方面是,它为每个新的隐匿地址部署一个智能合约账户。只有在资助自隐匿地址的资金被使用时,才会发生这种情况。智能账户是一个 1/1 的安全账户,允许进行例如 gas 赞助等操作,使得更容易管理各种隐匿地址。有关此方面的详细信息,可以查看他们的 技术讲解。
虽然 Fluidkey 确实保留了对用户账户的可见性,这在合规性方面可能潜在地成为一种优势,尽管 Fluidkey 将如何处理未来潜在的执法请求的确切框架尚未公开。他们位于瑞士,尽管须遵守当地法律,但数据保护法律非常清晰且强大——必须有非常明确的理由才能分享数据,并且此事还需经过法院审查(参见这篇文章 了解瑞士隐私法的优秀概述)。
用户也完全可以导出他们的交易,或者与第三方(如会计师)共享他们的查看密钥,这对企业尤其有用。值得注意的是,根据 erc-5564 规范,公共密钥的共享是“全或无”,这意味着它无法单独透露孤立的单笔交易。此外,与所有 erc-5564 实现一样,可追溯性并未被打破——只是与用户的关联性被打破——这意味着每个隐匿地址的交易历史对于拥有查看密钥的人是公开的。Fluidkey 一个不太为人知的功能是能够旋转查看密钥,这将允许用户每月使用一个新的查看密钥,并且只与第三方共享特定月份的查看访问权限。
Fluidkey 方法的一个好处是,隐匿地址本身不是由发送者生成的,而是由 Fluidkey 在每次查询 ENS 时伪随机生成的。这更快,因为用户不必通过公告事件扫描以识别自己是收件人的交易。这也意味着发送者不需要隐匿地址钱包来为接收者生成隐匿地址——他们只需像其他地址一样发送资金即可。这也意味着没有涉及注册合约,这是 Fluidkey 设计的独特之处,也是一个主要优势。
值得一提的是,Fluidkey 致力于完全自我保管,并且他们已开源了其隐匿账户工具包库,并且在不太可能的情况下 Fluidkey 一夜之间消失的情况下,还有几个独立开发的恢复接口可用,这意味着资金永远不会被锁定或卡住。
地址抽象
通过使用智能合约账户,Fluidkey 可以自动抽象管理各个隐匿地址。这意味着,如果你想从你在各个隐匿地址中的余额中向特定接收者转移特定金额,Fluidkey 可以自动计算出用于转移资金的地址组合,处理所有的 gas 费用和合约部署,所有这些都在后台进行。Fluidkey 还允许用户通过一个称为标签的酷功能,对要组合的地址进行一些控制,允许用户将地址标记为不同的类别。
ENS 解析
Fluidkey 要求用户创建专属于 Fluidkey 的 ENS 名称。这些静态名称有两种形式:username.fkey.id 和 username.fkey.eth,一个是指向发送资金给某人的网页界面的 URL,另一个是可以与钱包一起使用的标准 ENS 名称。
ENS 设置使用 ENS offchain resolver(也称为 erc-3668: CCIP Read)来返回隐匿地址。每次查询离线解析器时,它会为相应的 ENS 名称生成并返回一个新的隐匿地址。这是一个很好的功能,因为它允许用户拥有一个单一的人类可读的 ENS 名称,同时仍然保留隐匿地址的隐私,因为生成的隐匿地址无法追溯到 ENS 名称。
费用
Fluidkey 是免费使用的,不收取费用。当你想要支出资金时,每个有资金的地址都需要部署一个 Safe 合约的费用。然而,尽管在主网相对昂贵,但在 L2 上这实际上是微不足道的,通常低于 1 美分,即使将多个隐匿地址合并为一次转账。
他们还可以通过 Safe 部署进行 gas 赞助——他们计算 gas 的费用,并从用户的余额中扣除,即使它是一个代币——在这种情况下,转发者部署 Safe 并代表用户转移代币。
Umbra Cash
Umbra 是 Scopelift 实现的 eip-5564 + eip6538。当用户登录 Umbra 应用时,他们会经历一个设置阶段,在此阶段他们签署一条消息,从中派生出支出和查看密钥及相应的隐匿元地址。然后,他们将此隐匿元地址注册到他们的主钱包地址的链上注册表中。这是实现与 Fluidkey 的不同之处。
Umbra 对 erc-5564 的实现最接近规范,因为他们无法访问用户的密钥。虽然这意味着 Umbra(或其他任何人)无法看到用户的资金,但这确实意味着为了接收资金,发送者必须拥有一个与 erc-5564 兼容的钱包(或 Umbra 应用)以生成他们的隐匿元地址。
当有人想要 发送 资金给用户时,他们通常会使用 Umbra 应用来完成。基本上,Umbra 应用会查找注册到 ENS 名称/钱包地址的隐匿元地址并生成一个隐匿地址。收件人可以登录 Umbra 应用并扫描自上次登录以来发送到属于他们的隐匿地址的任何资金。得益于一些巧妙的缓存,这似乎只需 10-15 秒进行每周扫描,尽管用户也可以选择指定一个区块范围以缩小扫描范围。Umbra v2 将包括使用视图标签,这将进一步加快该过程。
转发者
我们之前提到的隐匿地址的一个问题是,为了让收件人支出发送到隐匿地址的资金,该地址需要有 ETH 或其他必要的 gas 代币来支付交易费用。在大多数网络上,如果隐匿地址最初收到了 ETH,这通常不是问题。然而,如果隐匿地址收到了 erc-20 代币或 NFT,那么用 ETH 为地址提供 gas 的行为可能会将该地址与用户的其他地址关联,从而失去隐私。
为了绕过这个问题,Umbra 使用了一个涉及 转发者 的构造。当任何非 ETH 的资产发送给 Umbra 用户时,它实际上是发送到一个特殊合约,而不是直接发送到隐匿地址。用户可以通过向 Umbra 的转发者发送元交易(来自 Umbra 应用)来支出发送到他们隐匿地址的资金,转发者将代表用户从智能合约中转移资金。转发者将扣除一些代币以覆盖 gas 费用的成本,并且最初仅支持一定数量的代币。
费用
Umbra 合约在低交易费用的网络上转移资金时也会收取少量费用,以抑制垃圾邮件。其理由是,垃圾邮件会增加扫描交易以识别相关交易的成本,因此这被视为一个可接受的权衡。
支持的网络
Umbra 目前已部署在以太坊主网,以及 Optimism、Polygon、Gnosis Chain 和 Arbitrum。
Umbra 注册合约具有有趣的设计。部署方法使用 create2 和标准 create2 部署器,智能合约地址在任何网络上都是相同的。这意味着如果合约在给定网络上存在,则客户端可以确保这是正确的合约。客户端可以配置以添加网络,任何人都可以部署到任何网络。他们已经规范化了字节码,合约没有所有者,这允许任何人在任何链上无权限地部署注册和公告合约。
Umbra v2
Scopelift 目前正在开发 Umbra 的第 2 版,该版本引入了一种新的模块化架构,允许核心合约扩展以支持新的代币标准或非支付用例。使用这种新架构,第三方开发者可以为任何类型的代币标准构建模块,例如 erc-1155、erc-7621、支持 erc-4337 付款方,或你能想到的任何其他内容。目前,Umbra 核心合约支持两种场景,一种用于 ETH,另一种用于 erc-20。V2 将支持许多不同的场景。
Labyrinth
Labyrinth 是一个不基于 eip-5564 + eip6538 的协议,而是使用零知识证明为交易增加匿名性和隐私。Labyrinth 的白皮书将其描述为“zkFi”中间件:“zkFi 提供了一种打包解决方案,充当具有内置合规性的隐私中间件”。内置合规性指的是 Labyrinth 的“选择性去匿名化”,这是一种复杂的解决方案,允许某些交易对特定授权方(即法律机构如国际刑警等)去匿名,同时保持透明和开放。
Labyrinth 使用的核心智能合约包括一个多交易和多资产池,允许用户在单个交易中交易多种资产。为了支出资产,用户扫描网络并获取加密的票据数据,解密票据,并过滤出他们想要支出的资产。随后,用户创建一个 ZKP,其中包括交易和与他们想要支出的交易相关的票据的签名密钥。
Labyrinth 核心合约的一部分包括一个转换合约,它与模块化代理合约接口,这些合约基本上是外部合约的代理。因此,例如:如果用户想使用 Labyrinth 与 Uniswap 交互,用户将构建一个交易,该交易将使用转换合约通过 Uniswap 的代理合约调用 Uniswap 池上的交换操作。
Labyrinth 的 zkFi 协议使用“票据”来跟踪余额和转移。票据本质上是描述某种资产的某个数量及其所属地址的数据结构。客户端存储重建票据所需的信息,并使用此信息支出资产。对票据的承诺(资产 ID、所有者和价值的哈希)存储在链上的默克尔树中。实际上,Labyrinth 使用两个默克尔树,一个用于票据,一个用于根地址。
笔记数据结构包含以下内容:
assetId
:此笔记代表的资产的标识符(ETH、WBTC、MATIC 等)。value
:笔记所代表的价值或金额。leafIndex
:此笔记将被插入的承诺默克尔树的叶节点索引。blinding
:一个随机的保护因子。rootAddress
:拥有支出权限的用户的根地址。revoker
:所选撤销者的公钥点。
你会注意到,上述数据结构并未包含资产的所有者的任何引用,这很奇怪,因为在笔记默克尔树中记录的承诺是资产 ID、价值和所有者的哈希。实际上,所有者是从根地址、撤销者和随机保护因子计算得出的,因此对于外部观察者而言,所有者实际上是每个新交易生成的一个新地址。
保护池
关于 Labyrinth,特别有趣的是,它与传统的基于隐秘地址的协议略有不同,资产池实际上是一个保护池,它利用笔记的概念创建了一种屏蔽的 UTXO 池,从而为交易提供了前向保密性。回想一下,在 eip-5564 实现中,用户转账的对象将能够查看这些资金的来源。换句话说,Alice用隐秘地址支付给Bob,Bob再支付给查理,因此查理现在可以看到Bob最初从Alice那里收到这些资金,等等。Labyrinth 的保护池并非如此。
要理解这个保护池是如何工作的,我们需要看看在协议内部资金是如何转移的:
用户在保护池中的余额是相应资产的笔记之和。为了花费这些笔记,用户需要揭示那些笔记的“无效标识”。无效标识是唯一与笔记相关的,一旦该笔记被花费,该无效标识就被标记以防止双重消费,并根据该已花费的笔记创建一个新笔记。相同资产的多个笔记可以合并,还可以创建多个新笔记。无效标识就是 (?,?,?) 的哈希,其中 ? 是在笔记默克尔树中笔记承诺的索引,? 是承诺,? 是一个随机元素,也称为保护因子。
隐秘交易转账的接收者通过与 eip-5564 相同的方式识别转账,因为他们监听从核心合约发出的事件,并确定他们将能够从中发送资金的隐秘地址,并在本地记录这些地址。通过利用视图标签和在应用程序生命周期内异步本地缓存和同步笔记,识别来款资金的速度也得到了提升。
目前正在进行研究,以加快发现接收资金的过程,看看 Aztec 的这个提案:Request for Proposals: Note Discovery Protocol — Aztec。
在花费资金方面,用户还必须生成一个 zk 证明,这与基本上是普通以太坊地址的 erc-6654 实现不同。生成证明需要一个兼容的钱包,性能相对较好,在中档 Android 设备上大约需要 20 秒左右。
打包商和转换器
Labyrinth 提供了一些不错的功能,可以解决隐秘交易中的一些痛点。发送到 Labyrinth 核心合约的交易作为用户操作通过 erc-4337 打包商发送。此设置允许在不需要 ETH 或交易的 gas 代币的情况下花费笔记,因为用户可以利用 erc-4337 支付者为他们支付 gas,从而增加了一个额外的隐私层。唯一的例外是初始存款,它不会作为用户操作提交。使用 erc-4337 支付者的另一个好处是能够通过被转移的资产支付 gas,即使它们是 erc-20 代币,因此 Labyrinth 公开了一个 gas 价格预言机 API。
Labyrinth 的另一个非常好的功能是其模块化架构,允许转换器合约作为第三方去中心化应用的代理。这不仅允许用户使用隐秘交易转移资金,还可以与第三方去中心化应用(例如 DEX,如 Uniswap、Aave、Lido 等)进行交互。这些代理“转换器”合约本质上实现了一个函数,接收入量某种资产,并输出一些资产,基础逻辑存在于某个第三方合约中。
合规解决方案
Labyrinth 通过一个名为选择性去匿名化(SeDe)的框架确保合规和监管的遵循。
回想一下,笔记的数据结构包含一个名为“撤销者”的字段。撤销者是可以启动去匿名化过程的特定实体的地址。用户必须从预定义列表中选择至少一个撤销者。撤销者并不单独负责识别潜在的非法或不当活动,但可以响应执法机构的请求。
撤销者没有单独的能力直接去匿名化交易,但他们负责发起去匿名化请求。这些请求公开发布给监护人,监护人是一个监督隐私和合规性的实体委员会。监护人必须通过投票决定是否允许去匿名化交易。如果监护人可以达到法定人数并投票支持,则撤销者可以解密交易数据,从而将相关交易与先前的交易联系起来,直到交易链被完全去匿名化为止。
这个系统创建了一系列制衡机制,因为监护人不能单独决定揭示交易数据,即使他们勾结,也无法在没有撤销者的情况下做任何事情,而仅凭撤销者也无法在监护人多数投票的情况下做任何事情。
Railgun
RAILGUN 是一个在以太坊、币安智能链、Polygon 和 Arbitrum 上部署的隐秘交易隐私系统。该协议在某些方面类似于 Labyrinth,因为它是基于笔记,这些笔记作为承诺存储在默克尔树中,形成一个 UTXO 集,即通过创建新的笔记供其他接收者支出。这意味着只有笔记的所有者可以计算其无效标识,而无效标识往往是根据支出密钥和笔记在默克尔树中的索引的哈希来生成的。
Railgun 中的隐秘元地址使用“0zk”的前缀,类似于 eip-5564,这是公共查看密钥和公共支出密钥的组合。然而,Railgun 在 BabyJubJub 曲线上使用 Ed25519 密钥,而不是 ECDSA 和 secp256k1。就像 eip-5564 一样,用户在 Railgun 合约中扫描所有发出的事件,并使用他们的查看密钥确定哪些事件代表转账到他们的钱包。
Railgun 使用一个广播者网络,这些广播者实际上是接收用户的元交易并将实际交易广播到相应区块链的中继者,以代表用户支付 gas 费用。用户到广播者的交易是加密的,并使用 Waku 协议进行通信,保护最终用户的匿名性。
Railgun 采用模块化架构,允许它与外部智能合约进行交互,从而提供超越简单转账的功能。它通过 AdaptRelay 合约实现这一点,该合约在与外部合约进行交互之前和之后对代币进行保护和解除保护,例如,解除保护代币 A,在某个 AMM 上交换代币 B,将代币 B 保护回来给原所有者。
在版本 3 中,Railgun 计划利用 eip-4337,并支持传统的元交易。他们希望通过为 Railgun 维护一个专用的 eip-4337 userop 内存池,使独立解决者能够作为广播者参与其中。他们目前正与 Umbra 合作研究此问题,并识别边缘案例及如何解决它们,更多细节请参见下面的 Railgun v3 部分。
费用
Railgun 协议对存款和提款收取 0.25% 的费用。这些费用将发送到 DAO 库房,这些费用会随着时间推移支付给 RAIL 治理代币的质押者。除了 0.25% 的存款和提款费用外,广播者通常还会收取自己的费用,而这些费用通常约为实际链上交易的 gas 费用的 10%。
治理
Railgun 具有治理系统,允许提交任何形式的提案,任何核心合约(包括财政和治理合约)的更改都必须经过 DAO 提案才能进行。不寻常的是,Railgun 的不同实例有各自的治理。例如,Railgun 在以太坊、Polygon 和币安链上有各自独立的治理系统和代币。
SDK 和 Cookbook
Railgun 提供了一套全面且文档完备的 SDK,钱包或 DApp 开发者可以使用它通过对 Railgun 的支持来构建隐匿地址功能。Railgun 还有一个由社区维护的 cookbook,提供“配方”,允许 DApp 开发者为 Railgun 提供模块,使用户能够使用 Railgun 与他们的 DApp 进行交互。例如,开发者可以为 DEX 编写一个配方,使得在 Railgun 中拥有代币余额的用户可以私密地交换代币。
RailGun v3
Railgun 的下一次迭代将使交易成本下降 50% 至 60%。版本 3 中的其他更改是支持 eip-4337 userops,通过专用内存池来实现。此外,v3 将支持基于意图的架构,允许解决者竞争最佳执行,尽管截至撰写时,细节仍非常高层次。他们目前正在与 CowSwap 合作,计划使用前置和后置钩子来允许解决者访问资金。
Railgun Connect
可以说,提议中最有趣的变化是名为 Railgun Connect 的工具,它类似于 WalletConnect,允许 0zk 地址连接到大多数前端进行私有使用,无需这些 DApp 通过自定义模块显式提供与 Railgun 的集成。
Railgun Connect 是一个浏览器扩展,它的实际操作是使用 HardHat 本地复制链的状态,并将其自己的 web3 提供者注入到 DApp 中,具有本地 HardHat 版本链的 RPC 端点。这使得你可以像往常一样与 DApp 合约进行交互,记录交易,然后将其批处理并创建 snark 证明,并将其发送到实际链上的 Railgun 合约。虽然这个描述稍显简单,但它传达了总体思路。这使你能够基本上与几乎任何 DApp 进行交互(对于需要额外链下处理的 DApp 可能有一些边缘情况)。需要注意的是,本地保存链的状态是一项耗费资源的操作,但一旦完成,你就可以使用 Railgun 的隐匿地址与 DApp 进行交互,而没有和使用普通钱包的任何不同。
结论
关于在以太坊协议中确立隐匿地址,目前有一些有趣的提案。例如,Inco 使用了一个 erc-20 “包装器”的概念,该包装器对普通的 erc-20 合约进行封装,并加密所有余额。转帐和批准均在加密状态下通过全同态加密进行。Inco 依赖于目前仅存在于其自身网络上的预编译,但将来可能会转移至以太坊。
还有另一个提案叫做 EIP-7503: Zero-Knowledge Wormholes,其基于一种称为“燃烧证明”的设计,尽管这一提案似乎并未获得广泛关注,可能因为它需要对 EVM 进行更新,而没有此更新,它实际上只能在代币层面实现,使用专门支持 eip-7503 的 erc-20 设计(或者如果某个 L2 决定为其 EVM 操作码添加支持)。
Aztec 可能是目前最复杂的隐私技术,但需要用户将资金桥接到 Aztec 才能使用,这对大多数用户来说可能并不可接受。然而,如果以太坊用户对基本交易隐私的需求增长,那么 Aztec 可能会具备独特的价值主张,成为一个非常有价值的 L2,因为 DApp 和用户迁移到一个默认提供隐私的平台。
同样,Intmax 是一个以隐私为中心的以太坊 L2(基于 Plasma 设计),它还有一个合规监管的方面,通过 ZKP 基于 AML 证明验证个人资金的合法性,并对交易金额施加限制。Intmax 在为转账提供隐私方面有限制,而 EVM 智能合约操作则不具备隐私。然而,与 Aztec 不同,智能合约可以在 Solidity 中编写,一些开发者可能偏好这种方式(取决于用例)。
钱包支持
虽然我们看到隐匿地址协议的采用增加,这是一个积极的信号,但仍然有许多挑战。最重要的挑战是它们尚未在主流以太坊钱包中得到全面支持(至少目前尚未)。主流钱包在提供对隐匿地址的支持时可能需要做出几个选择。这些选择包括:
他们会为单一实现提供意见性的支持,还是会建立并维护某种跨多个协议的综合聚合器?后者在开发和维护方面可能代价高昂。
是否会有监管考量,是否需要在选择性去匿名的范围和机制上采取立场(例如 Labyrinth 的情况)?
隐匿地址需要一个链上组件,通过注册合约(Fluidkey 除外),这意味着每个 EVM 网络必须明确得到钱包的支持(尽管 Umbra 的设计便利了注册表的无许可部署)。
隐匿地址使得与区块探测器(例如 Etherscan)的现有集成变得更加复杂。例如,“在探测器上查看”按钮将不适用于隐匿元地址,因为钱包显示的是汇总余额。这个问题在转账中也可能存在。这些边缘案例需要被认真考虑。
根据底层实现,用户仅能够有效地与特定的一组 DApp 使用隐匿地址,即那些受到底层协议支持的 DApp。模块化隐匿地址架构将使这一点成为可能。然而,并非所有 DApp 都会被支持,并且需要以某种方式通知用户。使用 eip-5506 时这一点相对容易,但仍然会有复杂性和边缘案例,这可能会渗透到钱包的用户体验中。
在防止用户隐私卫生不良方面也有改进的空间,请参阅本文:“Anonymity Analysis of the Umbra Stealth Address Scheme on Ethereum”,作者成功地对以太坊主网上的 48.5% 隐形交易进行了去匿名化。他们使用的启发式方法与协议无关,而更多是关于隐私卫生,例如用户将资金发送到他们控制的隐形地址,然后将这些资金发送回最初的发送地址,错误地认为可追踪性已经被打破。总体而言,作者确定了 6 种不同的启发式方法可以用于去匿名化隐形地址交易,主要都是基于不遵循最佳实践。然而,这些都是需要解决的关键用户体验问题。
总体而言,我对隐形地址以及以太坊中的隐私相当看好。我认为我们取得了相当令人印象深刻的进展,并发现了一些非常可修复的挑战。我相信主流钱包将找到提供隐形地址支持的方法,让用户可以轻松使用这些地址,享有用户所期待和应得的正常隐私水平。
感谢所有在研究和构建隐形地址基础设施方面投入时间和辛勤工作的团队,包括我在这篇文章中提到的四个协议。他们的努力和坚韧将对以太坊产生巨大影响!
_区块链,区块链交易平台
猜你喜欢