基于 ERC-3525 改进 Uniswap v3 LP 模型

作者:Will Wang,Ethan Tsai

Will Wang,Solv protocol 联合创始人、ERC-3525 标准提出人

Ethan Tsai,Solv Protocol 核心技术团队成员、ERC-3525 核心贡献者之一

前言:本文写作于 2021 年 3 月23 日,也就是去中心化交易所 Uniswap 发布 v3 的第二天。当时,Solv 团队正在向以太坊社区提交  ERC-3525 标准草案,看到 Uniswap v3 LP的设计后,兴奋于“将 NFT 应用于金融类应用”的理念与行业领导者不谋而合,同时也认为正在设计和提交的 ERC-3525 能为 v3 作出重大改进:包括为 LP 带来更好的流动性和管理能力。

本文探讨了 Uniswap v3 区间做市的工作原理,仔细分析其固有的问题,以及基于 ERC-3525 解决这些主要障碍的解决方案。时隔一年多,ERC-3525 已经成为以太坊社区正式标准,我们认为当时提出的对于 ERC-3525 改进方案仍然具有价值,故重新发表此文。

由于文章发表较早,部分技术内容与 ERC-3525 正式标准有一定差异,特此说明。

一、 背景

Uniswap V3 引入了做市商的差异化 position 管理能力,允许做市商针对不同价格区间来配置做不同市资金量:当成交价落在某个价格区间内,做市商对应的资金头寸参与做市,成交价落在这个价格区间外,这部分资金不参与做市。这是一个很有力的创新,其价值和具体实现有很多细节,这里不做展开。我们只针对其中一个问题进行讨论:position 的管理方式,也就是Uniswap V3 LP 的技术实现手段。

众所周知,Uniswap V2 的 LP 是一种 ERC-20,由于 V2 中并没有区间化的 position 管理,所以 V2 的 LP 实际上就是全价格范围的 position 管理 token。同时,由于 position 没有差异化,Uniswap V2 的 pool 也就和 LP 合二为一,形成了一体化的管理模式,这也是目前大部分DEFI项目的资金池管理模式。

由于 ERC-20 模型的限制,无法实现差异化 position 管理,否则会导致针对每个 position 创建一个 ERC-20 合约,不仅代价难以承受,而且 ERC-20 资产的流动性特征也没有获得充分利用,得不偿失。同时,由于差异化 position 又要汇聚成统一的资金池,因此原有的 LP 与资金池合二为一的模式也不是那么显而易见了。对这两个问题,Uniswap V3 给出的解决方案是:position 管理 token 改为 ERC-721,pool 也成为一个单独的合约。

二、 底层资产 Token化(tokenization of underlying assets)的价值

那么,Uniswap V3的 position 管理解决方案是最优的吗?要讨论清楚这个问题,我们首先要回顾一下目前主要 DEFI 平台所采用的“底层资产 token化 ”这一模式的价值。

所谓底层资产 token 化,就是指用户将资产存入 DEFI 平台的资金池合约本身是一个 token 合约,对应发行的 token 就是用户的资产存储凭证,这种模式之所以一直是主流 DEFI 平台的首选方案,主要是因为其创造了一种“双层资产”的模型,将底层资产与 token 化资产分离,从而带来了两个核心价值:

首先,token 化形成一种新的衍生资产,很大程度上释放了底层资产的流动性。比如Compound 的 cToken、Uniswap V2的 LP,由于其与底层资产在数量上的对应关系,使得其包含内在价值,且价格可以计算,现在已有大量平台支持这类 LP 资产的交易、质押,显著提升用户资产的流动性。

其次,双层资产的处理相互独立,互不影响,为协议带来了简化资产管理和提升底层资产稳定性的价值。例如:用户需要将资产出售、质押或转移到另一个地址进行管理的时候,只需要用标准的 token 协议进行操作,而无需由资金池协议开发任何对应的管理功能。同时,通过token 的转移实现底层资产所有权的变更,使得用户无需采取将底层资产取出再存入的动作,保障了资金池规模的稳定性。

整个 DEFI 世界的乐高积木模型,在很大程度上是因为上述两个能力才得以发挥最大的价值,因此任何一个 DEFI 协议的底层资产管理架构,也就是其 token 化的实现手段,应该以最大限度提供上述两个能力为前提,为这一目标寻找对应解决方案的努力都是值得的。

三、 Uniswap V3 position LP 的问题

回过头来看 Uniswap V3 的LP解决方案,会发现一个明显的问题,那就是基于标准 ERC-721协议实现的 position 管理,虽然支持了差异化的特性,但却没有最大限度地保持前述的两个价值。我们用两个场景做示例来进行讨论:

头寸变更

Uniswap V3 提供了头寸变更的能力,允许针对一个 position 来修改其价格区间,这很显然是一个必备功能。但用户可能不满足于单纯的修改价格区间,例如:一个用户投入了 100 万美元在 1500-2000 这个区间的 ETH-USDC 交易对上,根据市场情况他希望将其中30 万美元转移到 1000-1200 这个价格区间上,以应对可能出现的下跌。在现有 Uniswap V3 的实现中,用户唯一能做的就是从现有价格区间的头寸中取出 30 万美元,另外创建一个对应新价格区间的 position。这显然没有达到我们上面讨论过的尽可能避免用户取出底层资产,从而保持资金池稳定性的目标。

