无疑,当下的加密市场处于深熊阶段,流动性萎缩叠加 SEC 监管升级都如同乌云笼罩在整个市场上空。与此同时,Uniswap 的交易量已经连续四个月超过 Coinbase,在监管压力之下,优秀的 DeFi 产品愈发证明其价值。时至今日,我们依然可以毫不吝啬地说,Uniswap 是以太坊上最伟大的用例之一
1620 年,一艘名为五月花号(Mayflower)的英国船只驶离英格兰,五月花号带着 102 名乘客和大约 30 名船员驶向美国,他们离开英格兰的原因是认为英格兰教会不仅抵制改革而且过于腐败,所以决定穿越大西洋来到北美,在那里他们将建立属于自己的新移民社区。 2017 年 7 月,Hayden Adams 被他大学毕业后的第一个雇主西门子解雇,彼时他还是一位毫无区块链开发经验的机械工程师。2018 年 8 月,在 Hayden 失业的第 13 个月时,Hayden 与他的伙伴们完成了 Uniswap v1 的开发并在以太坊主网上线,从此成为 DeFi 世界里最不可或缺的拼图之一。而在本文着笔的 48 小时前,Uniswap 发布了他们的第四版迭代。我们在第一时间内浏览了他们的白皮书和合约代码,试图分析这一酝酿两年之久的更新较于前代有哪些坚持与变革。
坦率地说,目前 v4 的合约还不是一个开发完成的状态,可读性和可参考性都受到了一定的影响。但是我们还是可以确认,v4 保留了很多前代验证为有效的特性:
<!--EndFragment-->
结合白皮书和合约代码,我们欣喜地发现 v4 在上述坚持的基础上完成了诸多创新和改变,而这些革新主要着力于以下四个方面:
熟悉 Uniswap 过往版本代码的人都知道 factory-pool 这一自其 v1 沿用至今的合约架构,可以说这个架构至今都是目前 DeFi 世界里使用最广泛的合约结构。而 Uniswap 在 v4 中决定弃用,引入了新的单例合约(singleton)结构,旨在最大限度的降低创建流动性池以及跨池(合约)调用中的 gas 消耗。 我们可以看到,v4-core 中仅剩下 PoolManager 一个合约承担着核心的业务逻辑,而 PoolManager 将承担着协议所有流动性汇算的任务,使用 PoolKey 这一字段来索引对应的币对市场,而 AMM 曲线以及流动性的相关计算都抽象到了 libraries 库合约中。 <!--StartFragment-->
<!--EndFragment-->
在合约结构方面,同样值得一提的是 v4 的流动性仓位数据的存储与封装也产生了巨大改变:
闪电记账(flash accounting)可以说是 v4 中最具有开创性的设计之一。回顾过往市场中绝大多数流动性协议,它们的交易和流动性相关操作都伴随着代币转移,流程无外乎:安全性检查 -> 根据设定目标计算代币转换的数量 -> 更新账务数据 -> 代币转移。而 v4 中颠覆了这一固有的编码逻辑,利用回调函数(callback function)的特性,构建了一套复式记账账本。
什么是复式记账法?复式记账法是以资产与权益平衡关系作为记账基础,对于每一笔经济业务,都要以相等的金额在两个或两个以上相互联系的账户中进行登记,系统地反映资金运动变化结果的一种记账方法。举一个简单的例子,Alice 从 Bob 那里借款 1000 USDC,这一笔经济活动将被记录成:
从上面的表格中,我们很好理解:资产 = 权益 - 负债。(此处负债为绝对值) 我们把这个例子拓展的更复杂一些:Alice 从 Bob 那里借款 1000 USDC;Bob 从 Carl 那里借款 1 ETH;Carl 又向 Alice 借了 1000 DAI,那么我们的复式记账表格将会是:
显然,Uniswap 的流动性池是交易者进行借贷的对象,而 swap 交易的本质则是:在交易完成后,流动性池与交易者彼此之间债务两清。也就是说当 Alice 试图使用 1800 USDC 购买 1 ETH 时,她与流动性池的关系也可以使用复式记账法来记录:
如果此刻 ETH-USDC 池中的 ETH 恰好价值 1800 USDC,那么在 swap 交易结束后,Alice 与 pool 互不相欠,交易可以成功执行。而在 v4 中,每个操作都会更新一个称为 [delta] 的内部净余额,而这个内部净余额就可以看作我们上面所说的资产。每笔交易,无论其跨过多少个交易对,都需要在完成时保证 [delta] 为零,否则将被驳回。v4 中新增的 take() 和 settle() 函数便可用于借出或存入资金到池中,协议便通过这两个函数来强制执行池的结算和偿付,以保证在调用结束时 PoolManager 与调用者之间互不相欠任何代币。 同时,协议引入了 ERC-1155 这一半同质化代币,并将协议的债务进行代币化。也就是说,当交易者或者 LP 在任一操作中导致协议对其产生欠款,他可以不使用 take() 而是使用 mint() 函数来 1:1 的铸造对应资产的 ERC-1155 代币来获得可刚性兑付的权益凭证。基于该权益凭证的激励或者衍生产品将会有极大的创造空间,而这也意味着,将会有更多流动性被留在流动性池内,为交易者提供更好的流动性深度和交易体验。 单例合约结构和闪电记账这两个特性的结合使得在多个 v4 池之间更高效地进行路由成为可能,降低了流动性碎片化的成本。
在 v4-periphery repo 中引入钩子 hooks 合约, hooks 是在流动性池生命周期的各个时间节点运行的代码片段。开发者可以利用给出的 BaseHook 合约构建属于自己的个性化交易操作。 Uniswap v4 目前支持八个这样的钩子回调:
<!--EndFragment-->
也就是说无论是 LP 还是交易者都可以在流动性池中操作时利用定制化的 hooks 来执行核心逻辑以外的业务逻辑。这无疑为很多原本通过链下中心化服务(如 Gelato Network)才能实现的功能提供了链上操作的可能性:
v3 被一直诟病的缺乏对于 LP 的激励和保护在 v4 中有所改观。 PoolManager 中内置的 donate() 方法将允许用户、协议外集成者和钩子直接以池中任一代币向在价格范围内的 LP 支付费用。这一新机制可以将 MEV 内化到 LP 的回报中,以便 LP 可以从 MEV 中受益。
Uniswap 作为 DEX 赛道的龙头,一直站在 AMM 研究的最前沿,但是在 AMM 的研究上其他 AMM 竞品也有各自的创新,在 Uniswap v4 这次的更新上我们也能看到其他协议的影子:
<!--EndFragment-->
无疑,当下的加密市场处于深熊阶段,流动性萎缩叠加 SEC 监管升级都如同乌云笼罩在整个市场上空。与此同时,Uniswap 的交易量已经连续四个月超过 Coinbase,在监管压力之下,优秀的 DeFi 产品愈发证明其价值。时至今日,我们依然可以毫不吝啬地说,Uniswap 是以太坊上最伟大的用例之一。 <!--StartFragment-->
<!--EndFragment-->
故事回到本文的最开始,经过 10 周艰苦的海上航行,五月花号抵达美国,1620 年 11 月 21 日在今美国马萨诸塞州科德角附近抛锚靠岸。当他们到达北美以后,1620 年的冬季格外寒冷,102 名乘客中有一半因病去世。但是活下来的 50 人继续在北美新英格兰扎根生活,生养众多,到 21 世纪他们的后裔已经达到 3,500 万人。在他们的后代中有很多美国著名人物,包括大约五分之一的美国总统,例如亚当斯父子总统,小罗斯福总统,布什父子总统等政治、法律界人物,以及许多文艺界、科学界、宗教界人物。而在五月花号前往北美的航程中,这些乘客们在会议中签署了著名《五月花号公约》,这个公约成为 160 年以后美利坚合众国成立时的宪法精神基础。 2017 年,在 Hayden Adams 刚失业的那几个月里,他学习了智能合约的编写,又先后结识了 Vitalik Buterin,Philip Daian,Dan Robinson 等等与他志同道合的朋友,在他们的影响和帮助下,秉持着抗审查和开源的加密精神,Hayden 建造了 Uniswap,这艘 DeFi 世界的五月花号。而今天,它也即将再次启程,继续向着未知之境进发。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!