本文于2020年5月2日发布于链闻,作者潘致雄系链闻研究总监。
现在是关注 DeFi 领域中「自动化做市商」这个赛道最好的时候。这个赛道中,此前最靓丽的明星是去中心化交易平台 Uniswap 。据 Alethio 最新发布的 DeFi 数据报告,Uniswap 正蚕食以太坊链上越来越多的交易量。作为一款以自动化算法实现交易的协议,Uniswap 竟然在 3 月 12 日「黑色星期四」期间吸引了以太坊链上交易平台中 40% 的日活用户。
而 4 月初刚上线的 Balancer,又是另一个值得关注的明星。这个新上线的 DeFi 平台,为 Uniswap 这类 AMM 工具注入了更多的想象力:Balancer 不仅能成为一个交易工具,还能扩展为一款大众化的「指数基金投资工具」,投资回报有望超过专业投资者。
如果说 Uniswap 实现了 0 到 1 的突破,那 Balancer 有可能要 推动 1 到 10 的增长。
Balancer 是对链上流动性工具的一次巨大提升。与前辈 Uniswap 相比,它提供了更多的设置和功能,所以你可以将它理解为是一个「高级版的 Uniswap」。
在 Balancer 之前, Uniswap 和 Curve 是同类产品中最典型的两个:Uniswap 提供了简洁的通用型解决方案,而 Curve 则针对 稳定币 的场景深度优化。但 Uniswap 和 Curve 这两个产品只能局限在「交易」的场景中,没法扩展更多应用。而且在交易功能中,他们自定义化程度并不高。以 Uniswap 为例,流动性提供方不可以自定义费率、每个资金池无法按照特定比例分配、每个资金池仅支持两个代币。
但 Balancer 突破了这个问题。为了给做市商提供更全面和可自定义的解决方案,Balancer 解决了上述的这些问题。在 Balancer 的设计中,做市商和流动性提供方可以自行创建一个支持 高度自定义的交易资金池 ,以实现:
从某种角度来看,可以把 Uniswap 看作是 Balancer 的一个 子集 。用户可以通过 Balancer 创建出一个几乎与 Uniswap 相同的资金池,不过流动性取决于资金池的资金体量,所以两者存在竞争关系。
而广义上来说,Balancer 还在和其他的 资产管理类 DeFi 协议 竞争。作为 Balancer 的流动性提供方,投入资本的主要目的是为了赚取交易手续费,所以如果有更高收益且更低风险的投资机会,可能会最终影响到 Balancer 的流动性表现。
Balancer 在 4 月 1 日上线以太坊主网后,整体增长良好。目前已创建 29 个独立资金池,累计的交易量达到 36 万美元,累计流动性达 137 万 美元 。
其中流动性最佳的资金池是由 WETH 和 MKR 组成的,汇集资产约 76 万美元。这也和 Uniswap 类似,Uniswap 中流动性比较具有优势的资金池也是由以太坊和 MakerDAO 的治理代币 MKR 组成的。
总体来看,Balancer 的发展值得期待。
在深入探究 Balancer 之前,有必要对「 自动化做市商 (AMM) 」做一个简单科普。
Uniswap 和 Balancer,都属于自动化做市商 (AMM) 。这类 DeFi 产品已成为 DeFi 的基础设施。越来越多的链上交易平台,或去中心化交易所 (DEX) 已经集成了 AMM,作为托底的 流动性保障 。
做市商是交易市场的流动性提供者,有助于提升市场的 交易效率 。
自动化做市商 (AMM) 则基于特定算法或模型实现,比如 Uniswap 采用的是 恒定乘积做市模型 ,还有更复杂的 AMM 模型可以根据交易品类或行情波动定制。
每个 AMM 协议都会包含多个资金池,可以把它理解成是交易所的 交易对 ,但其中包含了部分资产用作执行 AMM 的 做市模型 。用户与 AMM 的资金池之间的交互方式主要有三种:注入流动性、提取流动性和交易。注入流动性的用户相当于成为 做市商 ,提取流动性的用户相当于从资金池中 拿回 之前的资金。
为了促进更多普通用户将闲置资金池注入资金池成为做市商的一员,AMM协议一般都会内置「 分红 」机制,将收集而来的交易费按照资金池的占有比例分配给所有流动性提供方 。
上文我们已经简单介绍过,可以把 Balancer 理解为是一个「高级版的 Uniswap」,而 Uniswap 则可以被视为是 Balancer 的一个子集。
所谓「高级」,不是指性能,毕竟两者同样基于以太坊 Layer 1,很难拉开性能或交易吞吐量的差距;而是差别体现在 可定制化 上和 可伸缩性 上。
作为以太坊 DEX 的基础设施,Uniswap 的优点为做市算法与产品逻辑简单,而且因为没有 管理员特殊权限 (admin key) ,被社区认为是去中心化程度较高的协议。其他一些常见的去中心化交易协议如 Kyber、0x API,也会将部分交易订单转交由 Uniswap 撮合完成。
为了保持产品逻辑的简洁,Uniswap 的部分参数被 固化 在协议内,未开放给用户设置,未来是否会开放也不得而知。不过从目前 Uniswap V2 的改进来看,这些仍然不是 Uniswap 现阶段的关注重点。
而这正好构成了 Balancer 的突破口,足够与 Uniswap 进行 差异化竞争 。相比 Uniswap,Balancer 主要增加了三个组件的可自定义化:
第一条是比较明确的特性,但是第二第三条需要通过更多具体案例进行理解。
除此之外,AMM 工具的最核心模块「 做市算法 」因此需要调整。之前在 Uniswap 中采用的「恒定乘积做市商」算法模型不再适用,需要升级为更通用的模型,或许我们可以称之为「 加强版恒定乘积做市商 」,比 Uniswap 的模型增加了权重和多代币的属性,以便更好的支持上述第二和第三条特性。
我们希望通过一个案例理解这两者的区别。为便于计算,以下案例均去除了交易费用的影响,并简化计算量级。
假设 Uniswap 的 ETH/DAI 的资金池中拥有 10 个 ETH 和 1000 个 DAI,那该资金池的恒定乘积模型为:
该模型规定了,无论后续的用户如何交易,该资金池中保留的 ETH 数量和 DAI 数量的乘积等于 10000 保持不变,如果用户通过该资金池交易,提交 10 个 ETH 可以换得 500 个 DAI:
Uniswap 中,单资金池仅两个代币,所以上述公式是有效的。但是 Balancer 的做市商模型支持 多代币 ,也就是一个资金池内共有 8 个代币 (这是目前的限制) 可以互相交换,于是,最多就会涉及到最多 8 个变量。
更需要指出的是,该模型可以支持更多代币,或许未来会放开该限制。
假设 Balancer 某个资金池中含有 ETH 、 DAI 和 SNT 三个资产,初始状态下资金池包含了 10 个 ETH、500 个 DAI 和 100000 个 SNT,而这个资金池的创建者设置的三个资产的占比分别是 30%、30% 和 40%,则该资金池模型的恒定乘积为:
该公式考虑到了多资产以及权重在其中的影响,可以通过计算得出每一次交易时的比例。如果资产数量更多,就加上更多的乘积,以此类推。
通过「 加强版 」恒定乘积做市模型,资金池最多就可以支持 8 种资产了。
Uniswap 可以实现任意两个 ERC-20 代币 的兑换,但其实背后是由两个资金池实现的。每一种 ERC-20 资产都可以创建一个与 ETH 之间的资金池,然后普通用户可以为该特定的资金池提供流动性。
比如用户将 SNT 换为 BAT,其实是通过 SNT/ETH 资金池和 BAT/ETH 资金池实现的,ETH 作为一种 交易媒介 ,促成两个交易对同时成交,不过这样需要付出两次交易费。
但在 Balancer 中,由于一个资金池可以包含多个代币,所以 ERC-20 之间的交易可以在 同一个资金池 内实现,也许可以减少交易费和链上 Gas 费用。
不过很多时候为了减少 交易成本 (滑点) ,Balancer 也可以帮助用户从多个资金池内寻找并聚合最优交易路径。
Balancer 的一大改进是资金池创建者可以设置资金池的 交易费率 ,而自定义费率可以促进流动性供给的市场化。
在 Uniswap 中,每一个资金池的费率固定为 0.3% ,而 Curve 中的费率仅 0.04% ,所以如果遇到稳定币交易的场景,用户应该会优先选择 Curve,而且 Curve 的做市模型更适合稳定币,滑点更低。
Balancer 为资金池创建者提供了 费率自定义 的功能,不同资金池之间为了争夺交易量,可能会以费率作为竞争的核心参数。预计这会降低 DEX 的整体交易费率。
而对于那些具有 大量资金 的流动性提供方,或者提供某些特殊资产的资金池,可以设置一个更高的交易费率,因为他们为市场提供了更多流动性和特殊资源。
流动性提供方可以将 AMM 看作是一种 资产管理工具 。
AMM 为了激励更多用户投入闲置资金建立流动性资金池,所以需要将资金池中的收益分配给所有流动性提供方。
收益取决于资金池交易费率和资金池的总交易量,比如 Curve 的资金池的交易费率较低仅 0.04%,但是由于交易量大,可以为流动性提供方带去最高可达年化 20% 左右的收益。不过,最近 Curve 资金池的收益回落比较严重,一度低至 4%。
随着流动性供给的市场化,收益终将回归至 平衡点 。如果某个资金池的年化收益率显著高于其他资金池,那更多用户就会将资金投入该收益更高的资金池中,随着资金池总量增加,单位成本的收益就会下降。
但也不可避免存在一些风险。
从协议的安全风险角度来说,开源且通过安全审计的 AMM 风险相对较低,所有交易均通过智能合约执行。但一个很明显的缺点:用户收益需要以 一篮子货币 计价。当用户提供流动性时,需要注入该资金池中所有支持的代币;当用户提取流动性时,也是获得该资金池中所有支持的代币。
从上述的「 收益率 」公式来看,为了简化计算,其实漏了一个很重要的变量,就是资产本身价值的变动。所以上述的公式适合那些资产价值变化并不显著的资金池 (如 Curve 的稳定币资金池) 。如果增加了 资产价值变化 的变量,那资金池的收益率还需要减去资产本身贬值的价格,或加上额外的收益,计算起来是比较复杂的。
毕竟资产之间的价格会根据市场变化,波动可能会很剧烈。
以 Uniswap 这类均衡型的资金池为例,用户初始投入了 1 ETH 和 100 DAI 的流动性资金 (也就是市场价格为 1 ETH = 100 DAI) ,但是取回前 ETH 价格相比 DAI 大涨 (市场价涨为 1 ETH = 133.34 DAI) ,所以只能取回 0.9 ETH 和 120 DAI。
如果完全以 ETH 计价,用户初始投入的 2 ETH 已经跌为了 1.8 ETH (也就是亏损) ,如果完全以 DAI 计价,用户初始投入的 200 DAI 涨至 240 DAI (也就是盈利) 。相比之下,如果用户没有参与资金池,而是持有 2 ETH,此时他持有的资产价值以 DAI 来计算,为 266.67 DAI (最终还是亏损) 。
Crypto Español 频道博主 AlfaBlok 曾 专门撰文,对该风险做了更详细的分析。当 固定 某些参数的时候,以一个比较贴合实际的案例来说,在 1 ETH = 100 DAI、交易费为 0.3%、资金池大小为 30K ETH、月交易量为 20 万 ETH、持有期间为 1 年的前提下,对于 Uniswap 的 ETH/DAI 资金池,当 ETH/DAI 价格在 -80% 至 120% 左右的范围内波动,投入资金池的收益更高,否则的话,不如持有 ETH。
在整个收益的计算中,变量包括资金池 大小 、资金池 交易量 、 交易费率 、两个资产间的价格波动、以何种资产计价等等,所以这不是个很简单的资产管理投资工具,这或许会成为很多入门流动性提供者的门槛。
从 交易滑点 来看,Uniswap 的 AMM 模型更优。因为在 Uniswap 中,每个资金池都是按照 50% 和 50% 的比例设立的,所以其曲线 (X*Y=K) 就是一个标准的反比例函数 (只包含第一象限) 。
而在 Balancer 中,由于可以设定资金池中每个资产的占比,比如代币 A 与代币 B 以 85% 和 15% 的比例组合为一个资金池,该资金池的恒定乘积曲线如下。
蓝色的曲线
上文已经介绍过了 Uniswap 模型和 Balancer 模型的具体公式,根据公式就可以推导出 Uniswap 这种 1:1 的模型整体的滑点更低。或者你可以参考上图,在该资金池中,绿点是一个很明显的 分水岭 ,在绿点的左侧,代币 B (Y 轴) 需要付出极大的代价才可以兑换极少数量的代币 A (X 轴) 。
如果将该情况扩展到 Balancer 的多代币资金池中,情况也差不多。不过为了减少滑点,Balancer 的资金池也可以将资产的比例设置为 1:1 或 1:1:1 等,那这样就和 Uniswap 差不多了。
Balancer 有机会成为 Uniswap 很好的补充,或成为链上资产流动性的重要提供方。但这不是全部:Balancer 的另一个本质,是成为 指数基金 创建工具。
指数基金投资在传统金融领域是一种基础的投资策略,比如常说的标普 500 或沪深 300 就是两个大盘指数,基金公司可以根据指数创建对应的指数基金,追踪大盘走势。
由于这类被动投资基金费率低,且很多时候投资回报不输主动管理基金,所以是市场中主流且大众化的 被动投资方式 。
指数基金之父,先锋集团创始人 约翰·博格 曾说:「不管市场如何,指数基金给你合理的市场回报。」 巴菲特 曾表示:「通过定期投资指数基金,一个什么也不懂的业余投资者能够战胜大部分专业投资者。」
具体而言,指数基金由多种资产标的以相应的比例组合而成,用以追踪某些特定市场指标或资产价格的投资工具。正巧,这就是 Balancer 资金池的设定。
Balancer 每一个资金池支持最多 8 种资产,所以用户可以通过 Balancer 创建一个最多由 8 种资产组合而成的 指数基金 ,比如:
这样的例子还有很多。如果功能允许的话,Balancer 还可以用来发行 组合型基金或母基金 (FoF) ,只需要支持将各个指数基金的流动性代币再汇总至一个 Balancer 的资金池中即可。
因为指数基金有 再平衡 (rebalance) 的需求,而交易者有寻找最优汇率或套利的需求。将这两个需求匹配起来,就为市场提供了流动性,我们通过一个案例来理解整个过程。
假设目前的市场价格为 1 BTC = 10000 USDC,我们在 Balancer 上创建一个由 50% 比特币和 50% USDC 组成的基金,试图追踪美元以及比特币的价格。
如果在 5 天后,BTC 的市场公允价格涨了 20% 达到了 12000 USDC,那资金池的中的两个资产按照最新的市场价格,在资金池中的价值占比也就发生了相应的调整,分别为 55% 和 45%。
但是该资金池的兑换比例依旧保持在 1 BTC = 10000 USDC 的恒定乘积曲线上。对于外部交易者来说,资金池内价格与市场价格偏离, 外部交易者 是有利可图的。
根据恒定乘积模型来计算,套利者可以对资金池投入 500 美元换得 0.0476 个比特币 (相当于 1 BTC = 10,504 USDC) ,这个 BTC 的价格远低于市场 (1 BTC = 12000 USDC) ,用户可以把 0.0476 个比特币在公开市场上卖出,获得 571.2 USDC。
500 美元成本赚得 71.2 美元,单次收益率高达 14% ,一定会有很多套利者进入,压榨其中的套利空间,增加市场流动性。
最终市场价应该与该资金池内的兑换比例非常接近,而且这是一个 动态持续 的过程,所以该资金池的资产分布应该也会继续保持为初始化时的比例。
如果把上述的这个资金池看作是一个指数基金,那上面描述的这个市场自动调节机制,就相当于进行了指数基金的「 再平衡 」 (rebalance) ,恢复至初始化时设置的指数分配比例。常规的指数基金会按照日、周、月或者年的频率执行再平衡,但是在 Balancer 中,再平衡是 随时发生 的。
Balancer 协议如何记录每个流动性提供方投入的资金数额呢?发行「流动性代币」作为一种记账凭证。为了更好地描述「发行流动性代币」的过程,Balancer 还提出了名为「联合曲面」(Bonding Surface)的概念。
「联合曲面」一词来自于「联合曲线」,前者是后者的更通用版本,或许你也可以把「联合曲面」理解为「联合曲线」的 升级版 。
首先来了解一下 DeFi 领域大名鼎鼎的「联合曲线」,这是一种通过智能合约发行代币的方法。很多人可能以为「联合曲线」是一种特定的曲线,其实它只是一个概念,用以描述「代币发行量」和「代币价格」之间的关系,所以无论这两者之间的函数关系在直角坐标系中绘制成曲线还是直线,都可以统称为「联合曲线」。
为什么「代币价格」和「代币发行量」存在函数关系?那为什么比特币或以太坊的发行量和价格就不存在任何关联呢?
因为利用「联合曲线」进行的代币发行类似于 一级市场 ,不是二级市场。而且这个一级市场与项目方融资的一级市场不同,联合曲线发行代币的过程,是通过智能合约实现的。
就一个主要作用:发行「流动性代币」,作为投入流动性的记账凭证。当用户为 Balancer 的某个资金池提供相应的流动性后,Balancer 会按照投入资产的数量,配合上相应公式计算得出 用户投入的贡献 ,并发放相应的「流动性代币」,作为一种凭证。
如果在一段时间之后,该资金池没有发生任何变化,那用户就可以将之前的流动性代币换回相同资产。但如果在此期间该资金池收集了更多的 交易费 ,用户就可以将之前的流动性代币换回相同的资产外加 所分得的交易收益 。
称之为联合曲面,是因为联合曲线只涉及到两个代币,分别是投入的代币 A 和获得的代币 B。但是在 Balancer 的双资产资金池中,其实涉及到三个代币,分别是资金池中的代币 A 和代币 B,以及对应的「流动性代币」。
X 和 Y 轴代表了代币 A 和 B、Z 轴代表了流动性代币
联合曲面即是描述了资金池中 代币 A、代币 B 和 流动性代币 这三者关系的。不过如果 Balancer 的资金池超过两个代币,那联合曲面也将升级为更多维的曲面。虽然很难通过计算机绘制更多维的联合曲面,但是所有的公式和定义还是依旧有效的。
由 Uniswap 和 Bancor 发起的 AMM 概念,一直都束缚在现货交易这一种场景内。而 Balancer 是第一款将 AMM 应用场景拓宽的工具,它用实际行动证明了 AMM 不仅可以进行普通的 现货交易 ,还可以成为 指数基金管理平台 ,用来管理大规模的被动投资基金,并且是以去中心化的形式进行的。
现在也有越来越多的 DeFi 项目也在探索 AMM 的各种极限,比如 Curve 和 Shell Protocol 在优化 稳定币 AMM 算法, MCDEX 和 Futureswap 则是在探索 衍生品交易 领域,如 20 倍杠杆的永续掉期合约。
在目前阶段,以太坊的性能捉襟见肘,DeFi 生态可能是需要 AMM 等自动化工具减少链上提交频率省下网络性能的,但如果有一天以太坊 2.0 提升了上百上千倍的交易吞吐量,可能就是另一番场景了,或许会和现在的中心化交易所一样,做市商几乎是由 专业化的机构 主导的。到时候通用型 AMM 的场景在哪里,是 DeFi 生态现在就可以考虑起来的问题。