资产流动性

如前所述,Uniswap V2 的 LP 已经成为被广泛认可的资产,相信 V3 的 LP 也不例外,因此针对这种资产的质押、交易和各种处理会成为普遍需求,但由于 ERC-721 的限制,无法在这类场景中提供灵活的方案。例如:有两个平台提供 V3 LP 的质押服务,用户暂时无法判断哪个平台收益更好,最简单的办法就是分别质押 50% 的资产,这在 ERC-20 时代是简便易行的,而现在却无法完成,用户甚至需要为此创建两个价格区间完全一样的 LP 去实现这一目标吗?

Uniswap 给出的答案是由进一步的外围合约或者第三方来提供(基于ERC-20的)re-fungible 的方案,但这显然不能令人满意。一方面,如果针对每一个 ERC-721 ID 发行一个ERC-20合约,会形成灾难性的合约碎片问题,让接收 LP 资产的平台很难处理。反过来,如果采用打包机制将若干 ID 的 token 进行整合,不仅增加用户资产管理的难度,还要面临复杂的价格确定机制的问题。对于 NFT 领域内 re-fungible 方案比较熟悉的人会了解,这种模式并不能有效应对 position LP 这种高度复杂性的金融资产。

总体而言,基于标准 ERC-721 协议的 LP,基本上很难实现 ERC-20 类型 LP 的管理能力与流动性模式,而这些特征实际上是 LP 类 token 资产的核心价值。如果 Uniswap V3 仅仅采用这种方式来实现 LP token,对于方兴未艾的 LP 市场可能造成不小的打击。

四、 解决方案

我们之所以能够对上述问题作出快速而深入的分析,是因为我们在设计借贷市场中的定期借贷产品、投资市场中的定期解锁产品时,都遇到过相同的问题,并且给出了比标准 ERC-721 更好的方案。我们也因此相信,这个方案同样适用于Uniswap V3 的 LP,使其具备更好的流动性和管理能力。

答案就是一种新型的资产协议,我们称之为 SFT,这实际上是一组协议的统称,包含多种类型的接口,具体细节会在未来逐步介绍。简单讲,SFT 是一种支持数量描述的NFT,在此基础上可进行拆分、合并和部分转让。同时,为了更好地支持“双层资产”模型,SFT 还在协议层增加了底层资产描述能力,从而支持和规范这种模式的实现。此外,为了有效与现有的 DEFI世界基础设施进行交互,SFT 在实现层面与 ERC-721保持兼容,从而任何支持标准 ERC-721的协议都能够将 SFT 的token当做 ERC-721 的 token 来处理。

从技术层面描述,这个协议会包含以下接口(仅列出部分):

function safeTransferUnitsFrom(address from, address to, uint256 tokenId, uint256 targetTokenId, uint256 transferUnits) external;
function split(uint256 tokenId, uint256 newTokenId, uint256 units) external;
function merge(uint256 tokenId, uint256 targetTokenId) external;
function approveUnits(address to, uint256 tokenId, uint256 units) external ;

其中,Units 表示一个 NFT 中所包含的数量。

资产管理灵活性

由于增加了数量属性以及拆分、合并和部分转让的能力,上述 Uniswap V3 LP 的问题都能够获得很好地解决。举例而言,当你希望将一部分头寸转移到另一个价格区间时,只需要将现有头寸对应的 LP token 按照金额拆分成两部分,然后对其中一部分进行价格区间变更,而无需首先取款。对于转让、交易、质押等操作,也可以进行类似的处理,并且由于 LP 的数量与底层资产存在对应关系,LP 资产的价格也清晰易见,不需要再采用其他外围协议或者打包成ERC20,使得用户和其他DEFI协议都能够获得接近于 ERC-20 LP 的处理能力。

LP与pool一体化

不仅如此,由于 SFT 在协议层增加了底层资产的描述能力,使得 token 与底层资产的映射关系与 ERC-20 同等灵活,可以使 Uniswap V3 很容易地实现 LP token 与资金池的一体化,回到 V2 以及目前大部分 DEFI 协议所采用的简单而清晰的“双层资产”模型。

从 Uniswap 作为 DEX 的实现角度看,这一方案并不是必须的,V3 的文档中还特别说明 LP token 与 pool 的合约拆分,是有意为之。但在我们看来,这种一体化模式所带来的双层资产处理方式的一致性,在提升 LP 资产的流动性、降低信任摩擦方面还是有很重要的作用的,仍然非常值得考虑。

当然,实现一体化模型还有很多其他因素需要考虑,比如是否由于 ERC-721 基础合约较大,导致超过 EIP-170 限制问题等等,这也都是我们在实践中处理过的问题,相信在技术层面都是能够解决的。

五、 结论

总体上说,我们的结论是:现阶段 DEFI 已经进入了更复杂、更多维度的金融产品设计与实现的阶段,类似于差异化头寸管理的模式会层出不穷。在这一趋势下,要保持 LP 类资产的流动性和管理便捷性,寻求一种新型的资产协议是必须并且值得的,SFT 就是我们为这一系列目标给出的解决方案。

Subscribe to Solv 华语社区
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.