技术详解刚刚上线的 Fei Protocol 运作机制与代币经济模型
本文发布于链闻ChainNews,作者:钟捷,Zonff Partners 合伙人。
Rai stone 或 Fei stone 是密克罗尼西亚雅浦群岛当地居民制造并珍视的众多大型手工艺品之一,它们也被称为雅浦石钱。RAI (Reflexer Labs)和 FEI (Fei Protocol)。今天我们要了解的就是 Fei。
若想完整理解本文,请事先阅读完整的白皮书及项目公告,白皮书中已有的内容,若本文提及将会⼀笔带过,本文会在重点之处提出和白皮书中不⼀样的看法或对白皮书中的内容做进⼀步的延伸。
日程及基本概念介绍
Fei 协议基本介绍
「飞」协议的目标是保持 ETH/FEI 的交易价格紧紧跟随 ETH/USD 的价格,并保持市场的⾼流动性。FEI 采⽤的是⼀种新型的稳定币机制,我们把他称为 直接激励机制 来实现此目的。该机制利用动态的流动性挖矿奖励和基于 DEX 交易量的销毁惩罚机制来锚定到⼀个固定价格(1 美元),初始我们将在 Uniswap 启动这⼀协议,后期根据需要可以通过治理来增加并更新 其他的 DEX 平台和流动性激励。初始流通的「飞」 代币 FEI 只能通过以 ETH 计价的联合曲线来购买,这里我们把这些通过购买进来的 ETH 定义为协议控制资产价值 Protocol Controlled Value (以下简称 PCV)。
PCV 是完全由协议拥有并控制的锁定在智能合约中的资产,而不是之前⼴泛存在的 I OWE YOU (IOU)欠条,前者可以理解成 Total Value Locked (TVL)的⼀种更强大用例的子集。FEI 协议创世时将用PCV 全部资产为 Uniswap 上的 ETH/FEI 提供流动性,这是⼀种不需要超额抵押的「 流动性担保」 模型。
随着供应的增长,联合曲线的代币价格接近预⾔机的固定价格,当 Uniswap 价格高于锚定价时可确保产生套利机会,而如果 Uniswap 价格低于锚定价⼀段时间则 PCV 可以提供流动性来支撑其回到锚定价。
FEI 协议的治理代币我们称为 TRIBE 部落 代币,TRIBE 奖励给 Uniswap 的 FEI/TRIBE 的 LP 持有者。FEI 「飞」协议具有其他的稳定币协议不具有的核心优势,它保证了去中心化和可扩展,同时新的代币供应公平的分配给了新的需求⽅。PCV 为「飞」协议提供了更大的灵活性以保证项⽬的长期目标,FEI 代币持有者真正从⼀个高稳定度和高流动性的稳定币协议中受益。
PCV
PCV 是 FEI 协议中最重要的概念(此处篇幅较大)。 PCV 最明显的⼀个⽤例是,让协议成为 Uniswap 等自动做市商 (AMM) 的流动性提供者 (LP)。 在交易量足够情况下,该协议将从本质上控制交易对的汇率。 它可以使⽤其 PCV 来做市场的对手方来重新平衡价格,可以锁定或燃烧多余的代币。 举个例⼦飞协议拥有 90% 的流动性。 飞协议可以⾃动执⾏以下交易 :
- 收回所有流动性 (990 FEI 和 900 USDC)
- 将~5 USDC 换为~5 FEI(剩余流动性为~105/105 FEI/USDC)
- 以 1:1 的汇率再供应 895 FEI 和 895 USDC 上述交易的净效果是协议花费了 5 个 USDC 的 PCV 来恢复锚定价格,即 FEI 还是 1USDC 的汇率 (1000FEI:1000USDC)
当然白皮书举的这⾥例⼦,并未考虑 Uniswap AMM 算法的恒定乘积及滑点问题。(不考虑 gas)流程如下图所示。
图表 1.1 PCV 流动性占⽐0.9 初始价格 FEI/USDC=0.91,PCV 再供应维持汇率价格过程(不考虑 AMM 特征),来源:Zonff Partners
当考虑 Uniswap AMM 算法的恒定乘积及滑点时,可以看到是将 4.88 个 USDC 置换成了 5.12 个 FEI。
图表 1.2 PCV 流动性占⽐0.9 初始价格 FEI/USDC=0.91,PCV 再供应维持汇率价格过程(考虑 AMM 特征),来源:Zonff Partners
当 PCV 流动性占 Uniswap 总流动性⽐为 0.0465,我们可以看到,FEI 协议中所有的 USDC (46.54 个)被⽤
来进⾏再供应。 也就是此时 Fei 协议中的 USDC 被榨⼲了才能恢复 FEI/USDC=1 的汇率。
图表 1.3 PCV 流动性占⽐0.0465 初始价格 FEI/USDC=0.91,PCV 再供应维持汇率价格过程(考虑 AMM 特征),来源:Zonff Partners
图表 1.4 PCV 流动性占⽐0.0465 初始价格 FEI/USDC=0.5,PCV 再供应维持汇率价格过程(考虑 AMM 特征),来源:Zonff Partners
综上:我们可,看到协议最终都能够控制 PCV 使得 FEI/USDC 的价格恢复到 1。 但是起始的汇率不同,起始的 FEI 协议控制的 LP token 的占⽐不同,会使得协议达到⽬标汇率付出的代价不同,甚⾄具有不同的极限,超过这个极限值协议本身讲不可能调整斜率到 1,也就是 FEI 协议流动性击穿。
我们在不考虑以上⼿续费的情况下,将以上过程数学公式化。 来模拟推导 FEI 协议流动性击穿过程。
PCV 击穿过程
当满⾜(1.1.10) 关系时,意味着 PCV 中的⽤于维持⽬标汇率 Pend 的 Z 已经消耗殆尽。 FEI 协议将不能维持⽬标汇率,此时会造成 PCV 击穿,也就是不能再维持 FEI 与 USDC 的价格。 FEI 的价格将取决于 Uniswap 中的 FEI
的数量和 ETH 数量,此时⾮常容易造成踩踏,也就是外部的涌⼊FEI 将会继续兑换 ETH。 使得 FEI 的价值下跌得,⽽FEI 的价值下跌这⼀信号会加速⼈们恐慌性的抛出⼿中的 FEI,使得 FEI 的价值进⼀步螺旋下降。
协议设计机制
⻜协议有⼏个核⼼组件 :Fei core (内核)、 Fei stablecoin (稳定币)、 bondingcurve(s) 联合曲线、PCV Deposits PCV 存⼊、 PCV Controllers PCV 控制器、 Fei IncentivesFEI 激励、 TRIBE governance token TRIBE 治理代币和 DAO 组织。
图表 1.5 FEI 协议设计机制来源:FEI⽩⽪书
⻜协议通过 TRIBE Token 来管理整个系统的运转,在 Uniswap 上跑的 FEI 的基础架构核⼼由 FEI 内核、 FEI 稳定币和价格预⾔机组成;激励系统有 Staking Pool 和激励的智能合约构成;PCV 协议控制资产值由联合曲线,PCV 的存⼊和 PCV 控制器所组成。
Fei 内核
Fei Core 是 Fei 协议的访问控制中⼼,它定义了下⾯的⻆⾊以及每个⻆⾊可以做什么,它还控制哪个合约对应哪个⻆⾊,各个⻆⾊如下:
- 挖矿 Minter-铸币 FEI 到任何地址烧毁 Burner-从任何地址燃烧 FEI
- 控制 Controller-从初始存款移动 PCV 的进出
- 治理 Governor-可以授予 / 撤销任何⻆⾊,并升级协议组件,TRIBE and DAO⼀节进⼀步讨论。
FEI 代币
FEI 是⻜协议的锚定稳定币,遵循 ERC-20 标准,FEI 的供应是⽆上限的,Minter 和 Burner 合约通过联合曲线和交易激励控制其发⾏。 FEI 代币有⼀些⾮标准的 ERC-20 功能,但仅针对部分交易。 有动态激励会给到涉及到想要给激励的地址,激励地址是⻜协议想要激励某些⾏为的特定合约地址。 激励合约控制着每次激励的流动⽅向和额度。 激励合约被指定为铸币 Minter 和销毁 Burner,如果⽤户将 FEI 发送到⼀个激励地址,他们的余额将受到铸币 Minter 或销毁 Burner 过程影响⽽产⽣变化。 ⻜协议的主要激励地址在 FEI/ETH uniswap 池。
- FEIp : 协议控制的 FEI,部署在 LP 池或不同 PCV 控制的其他池⼦
- FEIb : 联合曲线分配给⽤户的 FEI,每个联合曲线会计算各⾃的数量
- FEIu : ⽤户控制的 FEI,总供应量 FEI 减去少 FEI
联合曲线
图表 1.6 FEI 联合曲线来源:FEI⽩⽪书
⼀旦联合曲线达到 Scale 阶段规模,它将固定汇率在 1 美元+b。 b 是⼀个缓冲值,使平均价格保持在 1 美元左右。 当任何⼆级市场价格超过 $1 + b 时,就存在⽆⻛险盈利机会。 套利者可以在联合曲线购买 FEI,然后在⼆级市场上出售获利。 在 b = 0 时,价格⽅差⼤部分低于 1 美元。 通过添加缓冲区 b(最初设置为 1%),$1 以上也有⼀些价差空间。 考虑这种价格调整机制,定价函数修改为
对联合曲线等价变换
对(1.6.1)进⾏变形得到单位 FEI 的 USD 价格为
对联合曲线进⾏积分,以确定从给定供给量 r 到另⼀供给量 s 所需的 USD 数量 Q(USD):
变换的后的联合曲线以 USD 计更加直观。
FEI 激励
我们将在 FEI 代币⼀节讨论 FEI 激励合约的机制。 本节主要讨论激励合约如何维持锚定汇率。 最初只有单⼀激励的 Uniswap ETH/FEI 池,如果价格低于锚定汇率,激励合约将向交易者提供 FEI 铸币,下⼀个买⼊FEI 的交易者将获得该铸币,作为协助恢复锚定价格的奖励。 这⼀激励措施是与锚定价格的距离的时间加权平均。
销毁在官⽹公中有更新为:
在锚定价格以下时任何波动应该导致净通缩才对,此时任何与购买有关的激励都不应超过为达到那个价格 销毁的数量,这样就导致代币的通缩。 将总激励更新为:
每次 Uniswap 交易恢复锚定价格时,时间变量 t 将重置为 0。 如果⼀笔交易部分接近了锚定价格,t 将乘以⼀个 mend/mstart 系数。 若按照锚定价格需要交易量靠近了 40% 时间变量 t 减少 40%,t 会以速率 r 恢复增⻓。
PCV 控制器
调整权重意味着协议利⽤其控制的 PCV 将 ETH/FEI 的现货价格拉回到锚定价格。 在假设交易者不愿⽀持拉回锚定价格的不利条件下,这⼀点很重要,即使在 I(x,t) = B(x)(销毁和激励⼀样的状态)的最⼤时间权重下,FEI 的激励也可能不够。 在这个情况下协议将利⽤PCV 控制器把价格价格拉回到锚定价格。 具体过程详⻅下文。
早期参与 FEI3 个阶段
创世阶段
任何⼈都可以通过在 DApp 承诺为 FEI 签署 ETH 来获得 FEI (按照 ETH 份额并⾮按照联合曲线)。 每个⼈在创世阶段获得的 FEI 的价格相同。 联合曲线创世⽬标发⾏100,000,000 FEI,起价 0.50 美元。 参与创世的成员可以⽀付的最⾼价格是 $1.01/FEI。
FEI 和 TRIBE 将在 2021 年 4⽉3⽇下午 12:01(太平洋时间) 在创世结束时发布。 北京时间 4⽉4⽇凌晨 4 点。
IDO
IDO 的作⽤是为 TRIBE-FEI 提供初始流动性,为 Pre-Swap 做准备。 IDO 的上市价格确定如下 : 取 TRIBE 在 Genesis 的完全稀释估值,并将其设为在 Genesis 联合曲线上购买的 FEI 数量。 因此,在 IDO 中 20%TRIBE 将与 Genesis 创世 20% 的 FEI⼀起放⼊Uniswap 提供 Tribe-FEI 流动性,IDO 是为了 Pre-Swap 做准备和⽤户⽆关。
Pre-Swap
为防⽌在最初的 FEI-TRIBE 池部分⼈中抢先交易。 FEI 协议允许⽤户选择直接为 TRIBE 交换他们的 FEI 的 Genesis 分配。 ⽤户可以 Pre-Swap 他们 从 Genesis 任意百分⽐来的 FEI 交换 TRIBE。 预交换将参与者在 Genesis 获得的 FEI,并在启动流动性池初始化时将其交换给 TRIBE。 Pre-swap 的作⽤是防⽌抢跑,使得⼤家在 Pre-Swap 之后的得到的 TRIBE 价格⼀致。 操作也在 DApp 中完成。 创世阶段完成后,Pre-Swap 紧接着完成。
常见的概念误区
创世阶段哪⼀天进去协议都是⼀样的。
联合的曲线的作⽤是根据 ETH 总量对 FEI 进⾏定价最后定价的结果取决于创世结束时 ETH 的价格和 ETH 的数量,并⾮像资⾦盘⼀样。
IDO 和 Pre-Swap 有区别。 IDO 是为 Pre-Swap 提供价格发现和⼀部分流动性。
Pre-Swap 完成时,每个⼈换取 Tribe 的价格都是⼀致的。
Pre-Swap 完成后 创世空投的 Tribe 才可以进⾏交易。
TRIBE 经济模型介绍分析
图表 2.1 TRIBE 经济模型介绍,来源:Zonff Partners
可以⽐较容易的看到 TRIBE 的 Staking APY 相较于传统的流动性挖矿项⽬⽽⾔是⾮常低的。 第⼀年的 APY 在 10%-20% 左右。 短期内并不能在初期 TRIBE 本身币价让⼤家 fomo 买 TRIBEStakeing 强烈⽀撑,但是。
FEI 币价定价过程
根据 1.6 节和 1.7 节,我们已经知道了创世过程中的 ETH 总价值决定了 FEI 的具体发⾏数值。
⽬标发⾏的 FEI 数量为 1 亿个。 起始发⾏价为 0.5。 最⾼发⾏价为 1.01 美元。
0.5 FEI/USD 初始发行过程
FEI 项⽬⽅采取的是⽅式⼀⽽⾮⽅式⼆,这样的发⾏理论上会让 FEI 在联合曲线中拥有较低的定价,也就是需要更多价值的 USD 才能触碰到 1.01 价格。 但是实际上那种⽅式都会让联合曲线触碰到达到 Q(USD)/1.01 的定价。
沿着⽅式⼀,我们继续推导,当创世池中有价值多少 USD 的 ETH 的时候,FEI 的汇率会变成 1.01 呢? S=100,000,000 K=1/3 S=33,333,333.33 代⼊(3.1.3)中,令
解得:
当 Q=223,601,552USD 时,FEI 的联合曲线定价为 1.01USD
同理⽅式⼆下,当 Q=167,701,164USD 时,FEI 的联合曲线定价为 1.01USD。
若从 0USD 开始 FEI 的创世发⾏
从 0USD 开始创世发⾏,记做⽅式三得到创世过程最后得到的 FEI 数量为 y3 时
同理可以解得当 Q= USD,FEI 联合曲线的定价为 231,817,725 USD。
FEI 为何要从 0USD 开始 FEI 的创世发行
其实个⼈认为也没有太⼤的必要。
方式⼀:Q=223,601,552USD ,FEI=1.01USD, ⽅式三:Q=231,817,725 USD ,FEI=1.01USD。
我们知道⽅式三相当于把联合曲线拉得更平。
我们已经知道了 FEI 的发⾏数量 Y 和存⼊的 ETH 价值 Q(USD) 之间的函数关系时。 Q(USD)/Y 的经济意义就是联合曲线中⽣成单位 FEI 需要的 USD 价值⼤⼩。
可以通过直观的绘图来看到项⽬⽅这么做的原因。 万⼀没有没有达到⽬标中 2.2 亿 USD 价值 ETH 存⼊时。FEI 的成本在⽅式 3 中具有较好的效果。 但是我们知道对与项⽬⽅最有利的其实是⽅式⼆。 然⽽项⽬⽅并未发现该⽅案。
我们在同⼀直⻆坐标系下,以 Q(USD) 为横轴轴,以 Q(USD)/Yn 为纵轴得到如下的相关关系可以看到 Q(USD) 和 FEI 之间的关系。
图表 3.1 Q(USD) 不同联合曲线 FEI 创世价格。来源:Zonff Partners
烧伤函数与激励函数理解分析
烧伤函数
我们知道当 FEI 低于 1USDC 的时候,⽆论是向 Uniswap 中发送 FEI 还是添加流动性,都会先被销毁⼀部分 FEI 才能够完成后续的操作。 在 1.8 节中,我们对公式 (1.8.3) 进⾏变形。
可以看到式 (4.2) 和式 (1.8.2)⾮常接近。
图表 4 FEI 价格与烧伤,数据来源:Zonff Partners
激励函数
当 FEI 价格低于 1USDC 时,在 Uniswap 中提供 ETH 买⼊FEI 的⼈将获得奖励,这⼀奖励的上限是卖出 FEI 烧 伤,这样做是为了保证 FEI 协议的净通缩。
当激励函数和烧伤函数值相等时,意味着与购买 FEI 相关的激励达到了极限,⽽此时价格仍然没有达到锚定价格,此时就就需要 PCV 使⽤协议拥有的 ETH-FEI 进⾏再平衡操作。 再平衡操作在 1.2 节有详细演示。 PCV 是有极限位置的,也就是存在理论上的穿仓可能。
IDO 与 Pre-Swap 关系及对 Tribe 价格的影响
IDO 是 Intial Dex Offering.IDO 的作⽤是为 TRIBE-FEI 提供初始流动性,为 Pre-Swap 做准备。 IDO 的上市价格确定如下 : 取 TRIBE 在 Genesis 的完全稀释估值,并将其设为在 Genesis 联合曲线上购买的 FEI 数量。 因此,在 IDO 中 20%TRIBE 将与 Genesis 创世 20% 的 FEI⼀起放⼊Uniswap 提供 Tribe-FEI 流动性,IDO 是为了 Pre-Swap 做准备和⽤户⽆关。
图表 5.1 Pre-Swap 测算来源:FEI 社区
IDO 及 Pre-Swap 计算关系式
IDO FEI = FEI generated by Genesis * IDO TRIBE % IDO TRIBE = TRIBE supply * IDO TRIBE %Pre-swapped FEI =
FEI generated by Genesis * Pre-swap %TRIBE out for Pre-Swap = IDO TRIBE-(IDO TRIBE * IDO FEI)/ (IDO FEI
+ Pre-swapped FEI) avg TRIBE price per FEI = Pre-swapped FEI / TRIBE out for Pre-Swap
Pre-swap% 和 Value Committed 越⼤。 那么 Tribe 在 Pre-Swap 阶段的价格就会越⼤,注意 Pre-Swap 的价格是⽤户获得 Tribe 的成本,此价格越⼤,⽤户成本越⼤,⻛险越⾼。 Tribe 的持有⻛险和 Pre-swap% 和 Value Committed 成正⽐。
我们假设 Value Committed 在 $250,000,000-2,500,000,000 之间。 Pre-swap%⽐例在 10%-90% 之间 Tribe 的价格⾛势
代⼊具体数据到 IDO 及 Pre-Swap 计算关系式 我们推到 Tribe 的 Pre-Swap 成本为:
avg TRIBE price per FEI = (Value Committed/1.01)*Pre-swap% /[200,000,000-200,000,000* (Value Committed/1.01)*0.2/
((Value Committed/1.01)*0.2 +(Value Committed/1.01)*Pre- swap%)]
用Python 作三维图可得:
图表 5.2 TRIBE 价格-Preswap_percentage-总存⼊ETH 价值与 TRIBE 关系
建模所用到的代码如下所示:
import matplotlib as mpl
import numpy as np
import matplotlib.pyplot as plt
Value_Committed = np.linspace(250, 2500, 19)
Preswap_percentage = np.linspace(0.1, 0.9, 8)
Value_Committed, Preswap_percentage = np.meshgrid(Value_Committed
, Preswap_percentage)
Value_Committed[:2].round(1)
Tribe_FEI = (Value_Committed/1.01*Preswap_percentage)/ (200-200*V
alue_Committed*0.2/(Value_Committed/1.01*0.2+Value_Committed/1.01
*Preswap_percentage))
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure(figsize=(10, 6))
ax = fig.gca(projection='3d')
surf = ax.plot_surface(Value_Committed, Preswap_percentage, Tribe
_FEI, rstride=2, cstride=2,
cmap=plt.cm.coolwarm, linewidth=0.5,
antialiased=True)
ax.set_xlabel('Value_Committed(million$)')
ax.set_ylabel('Preswap_percentage')
ax.set_zlabel('Tribe_FEI_price')
fig.colorbar(surf, shrink=0.5, aspect=5);
通过公式推理,我们知道在 Pre-Swap 中被买走的 TRIBE 是⼀个只和 Pre-Swap比例有关系的数字。 和存入ETH 价值无关。