订单发现与匹配
在订单发现和匹配方面,像Uniswap和Curve等常见的 DEX 采用自动做市商方法,其中订单与流动性池匹配。这种方法对于隐私来说不是最佳选择,因为当订单与公开流动性池匹配时,订单详细信息在区块链上是公开可见的。这对于进行大额交易的交易者来说并不理想,因为它可能会将他们的意图透露给市场中的其他参与者,这些参与者可能会利用这些信息。一些暗池最终会匹配流动性池或使用其他外部公共合约进行订单匹配,它们使用中继作为交易者隐私必须被保护的隔离墙,将交易者和外部流动性源分开。接下来,我们将探讨暗池如何在保护隐私的同时获取流动性。
现在,请记住,交易者已经将资金存入暗池中的钱包。现在我们将讨论当提交订单时会发生什么。一些暗池采取点对点的订单匹配方法,而一些采取点对池的方法,使用诸如零知识或多方计算等 PETs,同时它们的内部合约与外部公共合约进行交互。采用点对点方法或交叉交易者之间的订单可以帮助更好地执行而无需滑点。因为如果订单与流动性池匹配,那么在提交订单和执行订单之间,流动性池的价格可能会发生变化。当订单在交易者之间交叉时,订单将以他们之间协商的价格执行。
对于采用点对点方法的 Renegade,当交易者提交订单时,他们还会选择一个可以代表他们进行竞拍(匹配订单)的中继,并支付一定费用。交易者生成一个名为“VALID COMMITMENT”的 ZK 证明,证明他们拥有自己的钱包和其订单。然后向网络发送一个“握手(handshake)”以与其他交易者的握手进行匹配。握手本质上是一个不可变列表,包含 VALID COMMITMENT ZK 证明、散列订单详细信息、nullifier 和密钥对。当交易者的握手与另一位交易者的握手匹配时,它们进行多方计算。Renegade 使用协同 ZK-SNARKs 来证明交易者的订单确实与对手的订单匹配。这确保了在进行订单匹配时,订单详细信息对其他方保持隐藏。一旦订单与所有所需的证明匹配,就会创建一个新的钱包,用于存放交换的代币,之后通过验证确保该钱包确实是新的,以防止双重花费。用户体验与使用任何以太坊钱包相同。

对于 Portal Gate,当交易者提交订单时,一个 API 节点会接收订单,对其进行加密,生成 ZK 证明,然后将订单中继到 Book。Book 是一组链下节点,它们收集订单并在 FHE(全同态加密)环境中运行订单匹配算法。这意味着加密的订单无需解密即可进行匹配。一旦订单匹配成功,将显示所有订单匹配的总结果,而不会透露单个订单匹配的详细信息。这也有助于保护隐私。

对于 Railgun,当交易者通过 Railgun 下达交换订单时,一个名为”Adapt Module”的智能合约执行多个操作,即获取交易者在其钱包中指定的要交换的私有余额并解除其隐私屏蔽。Adapt Module 还将验证订单(UTXO)是否已经作废/花费。然后,0x API 会在聚合的 DEX 流动性之间进行资产交换,寻找最佳汇率。Adapt Module 将已交换的资产重新隐私屏蔽到私有余额中,以确保其活动或地址不被泄露。这个工作流程也可以应用于其他 DeFi 交易类型。

Panther 协议运行方式也类似,其中它使用一个名为 Zswap 的模块,将 Panther 的 MASP(多资产隐私池)与其他 DeFi 协议连接起来。与其说是一个“池”,MASP 更像是一组“只能添加属性(append-only)”的 Merkle 树,其中每个叶子是对存入 MASP 的资产的 UTXO 的承诺。当交易者创建订单时,Zswap 从其他 DeFi 协议中聚合报价供交易者选择。一旦下达订单,Zswap 创建一个加密的基于时间的托管合约,可以在不透露任何细节的情况下私下促进用户之间的交换。一旦资产被交换,用户将从 Panther 的 MASP 以 ZAsset(ZNFT)的形式收到代币的 IOU(欠条)。

Penumbra 的交换模块也被称为 Zswap,但其工作原理截然不同。当交易者创建订单时,交易者私人余额中的资产会被烧毁,加密的订单价值会发送给验证者。处理订单还需要支付一定的费用。用户将获得一个“swap”NFT,以保存事件记录。NFT 由各种参数组合而成,包括交易资产、费用、输入金额和加密密钥。验证者将多个交易者的订单输入汇总到一个批次中,然后针对集中的流动性头寸执行这些输入。一旦执行,输出将按每个交易者的输入比例交付给交易者。在这种情况下,个体数据仍然是保密的,但当验证者汇总订单针对集中的流动性头寸执行时,聚合数据就会暴露出来。
