Uniswap:从零到无穷大
原文作者:lukewasm.eth
介绍
毫无疑问, Uniswap 是使用最广泛的去中心化应用程序之一。它坚持不懈地开拓创新解决方案,重新定义游戏规则。在这篇文章中,我将深入研究Uniswap从过去到无限未来的令人敬畏的旅程。通过回顾Uniswap的每个版本的特性,本文揭示了它如何有效地应对新的挑战并适应不断变化的需求。此外,我还探讨了加密技术的最新进展如何塑造去中心化交易所(DEX)的未来。
v0:概念验证
在Uniswap之前,EtherDelta是唯一获得关注的去中心化交易所(DEX)。然而,用户体验很非常差。
许多行业领袖(Gnosis和Vitalik的Alan Lu)提出了自动做市商(Automated Market Maker, AMM)的概念,与传统的订单模型相比,它为链上交易提供了另一种方法。
特性
恒定乘积 AMM
Uniswap利用恒定乘积公式(x * y = k)来计算资产的价格。公式中,x表示基础资产,y表示报价资产。当一个代币从池中取出(购买)时,必须存入(出售)一定比例的金额,以确保保持常数k。池中代币的比例决定了代币的价格。
来源:Uniswap
值得注意的是,其他资产管理工具使用不同的数学公式来表示流动性曲线。例如,Curve的Stableswap和Balancer的加权池。
问题
Uniswap v0本质上是一个概念验证,这意味着仍有许多未解决的问题。主要有两个问题:
它只适用于单个ETH/ERC20交易对。
它只适用于单一的流动性提供商(LP)。
v1:功能性DEX
特性
Uniswap v1于2018年11月2日在以太坊主网上线。它支持多个流动性提供商使用内部代币来跟踪费用和抵押品。它利用工厂合约,使任何人都可以添加任何代币进行原生ETH交易。该版本提供了功能性DEX。然而,有一些问题需要解决。
问题
由于所有代币都与ETH配对,用户可以通过使用ETH作为单个交易中的中介,轻松地将任何ERC20代币交换为另一个ERC20代币。当涉及到像DAI/USDT这样频繁的稳定币交换时,依靠ETH作为每次交换的中介变得低效。在这种情况下,直接的代币对更受青睐。
v2:金钱乐高
2020年5月,Uniswap v2发布,对 Uniswap 协议进行了大量升级。这些增强功能提高了其灵活性并扩大了可能的交易范围。
特性
ERC20 / ERC20交易对
在Uniswap V2中,有一个显著的区别:不再仅仅将ERC20代币与ETH进行配对,现在任何ERC20代币都可以直接与任何其他ERC20代币进行池化。该功能为流动性提供商带来了巨大的实用性,因为他们现在可以维护更多样化的ERC20代币计价头寸,包括稳定币交易对。
价格预言机
Uniswap v2提供链上价格源,可以被许多DeFi应用程序使用。这些价格信息不受操纵,因此非常有价值。该机制涉及将交易结束价格添加到核心合约中的累积价格变量中,该变量由特定价格存在的持续时间加权。该变量本质上代表了整个合约历史记录中每秒Uniswap价格的总和。
来源:Uniswap
外部合约可以利用该变量在任何给定的时间间隔内精确地跟踪时间加权平均价格(twap)。此过程包括在间隔开始和结束时从ERC20代币对读取累积价格。通过计算累积价格的差异并将其除以间隔的长度,可以生成该特定时期的TWAP。
闪电互换
Uniswap v2还引入了闪电互换,这是一种由借贷市场 AAVE 首创的闪电贷。此功能允许任何用户在没有前期成本的情况下,从池中提取尽可能多的 ERC20 代币,并执行任意操作,前提是在交易执行结束时返回等额资金(加上费用)。
闪贷功能声名狼藉,因为它经常与针对 DeFi 协议的各种攻击联系在一起。但闪贷不是问题所在。真正的问题是协议中存在的漏洞。闪贷的原子性消除了通常与池间套利和获得保证金杠杆等操作相关的前期资本要求。
问题
尽管AMM具有创新性,有利于在新市场中启动交易和提高流动性,但它仍然存在低效。例如,在处理低波动性代币时,流动性只在一个狭窄的价格范围内是必要的。然而,目前的设计是在所有价格范围内均匀分配流动性。
v3:资本效率
由于其开创性的集中流动性设计,Uniswap v3旨在成为最灵活、最高效的AMM。
特性
集中流动性(CL)
在Uniswap v2中,流动性均匀分布在x*y=k的价格曲线上,包括从0到无穷大的所有价格。然而,在大多数资金池中,流动性并未得到充分使用 。
在Uniswap v3中,流动性提供者(LP)有能力将其资本集中在特定的价格范围内,从而在期望的价格上增加流动性。这种定制使LP能够构建符合他们偏好的个性化价格曲线。然后,这些单独的头寸被聚合到一个单独的池中,创建一个统一的曲线,用户可以根据该曲线进行交易。结果对交易者和流动性提供者都是有利的:由于流动性在定制范围内的高度集中,交易者经历了更少的滑点,LP获得了更高的费用。
CL对稳定币交易对(如稳定币和流动性质押衍生代币)具有不可思议的价值。这些资产往往在一个狭窄的价格范围内交易。然而,对于更不稳定的代币对,CL需要更先进的流动性管理技术。对于一般的散户流动性提供者来说,持续有效地管理其头寸可能是一项挑战。
范围订单
在CL中,引入了一种新的订单类型,称为区间订单,以补充市场订单。LP可以在一个定制的价格范围内(高于或低于当前价格)存入单个代币。如果市场价格在他们指定的范围内,他们可以沿着平滑的曲线出售一种资产以换取另一种资产,同时赚取掉期费用。
区间单的功能类似于“限价单”,但缺点是可逆性——当价格反转时,订单也会反转。然而,在此过程中,费用仍然是可以赚取的。Barry Fried ( @BarryFried1 ) 在此线程 中提供了如何使用范围指令的详细示例。
多种收费等级
Uniswap v3不再只有一个收费级别,而是为每对投资组合引入了三个单独的收费级别——0.05%、0.30%和1.00%,这样LP就可以因承担不同程度的风险而得到适当的补偿。
高级预言机
Uniswap v3提供了对价格预言机的重大改进。v3不再仅存储一个价格累积变量,而是存储一个变量数组,使得创建更高级的预言机(包括简单移动平均(SMA)、指数移动平均(EMA)、异常值过滤等)变得更加容易和便宜。
问题
缺乏灵活性
虽然集中的流动性和收费等级为流动性提供者提供了更大的灵活性,并使新战略得以实施,但Uniswap v3未能适应 AMM 和市场不断发展的功能和创新。为整合TWAP订单、限价订单、高级预言机和动态收费等附加功能,有必要重新实现核心协议。
某些功能,例如最初在Uniswap v2中引入的价格预言机,使集成商能够利用去中心化的链上定价数据。然而,这是以交换者增加的Gas费用和集成者缺乏自定义选项为代价的。
复杂的流动性管理
如前所述,对于不成熟的流动性提供者来说,集中的流动性是具有挑战性的,特别是对于波动性交易对。虽然出现了几种自动流动性管理协议,但它们大多是针对挂钩资产设计的简单再平衡策略。不幸的是,对于波动性较大的交易对来说,这些策略是无效的,因为长的区块时间、Gas成本、对冲成本等都会限制它们的效果。
此外,由于每个流动性提供者的集中流动性位置不同,LP代币本质上是不可替代的。它只能用不可替代代币(NFT)来表示,这对其他希望与之集成的DeFi协议提出了挑战。
许多优秀的项目正在积极解决这一问题,使用一系列策略,包括再平衡、货币市场动态对冲、永续合约和期权。Atis Elsts (@atiselsts_eth)写了一系列关于LP策略的优秀文章,强烈推荐。
价值泄漏
价值泄漏问题是所有问题中最重要的问题。虽然这不是Uniswap v3所独有的,但由于自v3发布以来AMM的交易量增加和更广泛的采用,它已经引起了人们的关注。该价值以以下形式从 DEX 系统中泄漏:
1.由于抢先交易和三明治攻击,交易者最终支付了比必要时更高的滑差。
2. 流动性提供者通过 CEX-DEX 套利损失价值(又名损失与再平衡)
为解决这些问题,我们需要比 Uniswap v3 当前提供的更多定制和复杂的设计。我们需要一个更具表现力和更强大的DEX平台。
v4:终极平台
Uniswap v4建立在前几代AMM模型的基础上,通过引入“Hooks”,旨在成为高效、可定制的终极 DEX 平台。
效率
单例
在Uniswap v3中,每个池都是通过工厂合约作为单独的合约创建的。另一方面,在v4中,所有池共存于单个智能合约(称为单例)中。这种单例(Singleton)模型显著降低了与创建池和执行多跳交易相关的费用。
闪存记账
在v4中,单例使用闪存记账来优化资产转移。在v3中,每次交换后都会将资产移入和移出池,与此不同的是,v4系统仅根据净余额进行转移。这大大降低了会计成本。瞬时存储(在EIP-1153中提出)使得设置和清除存储槽的成本更低,这是闪存记账有效运行所必需的。
来源:Uniswap
原生以太坊
Uniswap v4重新引入了对原生ETH交易的支持,这带来了几个好处。交易者可以享受更便宜的转移和消除额外的包装成本,减少Gas成本。
定制化
Hooks
Hook合约(或Hooks)是外部部署的合约,在池执行期间的特定点执行预定义的逻辑。这就是v4如此具有表现力和可定制性的原因。Hooks允许实现以前内置于协议中的功能,例如预言机,以及以前需要独立协议实现的新功能。
Uniswap v4目前支持8个这样的hook回调函数:
1.初始化前/初始化后
2. 修改位置之前/修改位置之后
3.交换前/交换后
4. 捐赠前/捐赠后
下图说明了Swap Hook的逻辑流程。在执行交换之前和之后,有一个专用的布尔标志,允许在这些特定的点执行自定义代码。这是开发高级功能的基础,如预言机、动态收费结构、拍卖和高级订单类型等。我们将在下文更深入地研究这些概念。
预言机
在以前的版本中,预言机被集成到核心Uniswap协议中。虽然这使得其他协议的集成更容易,成本更低,但代价是定制选项的减少和交换器的成本增加。然而,随着Hook的引入,预言机的设计可能性得到了极大的扩展。这为创建抗操纵的预言机提供了机会。此外,现在可以自定义选择谁承担更新预言机的成本。例如,与其让第一个交换者承担成本,这可能是不可持续的,不如使用带有ETH余额的Hook合约来支付Gas。尽管有这些进步,设计预言机仍然面临挑战。例如,TWAP预言机有时容易受到操纵,往往落后于当前价格。
Uniswap Labs推出了另一个有趣的价格预言机,即 截断 式 价格 预言机。该预言机计算流动性池中资产的几何平均价格,并对单个区块内的价格变动施加限制。通过截断价格,这种链上预言减轻了重大交易的价格影响,增强了对操纵企图的抵抗力。
动态费用
虽然Uniswap v3引入了额外的收费级别供LP选择,但这些收费结构仍然是静态的,不考虑当前的市场状况。因此,LP的服务没有得到足够的补偿。
Alex Nezlobin (@0×94305)提出了一个简单而有效的动态费用结构,该结构考虑了前一个区块的价格影响,并对买家和卖家适用不同的费用。下图说明了一个例子:当CEX价格移动到p*,高于当前AMM价格p_AMM时,销售费用减少δ,而购买费用增加δ。δ的值与AMM价格的变化成正比。这种动态收费结构的目的是区分套利者和不知情的资金流。套利流动更有可能与价格波动自相关。
设计一个健壮的动态收费结构提出了几个挑战。其中一个挑战是如何整合链下信号,如CEX价格、流动性深度和波动性。此外,各种链上信号(包括地址、大小和执行时间)在区分知情流和不知情流时可能不可靠,因此难以评估其有效性。此外,重要的是要确保费用不低于零,以限制LP的损失。
拍卖
Hook也可以作为实施拍卖的手段,这有助于将价值重新分配给LP。根据时间的不同,拍卖可以分为事前拍卖和事后拍卖。
事前拍卖在拍卖之前进行。这个概念最初是在一篇讨论MEV捕获AMM (McAMM)的研究文章中引入的。在这种方法中,在一个区块被拍卖之前,在AMM中进行第一次交换的权利,随后出价被重新分配。然而,这个投标过程也存在挑战,因为它本质上涉及期权定价,这可能非常复杂。此外,由于区块提议者拥有是否接受包含交易的区块的最终决策权,因此可能会出现审查问题。确保投标价值的公平和有效分配也可能是一项复杂的任务。此外,谁也不能保证中标方会首先行使掉期权,这可能导致其他交易者的体验恶化。
事后拍卖是在波动性实现之后进行的,这意味着CEX价格已经发生了变化,但在后续区块被承诺之前。这些拍卖的优势在于它们提高了效率。然而,它们带来了挑战,因为它们需要依赖于可信方或不可信系统的链下基础设施。如果使用可信方,就会出现审查和投标隐私方面的问题。另一方面,设计无信任系统要复杂得多。事后拍卖还面临着提议者可能与竞标者玩游戏的问题,比如将套利交易排除在及时纳入的范围之外。此外,在投标、对中标达成共识以及将这些投标分发给区块构建者方面存在额外延迟的重大问题——所有这些都需要在提交后续区块之前完成。最后,可能很难确保在这些拍卖中有足够的竞争条件来获得足够的价值。Sorella Labs (@SorellaLabs)利用其先进的基础设施和机制设计,在应对这些挑战方面处于领先地位。
Diamond Hook
Diamond协议最初被设计为最小化LVR 的AMM。在Diamond中,区块生产者通过拍卖来获取外部市场价格和自身价格之间的套利机会。这些拍卖的收益由Diamond矿池和区块生产者以一种与区块生产者保持激励兼容的方式共享。
正如本文所讨论的,Diamond协议的一个变体涉及实现一个抵押品池,以根据区块生产者承诺的价格维持区块结束价格。只有当有足够的抵押品使价格恢复到承诺的价值时,掉期才会执行。Arrakis (@ArrakisFinance)目前正在与Diamond协议的作者之一ConorMcMenamin (@ConorMcMenamin9)合作,开发使用 v4 Hooks的实施方案。
高级订单类型
Hook还可以支持更高级的订单类型,从而大大提高交易者的体验。一些常见的订单类型包括限价单、止损单、止盈单,以及TWAP。
限价订单
交易者可以选择向Hook合约提交链上限价单。当价格达到指定的点位价格时,将填写订单。然而,与传统金融(tradfi)限价订单相比,这些链上限价订单具有显着的劣势。这主要是因为在不产生Gas费的情况下,取消链上订单是不可能的。因此,这就产生了一个被称为“低订单交易比”的问题。
TWAMM (时间加权平均做市商)
一种可能的解决方案是实施时间加权平均做市商(TWAMM),以促进大额订单的执行。这种方法包括将大订单分成小块,并确保它们作为第一批交易执行,从而防止三明治攻击。此外,可以考虑降低TWAP订单费用,因为它们通常涉及不知情的流程。然而,随之而来的挑战是高昂的Gas成本,以及决定谁应该承担这些费用。
其他Hook
还有其他几个特性可以使用Hook来实现。以下是一些建议:
1.一种产生收益的挂钩,将超出范围的流动性借入货币市场以提高资本效率。
2.既具有 xy=k 流动性曲线又具有集中流动性的池子。
3.为LP提供提款费用的资金池,以减少即时流动性攻击。
Suning(@msfew_eth)在 Github 上提供了一个很棒的Hook想法和实现。Aiden (@aiden0x4)还为Hook发布了一个很好的 开放目录 。
zkAMM 和 zkHooks
ZK协处理器使智能合约能够访问类似于Dune Analytics提供的数据见解,所有这些都不会由于零知识(ZK)证明技术的应用而影响信任。zk协处理器在AMM设计中的应用是一个新兴的研究领域。Hook的引入现在允许将zk证明无缝集成到Uniswap v4中,开创了零知识AMM / zkAMM 的新时代。
Hyper预言机 演示了基于Uniswap v2的zkAMM的实现,其中addLiquidity计算是在链下。当用户增加流动性时,需要计算代币数量、价格和LP代币份额。在这一特定的实现中,Hyper预言机的zkGraph捕获addLiquidity事件,执行必要的计算,生成证明,并发布它。zkAMM的这种实现包括一个集成的自动化层,用于验证证明并为用户生成LP代币。
Diego(@0xfuturistic)介绍了一种基于Uniswap v3的zkAMM(zkUniswap)实现,其中AMM交换计算的一部分被转移到了Risc Zero(@RiscZero)zkVM上。当用户在池中执行交换时,需要计算多个参数以完成交换。这些参数包括要交换的数量、费用和交换后的价格。最初,该计算是通过EVM在 Solidity 合约中进行的。然而,在新的实现中,交换输入由中继器拾取,并且计算在链下进行。随后,中继器发布输出和证明。AMM验证证明并解决交换。zkUniswap实现了锁拍卖机制,以确保并发控制。虽然它目前的性能与EVM相当,但通过批量交换的并行化可以显着提高效率。
交易量证明是AMM的另一个用例。Brevis (@brevis_zk)提供了一个有趣的例子,可以根据用户的历史交易量设计费用回扣挂钩,类似于中心化交易所的基于交易量的费用回扣。VIP交易者现在可以计算他们的月交易量,然后向区块链提交一个低成本的ZK证明,以异步验证他们的VIP状态。一旦验证,后续交易可以利用交换后挂钩访问由ZK协处理器填充的“VIP费用等级表”。这允许自动应用适当的费用回扣。Maru Network (@ marunnetwork)目前正在开发无信任的预言机,作为其zk协处理器网络的初始用例。通过实现一个无信任的交易量数据库,DEX将能够以公平和透明的方式分配奖励。这种方法允许按比例激励流动性和用户活动,形成积极的飞轮效应。通过使用NEBRA (@nebrazkp) UPA (Universal proof aggregation)等零知识证明聚合服务,可以降低证明验证的成本,NEBRA (@nebrazkp) UPA (Universal proof aggregation)将来自不同电路和不同参与方的证明聚合为单个证明,从而降低平摊验证成本。
总而言之,zkAMM 的概念涉及利用 zkCoprocessors 或 zkOracles 将计算从 EVM 转移出并验证链上计算的证明。这些计算可能比与掉期和流动性调整相关的计算要复杂得多。例如,它们可能涉及根据最近的市场波动计算动态费用,证明给定池中的历史用户数量,或使用复杂的机器学习算法实施再平衡策略。可能性是无限的,因为任何计算最终都会导致0(1)验证成本,不再受EVM计算资源的限制。
v4挑战
Uniswap v4为AMM设计空间引入了效率和定制化功能,支持创建具有各种特性和功能的池。然而,这一进步带来了一个可预见的代价:由于池的激增,流动性碎片增加。因此,路由选择变得更具挑战性。
UniswapX
UniswapX旨在通过将路由的复杂性外包给第三方填充者的开放网络来解决流动性碎片化问题。这些填充者相互竞争,使用链上流动性(如AMM池或自己的私人库存)执行交换。这种设计以意图为中心,允许用户简单地陈述他们想要的结果,并依靠专业人员来实现。
这些填充者是高级的代理,配备了先进的路由算法、高计算能力和大量的金融资本。它们在预定的拍卖机制下相互竞争,为用户提供最好的执行。用户还可以获得价格改善,确保他们的执行至少与直接从Uniswap AMM池进行的交易一样好。
UniswapX协议的体系结构如下所示。交换者通过Uniswap API提交其意图订单,其结构为Permit2可执行的链下签名。Permit2是一个优雅的模型,可确保用户持有的代币的安全移动。填料设计策略,使用任何可用的流动性场所来完成这些订单,无论是链上还是链下。最后,订单反应堆解决UniswapX订单。他们负责验证特定类型的订单,将其解析为输入和输出,根据填充者的策略执行它们,并验证订单的成功实现。
在目前Uniswap实验室对UniswapX的接口实现中,协议被分为两个阶段。第一个是RFQ阶段,白名单上的“报价人”用报价回应订单。然后,报价的获胜者有一个排他性期限来完成订单。如果没有,就进入第二阶段,荷兰式拍卖阶段,这是一个任何填充者都可以参加的拍卖。计划是在不久的将来使报价系统完全无需许可。
资料来源:Hayden Adams、EthCC 的链上交易
以意图为中心的设计提供了以下好处:
聚合流动性来源以获得更好的价格。
不需要Gas代币,即使是跨链交换。
通过价格改善实现经济效益的内部化。
交易失败不会产生任何费用。
挑战
使报价系统无需许可,例如使用有效的信誉系统。
吸引更多的填充者,以确保竞争和无许可的拍卖环境。
未来:无限游戏
DEX的发展并未止步于此。为使加密实现大规模采用,还有几个其他问题需要解决。来自PropellerHeads (@PropellerSwap)的Markus Schmitt (@_haikane_)与Frontier Research (@FrontierDotTech)合作,撰写了一篇出色的文章,深入探讨了优秀 DEX 的构成要素,并确定了尚待解决的问题。根据他的观点,一个好的交易所应该提供:
信任:确保交易前、交易中和交易后的透明度和最小化托管风险。
最优惠的价格:持续提供最佳或有竞争力的价格。
公平:防止滥用订单,确保所有用户在定价和费用方面享有平等待遇。
速度和可用性:提供快速交易处理并保持高可用性,以避免延迟和不便。
信息:通过提供订单监控、结算价格估计、限价单和滑点的有用建议,帮助用户做出明智的决策。
流动性:在各种资产对之间展示强大的流动性池,为获得优惠价格注入信心。
如果DEX的智能合约被认为是安全的,那么信任就已经建立起来了。DEX不持有用户的资产。现在可供交易者使用的信息相当广泛。AMM无需许可的特性使用户能够创建和交易任何资产对。但是,由于区块链的特性,并不能总是保证确保最佳价格、公平性、速度和可用性。Gas费用、陈旧的价格和去中心化的流动性都会影响用户体验。
为解决这些问题,我们正在见证L2和基于L2的DEX的激增。此外,我们还看到了更复杂的路由、订单批处理和报价请求系统。为防止抢先交易,确保公平的价值分配,我们正在采用更多具有 MEV 意识的渠道。此外,我们正在努力开发订单流拍卖市场,以最大限度地减少DEX用户的价值泄漏。Hook和ZK协处理器的引入也大大扩展了AMM的设计可能性,允许更复杂的逻辑和繁重的计算,而不会影响信任。
此外,还有一套基于AMM的协议,有效地堆叠了“金钱乐高”。这些协议包括流动性管理器,帮助不成熟的用户自动化流动性再平衡或杠杆化。也有协议利用集中流动性(CL)头寸来创建保证金交易、永续交易、期权和结构性产品。
AMM 因其无许可资产上架、被动流动性和交易简便等特点而实现了指数式增长。然而,这种便利性也带来了我们目前已经探讨过的几个问题。Uniswap一直在不断突破边界,以解决这些问题并增强用户体验。正如丹·罗宾逊(Dan Robinson)在SBC23的演讲中恰如其分地指出的那样,DEX设计是一场无限的游戏。随着未来去中心化交易所的采用越来越多,可能会出现新的挑战和问题,需要创新的解决方案。