基于 ERC-3525 改进 Uniswap v3 LP 模型
0x0759
September 23rd, 2022

作者: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 new entries directly to your inbox.
Collectors
View
#1
#2
#3
View collectors
This entry has been permanently stored on-chain and signed by its creator.