Uniswap v3用非同质化的ERC-721流动性头寸代替了同质化的ERC-20流动性头寸。 这是否意味着它不再支持灵活的UniswapV2风格的流动性挖矿?必须选择特定的激励范围,积极管理流动性挖矿吗?还是可以通过提供大量非活跃流动性来在流动性挖矿中进行博弈? 不。 Uniswap v3可以支持与Uniswap v2相同类型的流动性挖矿——以每秒固定的速率、按比例激励所有活跃流动性,只需作出相对较小的折衷。它间接地激励了流动性的集中,因为流动性提供者根据他们在虚拟流动性中的份额(当它活跃时)获得奖励,而不是根据所提供代币的总价值。它甚至可以在一个单一的质押合约中做到这一切,使人们可以同时利用多种激励来质押相同的流动性,而无需为不同的激励措施部署新合约。 Omar Bohsali(现为Paradigm的驻场企业家)最近获得了Uniswap资助项目的资助,以实现该算法。您可以在GitHub上查看跟踪他的进度。 这是关于我如何学会停止担心并喜欢上非同质化流动性系列文章中的第一篇。下一篇文章将讨论Uniswap v3头寸将如何被用作抵押品。 价值十亿美元的算法 要了解标准流动性挖矿算法如何适用于Uniswap v3,我们首先需要了解它在早期版本的Uniswap中是如何工作的。 第一个在链上计算奖励的流动性挖矿项目是SNX对Uniswap sETH池的奖励。这是Anton Bukov在2019年撰写的Unipool sETH合约中实现的。我认为这是有史以来最具影响力的智能合约之一。 假设你想激励Uniswap v1或v2池在特定时期内的流动性。想要在流动性提供者之间公平地分配代币,并且是随时间线性分配(例如,以每秒R个代币的速度)。 请想象,以秒为单位将池子切成一片片。对于每个部分,给定的流动性提供者都应收到 个代币,其中l(t)是单个流动性提供者在t时刻的流动性代币余额,L(t)是该池在t时刻已质押的流动性总量。他们从t0到t1时间内得到的奖励将是这段时间内每秒奖励的总和: 这在链下是很容易计算的。但是我们如何才能在链上有效地计算它,在每次有人进入或退出池子时进行增量更新? 如果余额 l 在那段时间内是恒定的,则可以将以上公式简化为: 然后,我们可以将该和分解为两个和的差。(Uniswap v2中引入的oracle accumulator使用了非常类似的技巧。) (责任编辑:admin) |