Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
在Frax生态系统中如何质押各种机会的指南
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
调整版 ERC-20 合约,代表 FXS 代币,用于与 FRAX 稳定币相关的质押和治理活动。
Arbitrum
0x9d2F299715D94d8A7E6F5eaa8E654E8c74a988A7
Aurora
0xBb8831701E68B99616bF940b7DafBeb4CDb23e0b
Avalanche
0x214DB107654fF987AD859F34125307783fC8e387
Base (LayerZero)
0x23432452B720C80553458496D4D9d7C5003280d0
Blast (LayerZero)
0x23432452B720C80553458496D4D9d7C5003280d0
Boba
0xae8871A949F255B12704A98c00C2293354a36013
BSC
0xe48A3d7d0Bc88d552f730B62c006bC925eadB9eE
Ethereum (native)
0x3432B6A60D23Ca0dFCa7761B7ab56459D9C964D0
Ethereum (LayerZero)
0x23432452B720C80553458496D4D9d7C5003280d0
Evmos
0xd8176865DD0D672c6Ab4A427572f80A72b4B4A9C
Fantom
0x7d016eec9c25232b01F23EF992D98ca97fc2AF5a
Fraxtal (native)
0xFc00000000000000000000000000000000000002
Fraxtal (LayerZero)
0x64445f0aecc51e94ad52d8ac56b7190e764e561a
Harmony
0x0767D8E1b05eFA8d6A301a65b324B6b66A1CC14c
Metis (LayerZero)
0x23432452B720C80553458496D4D9d7C5003280d0
Mode (LayerZero)
0x64445f0aecc51e94ad52d8ac56b7190e764e561a
Moonbeam
0x2CC0A9D8047A5011dEfe85328a6f26968C8aaA1C
Moonriver
0x6f1D1Ee50846Fcbc3de91723E61cb68CFa6D0E98
Optimism
0x67CCEA5bb16181E7b4109c9c2143c24a1c2205Be
Polygon
0x1a3acf6D19267E2d3e7f898f42803e90C9219062
Sei (LayerZero)
0x64445f0aecc51e94ad52d8ac56b7190e764e561a
Solana
6LX8BhMQ4Sy2otmAWj7Y5sKd9YTVVUgfMsBzT6B9W7ct
X-Layer
0x64445f0aecc51e94ad52d8ac56b7190e764e561a
https://docs.openzeppelin.com/contracts/2.x/api/token/erc20#ERC20
https://docs.openzeppelin.com/contracts/3.x/api/access#AccessControl
FRAX 合约地址。
FXS初始供应。
FXS最大供应。
加入 DAO 组织所需的最低 FXS 量。
合约Owner地址。
oracle合约地址。
时间锁地址。
FRAX 合约实例。
借鉴自Compound Finance。用于治理投票。
在特定区块下,给定地址的投票权列表。
某个地址的Checkpoint计算。
setOracle
Change the address of the price oracle.
setFRAXAddress
Set the address of the FRAX contract.
setFXSMinDAO
Set minimum FXS required to join DAO groups.
mint
Mint new FXS tokens.
pool_mint
This function is what other FRAX pools will call to mint new FXS (similar to the FRAX mint).
pool_burn_from
This function is what other FRAX pools will call to burn FXS.
transfer
Transfer FXS tokens.
transferFrom
Transfer FXS tokens from another account. Must have an allowance set beforehand.
getCurrentVotes
Gets the current votes balance for account
.
getPriorVotes
Determine the prior number of votes for an account as of a block number. Block number must be a finalized block or else this function will revert to prevent misinformation.
_moveDelegates
Misnomer, from Compound Finance's _moveDelegates
. Helps keep track of available voting power for FXS holders.
_writeCheckpoint
From Compound Finance's governance scheme. Helps keep track of available voting power for FXS holders at a specific block. Called when a FXS token transfer, mint, or burn occurs.
safe32
Make sure the provided int is 32 bits or less, and convert it to a uint32.
safe96
Make sure the provided int is 96 bits or less, and convert it to a uint96.
add96
Add two uint96 integers safely.
sub96
Subtract two uint96 integers safely.
getChainId
Return the Ethereum chain ID the contract is deployed on
VoterVotesChanged
Emitted when a voters account's vote balance changes
FXSBurned
Emitted when FXS is burned, usually from a redemption by the pool
onlyPools
Restrict actions to pool contracts, e.g. minting new FXS.
onlyByOracle
限制只有预言机可以执行的操作,例如设置 FRAX 和预言机地址。
用于控制FXS释放Gauge流动性权重系统
“gauge”是一种收益耕种智能合约,它在一种资产(通常是LP代币、金库代币、NFT头寸等)中吸收存款,并以FXS(可能还有其他)代币奖励存款用户。Gauge合约可以采用多种形式的存款,如FRAX贷款存款(Aave中的aFRAX, Compound中的cFRAX, Fraxlend中的fFRAX), LP代币(Curve LP代币或Fraxswap LP代币),甚至NFT(如Uniswap v3 NFT头寸)。Gauge用于激励对协议有利的特定“策略”和行为,如增加FRAX贷款,加深某些交易对的流动性,或增加另一个项目之间的合作/集成。Gauge完整列表可以在这里找到: https://app.frax.finance/gauge
分配FXS给每个 gauge 的策略称为它的“gauge权重”。他们可以在多个gauges或单一gauge上分配投票权。这使得协议的长期用户veFXS持有者可以控制未来的FXS排放率。每个veFXS等于1票。
此外,Gauge系统降低了那些将大部分奖励卖出的FRAX交易对的影响,因为这些LP将没有veFXS继续为他们的流动性池投票。该系统非常青睐那些不断将自己的奖励用于veFXS,以增加其流动性池的Gauge权重。从本质上讲,FRAX平衡了veFXS持有者的激励措施,使得最长期的FXS持有者控制FXS释放的方向,直到整个社区的FXS分配完成。每周三太平洋标准时间下午5点,Gauge权重会更新一次。这意味着每个池子的FXS排放速率在一周内是不变的,然后在每个星期三更新到新的速率。任何用户都可以每10天改变他们的权重分配。
由于FXS Gauge排放量是固定的,并且每年减半,在几年后,可以通过治理来决定是否分配部分协议现金流或铸造新的FRAX来衡量奖励。因此,veFXS质押者可以自信地质押最长时间4年,因为他们知道Gauges程序不是临时的,不会被弃用。目前,Gauges策略是激励Frax生态系统增长的重要组成部分。
LP Gauge: LP gauge是最常见的gauge合约类型,以ERC20 LP代币作为存款。大多数Gauge鼓励Fraxswap, Curve, Uniswap v2等的LP头寸。通常,这些Gauge支持在每一个LP头寸中的1FRAX匹配4veFXS,则可以获得2倍veFXS加成,以及每额外锁1年,可以获得2倍锁仓加成(除非另有说明)。 Gauge:贷款gauge通常用于激励货币市场中的FRAX贷款活动,如Aave, Fraxlend, Compound等。存款代币是aFRAX, fFRAX, cFRAX等。贷款Gauge通常不提供锁仓时间加成,但每4个veFXS提供1个FRAX贷款最多可以获得2倍veFXS加成。 Uniswap V3 Gauge: Uniswap v3 gauges 将NFT LP仓位作为存款。这些gauge在发布时预先配置,以在特定的刻度范围内接受NFT lp,以仅激励治理批准的确切集中的流动性头寸。这些gauge的LP中,如果每1 FRAX提供4veFXS则可以获得2倍veFXS加成,并为1-3年锁定提供额外的2x-3x时间锁仓加成(每个Gauge在其相应的质押页面)。
金库Gauge:金库Gauge将金库策略代币作为存款,如Stake DAO或Yearn Finance金库代币。金库代币通常如果每1 FRAX提供4veFXS则可以获得2倍veFXS加成,并为1-3年锁定提供额外的2x-3x时间锁仓加成(每个gauge都有说明)
在Gauge权重合约中持有LP代币的用户将根据他们拥有的veFXS的数量进一步提高APR。此外,锁定期LP代币到质押合约中的用户在一个特定期间将在顶部进一步获得加成,从而使两个加成叠加以获得最大的APR。由于 Gauge权重每周都会改变,如果Gauge权重改变,锁定在Gauge中的LPs不会被解锁。请参阅veFXS规范页面,了解如何计算加成。每个Gauge策略都可以有不同的加成条款,这取决于它所激励的最终行为。例如,由于FRAX贷款不提供锚定稳定性,因此不需要额外奖励,继而该策略只需要非常低的锁仓加成。然而, Curve、Uniswap或Fraxswap流动性gauge可能会提供较高的时间锁仓加成,因为锁定流动性有助于FRAX在波动期间保持坚挺。
FRAX Gauges允许veFXS质押者直接控制任何集成FRAX池的FXS释放速率。除了要求使用FRAX稳定币并且通过Gauge治理投票之外,对于哪些协议或者交易对没有任何限制。虽然Uniswap V3稳定币区间Gauge将是首次亮相的Gauge(以及Curve的FRAX3CRV池),任何FRAX池(包括跨链池)可以在未来添加为一个Gauge。与Curve相比,veFXS Gauge系统完全支持未知的交易对,因为FRAX Gauges仅要求池子中有FRAX,而Curve要求所有的Gauge系统必须有Curve池。本质上,veFXS Gauges是Defi的货币层Gauge 权重,而Curve Gauge则是DEX层Gauge权重。由于veFXS质押者可以控制FXS释放到任何集成FRAX的协议中,许多协议和社区可能会为控制算法稳定币协议的未来现金流而竞争。
值得注意的是,在任何智能合约(非EOA钱包)上质押veFXS都必须通过治理投票列入白名单。有关持有veFXS的完整好处列表,如AMO利润和收益耕种加成,请参阅veFXS的完整说明。
初始的 Frax 框架
⚠️ 这里解释的原始铸造/赎回模型已被淘汰,取而代之的是后来的机制(从 V2 开始),仅供历史和信息参考 ⚠️ Frax 于 2020 年 12 月 20 日首次推出。在 Frax V1 中,只有一个铸造/赎回的 AMO,即分数算法稳定机制。我们将其称为基础稳定机制。您可以在中阅读有关此机制的内容。
在 Frax V1 中,协议的抵押比例会根据 FRAX 稳定币的市场价格动态再平衡。如果 FRAX 的价格高于 1 美元,则抵押比例(CR)会下降(“去抵押化”)。如果 FRAX 的价格低于 1 美元,则 CR 会增加(“再抵押化”)。该协议始终按照 1 美元的固定汇率尊重 FRAX 的赎回,但由于 CR 是动态的,因此必须通过铸造 Frax Share 代币(FXS)来资助 FRAX 的赎回。例如,在 85% 的 CR 下,每赎回 1 个 FRAX 用户将获得 0.85 美元的 USDC 和 0.15 美元的铸造 FXS。协议直接返回给赎回者 0.15 美元的 FXS,还是以原子方式在链上出售 FXS 以返回全额 1 美元的抵押,这只是一个微不足道的实现细节——经济实现是相同的。
均衡—每次当FRAX = $1 不改变抵押率
从根本上说,Frax 协议是一个银行算法,根据市场对 FRAX 的定价调整其资产负债表比例。抵押比例仅仅是协议资本(抵押)与其负债(FRAX 稳定币)之间的比率。市场通过在比率过低时出售/退出稳定币(从而略微将价格压低到 1 美元以下)或通过持续需求 FRAX(从而略微将价格推高到 1 美元以上)来“投票”确定这个比率。去抵押化和再抵押化帮助协议找到一个均衡的储备要求,以保持紧密的固定汇率并最大化资金创造的资本效率。根据定义,该协议铸造市场所需的确切数量的 FRAX 稳定币,且其抵押比例与市场对 1 美元 FRAX 的需求相匹配。
完全链上、无信任和去中心化的治理,基于 Compound/OpenZeppelin Governor 控制 Gnosis Safes
在 Frax 治理实施之前,Frax 协议的操作并未完全去中心化。大多数操作由关键的 Frax 利益相关者通过 Gnosis Safes 执行。隐含的信任假设是,Frax 利益相关者不会恶意行为,且外部参与者不会迫使利益相关者执行恶意操作。随着 Frax 治理的引入,这一信任假设被消除,Frax 协议由 veFXS 持有者通过链上治理控制。
⚠️(截至 2024 年 10 月 2 日)在迁移过程中,投票将通过 Snapshot 在 Frax 自有的 链上进行。⚠️
Frax 治理的最终状态将全面控制所有主要的安全库,让 veFXS 持有者对协议中的一切拥有最终决定权。veFXS 持有者可以对所有提案进行投票,可以在达到法定人数并通过的情况下,替换 Frax 团队成员作为底层安全库的所有者并执行任何行动。
Frax 团队成员可以通过 FraxGovernorOmega 创建乐观提案,这些提案默认成功。通常情况下,提案默认失败,但在 Frax 治理中,veFXS 持有者也可以对乐观提案进行支持或反对的投票。如果一个乐观提案达到法定人数且反对票多于支持票,该提案将失败。
去抵押化—每次当 FRAX > $1 时,降低一定量 的抵押率
再抵押化—每次当 FRAX < $1 增加一定量 的抵押率
锁定的FXS,提供投票权和其他好处
veFXS是基于Curve的veCRV机制的一种锁仓和收益系统。用户可以将他们的FXS锁定最多4年,以获得四倍的veFXS(例如,锁定100个FXS 4年可得到400个veFXS)。veFXS不是可转让代币,也不在流动市场上交易。它更像是一个基于账户的积分系统,表示钱包中锁定FXS代币在协议内的锁定时间。
随着代币接近锁定到期,veFXS余额线性减少,最终接近于每个FXS对应1个veFXS,当剩余锁定时间为零时。这鼓励长期质押和活跃的社区。
智能合约和DAO需要通过治理进行白名单认证,以质押获得veFXS。只有外部拥有的账户和普通用户钱包可以直接调用veFXS质押锁定功能。为了将veFXS功能集成到您的协议中,请通过提交白名单提案,在gov.frax.finance上与FRAX社区开始治理流程。
每个veFXS在治理提案中拥有1票。将1个FXS质押至最大时间4年,将生成4个veFXS。这个veFXS余额将在4年后逐渐减少到1个veFXS,届时用户可以将veFXS兑换回FXS。在此期间,用户还可以通过锁定FXS、延长锁定结束日期或两者兼而有之来增加他们的veFXS余额。需要注意的是,veFXS不可转让,每个账户只能有一个锁定期限,这意味着同一个地址不能将某些FXS代币锁定2年,然后再将另一组FXS代币锁定3年等。每个账户的FXS必须具有统一的锁定时间。
持有veFXS将使用户在获取某些收益耕种奖励时获得更多权重。所有通过协议直接分配的农耕奖励都可以获得veFXS的提升。由其他协议(如Sushi Onsen)推广的外部收益耕种通常不适用于veFXS提升,因为它们独立于Frax协议本身。其他协议可以选择通过Frax的量表农耕合约分配他们的奖励,以获取veFXS提升功能。FXS量表农耕合约支持每个量表最多4种不同代币的奖励。
用户的veFXS提升不会增加奖励的整体发行量。提升是一个附加的提升,将根据每个农民的veFXS余额添加到他们的收益中。每个LP对的veFXS提升可能会因社区的合作协议和治理投票而有所不同。每个Gauge将显示可用提升的具体条款。
收益耕种提升是以每1 FRAX的LP存款代币对应的veFXS比例进行的。例如,一个FRAX-IQ Gauge的2倍提升比例为每1 FRAX 10个veFXS,意味着拥有50,000个veFXS的用户在包含5,000 FRAX(总价值10,000美元)的LP头寸上获得2倍提升。
目前大多数Gauge提供2倍的收益提升,要求为4个veFXS对应1个FRAX。
Frax协议的主要现金流分配机制是向veFXS持有者分配。来自AMO、Fraxlend贷款、Fraxswap费用等的现金流通常用于从市场回购FXS,然后分配给veFXS质押者作为收益。发行率根据协议盈利能力、现金流来源、FXS市场价格和治理行动而有所不同。
有关veFXS收益的历史视图,可以在此查看: https://app.frax.finance/vefxs。
veFXS系统是模块化和多功能的。未来,它可以扩展以投票AMO权重,在新的地方/功能中获得额外收益,并帮助为Frax Finance经济创造长期一致性。
这将为Frax整体带来好处,包括:
通过veFXS将投票权分配给长期持有FXS的用户。
激励Gauge收益耕种用户质押FXS。
允许DAO和其他项目建立大规模和长期的veFXS头寸,并参与Frax治理。
为FXS创造类似债券的效用,并为质押的FXS创建基准APR利率。
一个为可组合、自治的中央银行模块提供框架的体系
第二版 (V2) FRAX 的扩展着重于分数-算法稳定性的概念,提出了“算法化市场操作控制器”(AMO)的想法。AMO 模块是一个自治的合约,执行任意的货币政策,只要它不改变 FRAX 的挂钩价格。这意味着 AMO 控制器可以通过算法进行公开市场操作(正如名称所示),但它们不能随意凭空铸造 FRAX,从而打破挂钩。这保证了 FRAX 的基础层稳定机制的纯粹性和不受影响,这也是使我们的协议独特的核心,并激励了其他较小的项目。
我们可以将 V1 机制推广到任意复杂的市场操作中,创造一个图灵完备的稳定机制设计空间。因此,每个 AMO 可以被视为一个中央银行货币拼图模块。每个 AMO 都有三个特性:
去抵押化 - 策略中降低抵押率(CR)的部分。
市场操作 - 在平衡状态下运行的部分,不改变抵押率。
再抵押化 - 策略中提高抵押率的部分。
通过清晰定义的上述框架,我们现在可以很容易地看出 Frax V1 是最简单形式的 AMO。它本质上是任何可能的 AMO 的基本情况。在 V1 中,去抵押化允许货币供应扩展,过剩的抵押品流向销毁 FXS。再抵押化铸造 FXS 以提高抵押率并减少负债(赎回 FRAX)。
基础层的分数-算法机制始终像以前一样运行。如果 FRAX 价格高于挂钩,抵押率将下降,FRAX 供应像往常一样扩展,AMO 控制器继续运行。如果抵押率下降到挂钩价格滑动的地步,AMO 具有预定义的再抵押化操作来提高抵押率。系统将像以前一样再抵押化,随着协议负债(稳定币)的赎回,抵押率上升以恢复到挂钩水平。这使得所有 AMO 都能够在市场力量的输入下运行,并保留 V1 基础案例的完整设计规范。
AMO 模块使 FRAX 成为最强大的稳定币协议之一,因为它创造了最大的灵活性和机会,而不会改变使 FRAX 成为算法稳定币领域领导者的基础稳定机制。AMO 模块打开了一个模块化设计空间,允许不断的升级和改进,而不会破坏设计的优雅性、可组合性或增加技术复杂性。最后,由于 AMO 是一个完整的“盒中机制”,任何人都可以提出、构建和创建 AMO,只要它们遵守上述规范,便可通过治理部署。
用于铸造和赎回 FRAX 的合约,以及回购多余抵押品。
⚠️ 此池已被弃用,取而代之的是 FRAX V2 及更高版本的机制 ⚠️
Frax Pool 合约由治理系统部署和管理,这意味着在治理提案成功并执行后,可以随时添加新的抵押类型。当前池为 USDC,未来池将开放更多的抵押类型。
USDC: 0x3C2982CA260e870eee70c423818010DfeF212659
Frax Pool 是一个智能合约,通过抵押品向用户铸造 FRAX 代币,或通过赎回发送到合约中的 FRAX 代币来返回抵押品。每个 Frax Pool 接受不同类型的抵押品。Frax Pools 可以采用任何类型的加密货币,但由于其价格波动较小,稳定币的实现最为简单。Frax 旨在接受任何类型的加密货币作为抵押品,但在初始阶段优先选择低波动性的池,因为它们不会导致抵押比率剧烈变化。有一些有前景的新项目,如 Reflex Bonds,能够抑制其基础加密资产的波动性。未来,Reflex Bonds 可能成为理想的 FRAX 抵押品。新的 Frax Pools 可以通过 FXS 治理投票添加。
每个池合约都有一个池上限(可存储以铸造 FRAX 的最大抵押品)和资产的价格馈送。创世时的初始 Frax Pool 将是 USDC(美元硬币)和 USDT(泰达币),因为它们具有较大的市值、稳定性,并且在以太坊上可用。
这些池通过对 FRAX 稳定币(FRAX)和 FRAX 股份(FXS)合约的授权调用来铸造和赎回协议代币。
该合约有 3 个铸造功能:mint1t1FRAX()
、mintFractionalFRAX()
和 mintAlgorithmicFRAX()
。合约还具有与铸造功能对应的 3 个赎回功能:redeem1t1FRAX()
、redeemFractionalFRAX()
和 redeemAlgorithmicFRAX()
。
这些功能被分为 1 对 1、分数和算法三个阶段,以优化 Gas 使用。1 对 1 的铸造和赎回功能仅在抵押比率为 100% 时可用。分数铸造和赎回功能仅在抵押比率为 99.99% 到 0.01% 之间可用。算法铸造和赎回功能仅在抵押比率为 0% 时可用。
每个铸造和赎回功能都有一个 AMOUNT_out_min
参数,用于指定期望从交易中获得的最低代币单位。这在提交交易时作为滑点容忍度的限制,因为价格可能会在创建交易和被包含在区块中的时间之间更新。
https://docs.openzeppelin.com/contracts/3.x/api/access#AccessControl
池中抵押代币的实例。
抵押代币的地址。
池子的所有者列表。
预言机合约的地址。
FRAX 合约的地址。
FXS 合约的地址。
时间锁合约的地址。
FXS 合约的实例。
FRAX 合约的实例。
预言机合约的实例。
记录给定地址的赎回余额。赎回者不能在同一个区块中同时请求赎回和实际赎回他们的 FRAX。这是为了防止闪电贷攻击,可能导致 FRAX 和/或 FXS 价格崩溃。赎回者必须等到下一个区块。这一特定变量用于赎回的 FXS 部分。
记录给定地址的赎回余额。赎回者不能在同一个区块中同时请求赎回和实际赎回他们的 FRAX。这是为了防止闪电贷攻击,可能导致 FRAX 和/或 FXS 价格崩溃。赎回者必须等到下一个区块。这一特定变量用于赎回的抵押品部分。
redeemCollateralBalances
的总和。
redeemFXSBalances
的总和
记录给定地址最后一次赎回的区块。
池子可以接受的最大抵押品金额。
铸造暂停的 AccessControl
角色。
AccessControl
role for the redeem pauser.
赎回暂停的 AccessControl
角色。
铸造是否已暂停。
赎回是否已暂停。
回购是否已暂停。
unclaimedFXS
返回未领取的 FXS 总金额。
unclaimedCollateral
返回未领取的抵押品总金额。
collatDollarBalance
返回池中抵押代币的总余额(以美元计)。
availableExcessCollatDV
返回池中抵押代币的多余余额(超过抵押比率所需的部分,以美元计)。
getCollateralPrice
返回池中抵押品的价格(以美元计)。
mint1t1FRAX
从抵押品中铸造 FRAX。仅在抵押比率为 1 时有效。
mintFractionalFRAX
从抵押品和 FXS 中铸造 FRAX。仅在抵押比率介于 0 和 1 之间时有效。
mintAlgorithmicFRAX
从 FXS 中铸造 FRAX。仅在抵押比率为 0 时有效。
redeem1t1FRAX
从 FRAX 赎回抵押品。仅在抵押比率为 1 时有效。必须在之后调用 collectionRedemption()
以进行收集。
redeemFractionalFRAX
Redeem collateral and FXS from FRAX. Valid only when the collateral ratio is between 0 and 1. Must call collectionRedemption()
later to collect.
redeemAlgorithmicFRAX
Redeem FXS from FRAX. Valid only when the collateral ratio is 0. Must call collectionRedemption()
later to collect.
collectRedemption
After a redemption happens, transfer the newly minted FXS and owed collateral from this pool contract to the user. Redemption is split into two functions to prevent flash loans from being able to take out FRAX / collateral from the system, use an AMM to trade the new price, and then mint back into the system.
buyBackFXS
Function can be called by an FXS holder to have the protocol buy back FXS with excess collateral value from a desired collateral pool. This can also happen if the collateral ratio > 1
recollateralizeAmount
When the protocol is recollateralizing, we need to give a discount of FXS to hit the new CR target. Returns value of collateral that must increase to reach recollateralization target (if 0 means no recollateralization)
recollateralizeFrax
Thus, if the target collateral ratio is higher than the actual value of collateral, minters get FXS for adding collateral. This function simply rewards anyone that sends collateral to a pool with the same amount of FXS + .75%. Anyone can call this function to recollateralize the protocol and take the hardcoded .75% arb opportunity
toggleMinting
Toggle the ability to mint.
toggleRedeeming
Toggle the ability to redeem.
toggleBuyBack
Toggle the ability to buyback.
setPoolCeiling
Set the pool_ceiling
, which is the total units of collateral that the pool contract can hold.
setOracle
Set the oracle_address
.
setCollateralAdd
Set the collateral_address
.
addOwner
Add an address to the array of owners.
removeOwner
Remove an owner from the owners array.
onlyByOwnerOrGovernance
Restrict actions to the governance contract or the owner(s).
notRedeemPaused
Ensure redemption is not paused.
notMintPaused
Ensure minting is not paused.
允许质押 Uniswap 交易对流动性池代币以换取 FXS 奖励。
⚠️ 本页面仅适用于非常早期的流动性挖矿池,尽管许多新农场共享功能和名称 ⚠️
基于 Synthetix 的质押合约:
https://docs.synthetix.io/incentives/
Frax 用户能够在选定的 Uniswap 流动性池代币中质押,以换取 FXS 奖励。未来的池和激励措施可以由治理添加。
流动性池代币(LP)
Uniswap FRAX/WETH LP: 0xFD0A40Bc83C5faE4203DEc7e5929B446b07d1C76
Uniswap FRAX/USDC LP: 0x97C4adc5d28A86f9470C70DD91Dc6CC2f20d2d4D
Uniswap FRAX/FXS LP: 0xE1573B9D29e2183B1AF0e743Dc2754979A40D237
Uniswap FXS/WETH LP: 0xecBa967D84fCF0405F6b32Bc45F4d36BfDBB2E81
质押合约
Uniswap FRAX/WETH staking: 0xD875628B942f8970De3CcEaf6417005F68540d4f
Uniswap FRAX/USDC staking: 0xa29367a3f057F3191b62bd4055845a33411892b6
Uniswap FRAX/FXS staking: 0xda2c338350a0E59Ce71CDCED9679A3A590Dd9BEC
Uniswap FXS/WETH staking (deprecated): 0xDc65f3514725206Dd83A8843AAE2aC3D99771C88
FRAX合约的实例。
奖励代币的实例。
质押代币的实例。
质押周期结束的区块。
每秒最大奖励。
奖励周期,以秒为单位。
合约最后一次更新或状态改变的时间戳。
当前周期内每个代币的实际奖励。
锁定质押的最大提升/权重倍增器。
达到 locked_stake_max_multiplier
的时间(以秒为单位)。
锁定质押的最低质押时间(以秒为单位)。
字符串版本为 locked_stake_min_time_str
。
来自抵押比例(CR)的最大提升/权重乘数。这适用于锁定和未锁定的质押。
记录某个地址上次领取奖励的时间。如果他们在之后的某个时间领取奖励,他们将获得正确的奖励金额,因为 rewardPerTokenStored
是在不断变化的。
给定地址的当前奖励余额。
质押的池代币总量。
考虑了时间和CR加成的 _staking_token_supply
。这不是实际的池代币数量,而是一个“加权分母”。
给定地址质押的池代币余额。
考虑了时间和CR加成的 _balances
,类似于 _staking_token_boosted_supply
。
提供给定地址的锁定质押批次列表。
一个锁定的质押“批次”。
totalSupply
获取质押的流动性池代币总数。
stakingMultiplier
根据质押的秒数获取基于时间的质押倍增器。
crBoostMultiplier
获取基于抵押比率(CR)的质押倍增器。
stakingTokenSupply
与 totalSupply()
相同。
balanceOf
获取给定账户质押的流动性池代币数量。
boostedBalanceOf
获取给定账户质押的流动性池代币的加成数量。加成考虑了抵押比率(CR)和基于时间的倍增器。
lockedBalanceOf
获取给定账户锁定的质押流动性池代币数量。
unlockedBalanceOf
获取给定账户解锁的/自由的质押流动性池代币数量。
lockedStakesOf
返回给定账户的所有锁定质押“批次”的数组。
stakingDecimals
返回 stakingToken
的小数位数 (decimals()
)。
rewardsFor
获取给定账户的 FXS 奖励数量。
lastTimeRewardApplicable
在内部用于跟踪 rewardPerTokenStored
。
rewardPerToken
当前质押流动性池代币的 FXS 奖励数量。
earned
返回给定账户的未领取 FXS 奖励数量。
getRewardForDuration
计算给定奖励持续时间(rewardsDuration
)内的 FXS 奖励。
stake
质押一些 Uniswap 流动性池代币。这些代币可以自由提取,仅受 crBoostMultiplier()
的加成。
stakeLocked
质押一些 Uniswap 流动性池代币,并将其锁定指定的秒数。作为锁定代币的回报,质押者的基础金额将通过线性时间倍增器进行乘法计算,该倍增器在 secs = 0
时为 1,在 locked_stake_time_for_max_multiplier
时为 locked_stake_max_multiplier
。质押的价值还会乘以 crBoostMultiplier()
。这个乘积值会被加到 _boosted_balances
中,并在计算质押者在给定奖励周期中的份额时作为加权金额。
withdraw
提取解锁的 Uniswap 流动性池代币。
withdrawLocked
提取锁定的 Uniswap 流动性池代币。如果特定 kek_id
质押批次的质押时间尚未到期,则会失败。
getReward
零取 FXS 奖励。
exit
提取所有解锁的池代币并领取奖励。
renewIfApplicable
如果奖励周期的结束时间已到,则续期奖励周期。调用 retroCatchUp()
。
retroCatchUp
续期并更新 periodFinish
、rewardPerTokenStored
和 lastUpdateTime
。
notifyRewardAmount
通过事件 RewardAdded
通知人们奖励正在被更改。
recoverERC20
添加此功能以支持从其他系统恢复流动性池奖励,并将其分发给持有者。
setRewardsDuration
设置奖励周期的持续时间。
setLockedStakeMaxMultiplierUpdated
设置锁定质押的最大倍增器。
setLockedStakeTimeForMaxMultiplier
设置锁定质押倍增器达到 locked_stake_max_multiplier
的时间(以秒为单位)。
setLockedStakeMinTime
设置锁定质押的最短时间(以秒为单位)。
setMaxCRBoostMultiplier
initializeDefault
仅在合约生命周期中调用一次。初始化 lastUpdateTime
和 periodFinish
。
updateReward
调用 retroCatchUp()
(如果适用),否则同步 rewardPerTokenStored
和 lastUpdateTime
。此外,还会同步提供账户的奖励和 userRewardPerTokenPaid
。
将FRAX借给DeFi平台而获得年化收益(APY)
这一控制器将FRAX引入诸如Compound或CREAM等货币市场,允许任何人通过支付利息借入FRAX。进入货币市场的FRAX不会进入流通,除非被借款人超额抵押。因此该AMO不会降低直接抵押率(CR)。这一控制器允许协议直接贷出FRAX,并通过现有货币市场从借款人那里赚取利息。实际上,这一AMO将MakerDAO的整个协议写入了单份合约。借贷产生的现金流可用于回购和销毁FXS(类似于MakerDAO从稳定费中销毁MKR的方式)。从本质上讲,Lending AMO通过支付货币市场设定的利率,为FRAX进入流通创造了一个新的途径。
非抵押化—铸造的FRAX进入货币市场。直接铸造的FRAX数量不会降低抵押率,因为所有借来的FRAX都是过度抵押的。
市场操作—从借款人那里获得利息收入。
再抵押—将铸造的FRAX撤出货币市场。
FXS1559—在CR上累积超额价值的每日利息收入(目前正在开发中)。
AMO可以通过铸造更多的FRAX(降低利率)或移除FRAX并烧掉它(提高利率)来提高或降低借贷FRAX的利率。这是一个强大的经济杠杆,因为它改变了所有贷款人借贷FRAX的成本。这渗透到所有市场,因为AMO可以以一个具体的目标比率铸造和移除FRAX。这也使得协议能够有效地根据希望瞄准的方向来调节做空FRAX的成本。
此外,与其他稳定币相比,该协议的部分算法设计允许不匹配的借款利率。因为Frax协议可以随意铸造Frax稳定币,直到市场将其定价为1$。这意味着与其他协议相比,创造货币的成本是最小的。如果协议决定在贷款利率上比其他稳定币更具优势,这将为借贷创造无与伦比的、同类中最好的利率。因此,AMO策略可以优化何时降低利率的条件(也依然低于其他稳定币的利率),也可以在相反的条件下提高利率。具有讽刺意味的是,基于自己代币的贷款利率是其他稳定币项目难以控制的东西。Frax通过AMO可以完全控制这些资产。
Frax 治理主要基于 Compound/OpenZeppelin Governor 合约。关于 Governor 提案的生命周期,可参考此处:OpenZeppelin Governance 文档。
Frax 治理是一个双 Governor 系统,包含 FraxGovernorAlpha 和 FraxGovernorOmega。Alpha 和 Omega 有不同的用途和配置。
FraxGovernorOmega 对底层安全库的控制有限。只有 Frax 团队和安全库所有者可以创建 Omega 提案。每个提案与安全库交易一一对应。Omega 被配置为额外的安全库所有者,必须批准安全库交易,安全库所有者才能执行该交易。这是通过自定义 Gnosis Safe Guard 实现的(https://docs.safe.global/safe-core-protocol/hooks)。
Omega 具有非常短的投票延迟、短的投票期和低的法定人数要求。安全库所有者只能在获得该安全库交易的阈值签名后将提案添加到 Omega。例如,如果一个安全库是 3/6(5 个所有者 + Omega),则必须有 3 个所有者签名才能将提案放入 Omega。
将提案添加到 Omega 后,它遵循与 Governor 提案相同的生命周期。如果提案通过,Omega 会在安全库上调用 approveHash,任何所有者可以通过 Gnosis Safe 用户界面照常执行该提案。如果提案失败,可以在 Omega 上调用 rejectTransaction 来批准 0 以太的转移。其他所有者可以签名并执行相同的 0 以太转移,这只是递增安全库上的 nonce,从而允许创建新的 Gnosis 交易。
Omega 具有一个称为短路阈值的功能。如果 51% 的 veFXS 总供应量投票支持某个 Omega 提案,该提案将立即成功并可执行。这在特殊情况下很有帮助,例如 Frax 团队需要快速采取行动以保护协议时。
Omega 不能更改其自身的治理参数或更改底层安全库的任何配置。这些值必须通过 FraxGovernorAlpha 进行更改。
FraxGovernorAlpha 对底层安全库拥有完全控制权。任何 veFXS 持有者只要其 veFXS 余额达到或超过提案阈值,就可以创建提案。FraxGovernorAlpha 与 OpenZeppelin Governor 几乎相同。由于其 TimelockController 被配置为安全库上的模块(Gnosis Safe 模块文档),因此它可以对每个 Gnosis Safe 执行任何操作。模块不受 Gnosis Safe Guards 的限制。
Alpha 具有较长的投票延迟、较长的投票期和比 Omega 更高的法定人数要求。一旦 Alpha 提案通过,它必须被排队,并在配置的时间锁定期后才能执行。
veFXS 持有者是系统中最重要的部分。提案的成功与否最终取决于 veFXS 持有者,因为他们直接对提案进行投票。您的 veFXS 余额等于您的投票权。
veFXS 持有者可以将他们的投票权委托给他人。如果某个 veFXS 持有者在其自身的质押和委托质押之间拥有足够的 veFXS 投票权,他们可以通过 FraxGovernorAlpha 提出任何提案。
通过 Alpha,veFXS 持有者可以更换安全库上的所有者、更改 Alpha 或 Omega 的治理参数、修改任何 Frax 智能合约的参数、从流动性池中添加或移除协议拥有的流动性等。veFXS 持有者对整个 Frax 协议拥有最终控制权。
修改过的 ERC-20 合约,代表 FRAX 稳定币。
Arbitrum
0x17FC002b466eEc40DaE837Fc4bE5c67993ddBd6F
Aurora
0xE4B9e004389d91e4134a28F19BD833cBA1d994B6
Avalanche
0xD24C2Ad096400B6FBcd2ad8B24E7acBc21A1da64
Base (LayerZero)
0x909DBdE1eBE906Af95660033e478D59EFe831fED
Blast (LayerZero)
0x909DBdE1eBE906Af95660033e478D59EFe831fED
Boba
0x7562F525106F5d54E891e005867Bf489B5988CD9
BSC
0x90C97F71E18723b0Cf0dfa30ee176Ab653E89F40
Ethereum (native)
Ethereum (LayerZero)
0x909DBdE1eBE906Af95660033e478D59EFe831fED
Evmos
0xE03494D0033687543a80c9B1ca7D6237F2EA8BD8
Fantom
0xdc301622e621166BD8E82f2cA0A26c13Ad0BE355
Fraxtal (Native)
Fraxtal (LayerZero)
0x80eede496655fb9047dd39d9f418d5483ed600df
Harmony
0xFa7191D292d5633f702B0bd7E3E3BcCC0e633200
Linea (Axelar)
0x406cde76a3fd20e48bc1e0f60651e60ae204b040
Mantle (Axelar)
0x406Cde76a3fD20e48bc1E0F60651e60Ae204B040
Metis (LayerZero)
0x909DBdE1eBE906Af95660033e478D59EFe831fED
Mode (LayerZero)
0x80eede496655fb9047dd39d9f418d5483ed600df
Moonbeam
0x322E86852e492a7Ee17f28a78c663da38FB33bfb
Moonriver
0x1A93B23281CC1CDE4C4741353F3064709A16197d
Optimism
0x2E3D870790dC77A83DD1d18184Acc7439A53f475
Polygon
0x45c32fA6DF82ead1e2EF74d17b76547EDdFaFF89
Sei (LayerZero)
0x80eede496655fb9047dd39d9f418d5483ed600df
Scroll (Axelar)
0x406cde76a3fd20e48bc1e0f60651e60ae204b040
Solana
FR87nWEUxVgerFGhZM8Y4AggKGLnaXswr1Pd8wZ4kZcp
TRON
TBD
X-Layer (LayerZero)
0x80eede496655fb9047dd39d9f418d5483ed600df
https://docs.openzeppelin.com/contracts/2.x/api/token/erc20#ERC20
https://docs.openzeppelin.com/contracts/3.x/api/access#AccessControl 注意:FRAX 和 FXS 合约没有任何暂停或黑名单控制(包括系统合约)。
一个枚举,声明了 FRAX 和 FXS。用于与预言机配合使用。
用于 Chainlink ETH / USD 交易的实例。与 FRAX / WETH、FXS / WETH、抵押品 / FRAX 和抵押品 / FXS 交易对结合使用,可以计算 FRAX/FXS/抵押品的价格(以美元计)。
Chainlink ETH / USD 交易对价格的小数位数。
FRAX / WETH Uniswap 交易对价格预言机的实例。
FXS / WETH Uniswap 交易对价格预言机的实例。
拥有特权操作的地址数组。
治理合约的地址。
合约创建者的地址。
时间锁合约的地址。
FXS合约的地址。
fraxEthOracle
的地址。
fxsEthOracle
的地址。
标准的Wrapped以太坊(WETH)合约的地址。主网应为 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
for the mainnet.
ChainlinkETHUSDPriceConsumer
的地址.
FRAX的创世供应量。应为一个小的非零金额。大部分FRAX供应将来自铸造,但初始需要少量以防止在各种函数中出现除零错误。
所有FraxPool
合约地址的数组。
本质上与frax_pools_array
相同,但以映射的形式存在。在诸如globalCollateralValue()
等函数中有助于节省gas。
当前所有FraxPool
中FRAX与抵押品的比例。
将FRAX兑换为FXS和/或抵押品的费用。同时也是使用FXS回购多余抵押品的费用。有关使用方法,请参见 FraxPool
合约。
从FXS和/或抵押品铸造FRAX的费用。有关使用方法,请参见FraxPool
合约。
在构造函数中设置。用于AccessControl
。
用于暂停抵押比率的常量。
抵押比率是否已暂停。
oracle_price
获取FRAX或FXS的价格,以美元计算。
frax_price
从FRAX-ETH Chainlink价格预言机返回FRAX的价格。
fxs_price
从FXS-ETH Chainlink价格预言机返回FXS的价格。
frax_info
返回一些常用的状态变量和计算值。这是为了避免对不同获取函数的重复调用,减少成本。在燃气费用方面,直接返回所有信息并只使用其中的一部分更为经济。
globalCollateralValue
遍历所有 FRAX 池,计算所有池中抵押物的总价值。这将使用每种抵押物的预言机价格。
refreshCollateralRatio
该函数检查 FRAX 的价格,并在价格不为 $1 时刷新抵押比率。如果价格高于 $1,则比率降低 0.5%。如果价格低于 $1,则比率增加 0.5%。任何人都可以调用该函数来更改比率。此函数每小时只能调用一次。
mint
internal _mint()的公共实现。
pool_burn_from
用户赎回时由池子使用。
pool_mint
这个函数是其他 Frax 池调用以铸造新 FRAX 的。
addPool
添加支持的抵押地址,例如 Tether 和 BUSD,必须是 ERC20。
removePool
移除一个池子
setOwner
设置合约的管理员。
setFraxStep
设置在执行 refreshCollateralRatio()
时,抵押比率将改变的金额。
setPriceTarget
设置用于 refreshCollateralRatio()
的价格目标(不影响铸造/赎回)。
setRefreshCooldown
设置 refreshCollateralRatio()
的冷却时间。
setRedemptionFee
设置赎回费用。
setMintingFee
设置铸造费用。
setFXSAddress
设置 FXS 地址。
setETHUSDOracle
设置 ETH / USD 预言机地址。
setFRAXEthOracle
设置 FRAX / ETH Uniswap 预言机地址。
setFXSEthOracle
设置 FXS / ETH Uniswap 预言机地址。
toggleCollateralRatio
切换暂停/恢复抵押比例。
FRAXBurned
当FRAX被销毁时触发,通常是由于池子的赎回。
onlyCollateralRatioPauser
限制操作仅限于指定的抵押比例暂停者。
onlyPools
限制操作仅限于池合约,例如铸造新的 FRAX。
onlyByGovernance
限制操作仅限于治理合约,例如设置铸造和赎回费用,以及预言机和池地址。
onlyByOwnerOrGovernance
限制操作仅限于治理合约或所有者账户,例如设置铸造和赎回费用,以及预言机和池地址。
Arbitrum
0xe61D9ed1e5Dc261D1e90a99304fADCef2c76FD10
Aurora
0x85F61CC39dB983948671b03B8EcB36877d9A337d
Avalanche
0xc036Caff65c1A31eAa53e60F6E17f1E6689937AA
Base
0xCBfd4Ef00a8cf91Fd1e1Fe97dC05910772c15E53
Boba
0x3849Ff242Ff385F5124e6420BE681963d3977685
Boba BNB
0x1b0772073Fc00de6dD760F734e94DB526F9B1307
Blast
0x33A133020b2C2CD41a24F74033B11EC2fC0bF97a
BSC
0x8811Da0385cCf1848B21475A42eA4D07Fc5d964a
Ethereum
Evmos
0x18B34258F0972b19C3B757B2169b42b4D5b0856A
Fantom
0xE838c61635dd1D41952c68E47159329443283d90
Fraxtal
Harmony
0x5D91bA85cfbC0A3673F312f3FD0BA75a85AD73e6
Linea
0x6b603B58d7781a5967172e2FEa75f7E34c25F96d
Mantle
0xC51585F9C1938fcE489da89d24d7A623d4BEDf35
Metis
0xF4A4F32732F9B2fB84Ee28c58616946F3bF80F7d
Mode
0x6336CFA6eDBeC2A459d869031DB77fC2770Eaa66
Moonbeam
0x343e4f06BF240d22FbdFd4a2Fe5858BC66e79F12
Moonriver
0x2bBbE751E8C36CD6c92767776067f8Dd3A21941f
Optimism
0x0dF840dCbf1229262A4125C1fc559bd338eC9491
Polygon
0xDCB5A4b6Ee39447D700F4FA3303B1d1c25Ea9cA7
Polygon zkEVM
0x030BD43af99cb72B51dA233A73F7697Cd2461C0b
Scroll
0x7efB8A3b929D1e12640Caf8E4889A3d08e4b9039
Sei
0x0357D02fc95320b990322d3ff69204c3D251171b
Solana
FSRTW4KPGifKL8yKcZ8mfoR9mKtAjwZiTHbHwgix8AQo
TRON
TNpqBqghn37FLcpWWQVcRAxuBvhUYu2FEB
zkSync
0xd492dF0ce7905D7d91aE48F5e893AcAa38221486
Advisors
Business Development
Community
Fraxtal L1
Investors
Team
Treasury
Base
Blast
Fraxtal
Metis
Mode
Sei
Solana
X-Layer
由于 veFXS 合约的工作原理,如果您锁定更多 FXS 或延长锁定时间,您需要使用 VeFxsVotingDelegation 合约再次委托您的投票权重。
要将委托返回给自己,请调用 delegate()
函数,将您的地址作为受托人。 委托也可以通过签名进行。请参见 delegateBySig()
。
当您的 veFXS 锁定到期时,您的余额等于您锁定的 FXS 数量。在 Frax 治理中,一旦您的锁定到期,您的投票权重将变为 0。您需要保持活跃的锁定才能在 Frax 治理中拥有投票权重。
点击“提案”
填入您的交易数据
提交
Frax 治理利用了 ScopeLift 的分数投票: https://github.com/ScopeLift/flexible-voting/blob/master/src/GovernorCountingFractional.sol
这允许用户在赞成/反对/弃权之间分配他们的投票权。它还允许智能合约/保管人根据相对 LP 份额将投票权传递给流动性提供者。
为了使 Safe 正确配置为 frxGov,它必须安装 FraxGuard,设置 FraxGovernorOmega 为签名者,安装 FraxGovernorAlpha 的 TimelockController 作为模块,并将 FraxCompatibilityFallbackHandler 设置为 fallbackHandler。可以通过 Alpha 提案以类似方式将 Safes 暂停,方法是移除配置并将其从允许列表中删除。 FraxGovernorOmega 和 FraxGovernorAlpha 使用 OpenZeppelin Governor 及以下扩展:
GovernorSettings
GovernorVotesQuorumFraction
GovernorCountingFractional
此外,Alpha 使用这些治理扩展:
GovernorTimelockControl
GovernorPreventLateQuorum
查看它们的配置:
以下所有功能必须通过 Alpha 提案调用。
Alpha 和 Omega:
setVotingDelayBlocks()
setVeFxsVotingDelegation()
updateShortCircuitNumerator()
仅限 Omega:
addToSafeAllowlist()
removeFromSafeAllowlist()
addToDelegateCallAllowlist()
removeFromDelegateCallAllowlist()
setSafeVotingPeriod()
请参阅 frxGov 代码库以了解每个功能的解释。
请参阅 Gnosis Safe 代码库以查看 Alpha 控制的 Safe 配置。
完整提案流程
Alpha 与 OpenZeppelin Governor 和 GovernorTimelockControl 完全相同。
创建提案 - propose()
投票 -castVote()
如果失败则不执行任何操作
如果成功
queue()
Wait Timelock's minDelay
execute()
一个所有者使用 Gnosis Safe 发起 DeFi 交易。这会生成一个事务哈希,标识需要由其他 Safe 所有者批准或拒绝的操作。
⅗ 的外部账户(EOA)通过用户界面签署该交易
收集到 3 个签名后,任何人都可以调用fraxGovernorOmega.addTransaction(address teamSafe, TxHashArgs calldata args, bytes calldata signatures)
开始链上治理。团队有动力这样做,因为他们无法在没有 FraxGovernorOmega 批准的情况下执行任何 Gnosis 交易。
veFXS 投票者在提案投票窗口内有 2 天的时间进行投票。
如果在投票窗口内未达到法定人数,或赞成票多于反对票,任何人都可以调用 execute()
。这会在后台调用safe.approveHash()
。它提供了 FraxGovernorOmega 所需的批准,从而允许通过 Gnosis 用户界面执行 Gnosis 交易。
如果达到了法定人数且反对票多于赞成票,任何人都可以调用 fraxGovernorOmega.rejectTransaction (address teamSafe, uint256 nonce)
否决提案。这将导致 FraxGovernorOmega 签署一个具有相同 nonce 的零 ETH 转账 Safe 交易。Safe 所有者可以使用“替换交易”功能在用户界面中签署相同的交易。Safe 所有者可以执行该零 ETH 转账,从而增加 nonce。原始交易将无法执行,因为没有来自 FraxGovernorOmega 的批准,并且 nonce 已经更改,使得原始交易失效。
背景:https://help.safe.global/en/articles/40783-what-are-signed-messages
Gnosis Safes 可以提供智能合约签名。典型机制包含在 Safe 的 CompatibilityFallbackHandler 中,该机制检查所有者是否满足所需的签名数量,然后 Safe 提供其批准。这个机制对于 frxGov 来说并不充分,因为我们希望 Omega 和所有者共同提供批准,或者仅由 Alpha 提供批准。
为了解决这个问题,我们编写了 FraxCompatibilityFallbackHandler,它仅检查 safe.signedMessages(messageHash)
是否被设置。Alpha 和 Omega 都可以使用 SignMessageLib.signMessage()
调用此状态的设置器。
FraxGovernorAlpha 可能被用来创建一个提案,实质上关闭整个 Frax 协议,并将所有协议拥有的流动性归还给 FXS 持有者。我们在 Alpha 上设置了 Timelock 延迟,以应对这种情况。从提案通过到可以执行之间有一天的时间,给予 Frax 用户通过各种流动性池退出协议的机会。
我们还添加了 OpenZeppelin Governor 扩展 GovernorPreventLateQuorum。如果提案在投票期末期达到法定人数,投票期将延长 2 天。这可以阻止恶意用户在最后一刻投票支持恶意提案,为社区在这种情况下提供反应的时间。
我们还创建了 frxEth 赎回队列,以允许用户在恶意行为者获得 51% veFXS 投票权并通过提案无限铸造 frxEth 以试图盗取财库时退出 frxEth。
为了符合 ERC5805 标准,实现合约必须实现多个函数,包括getPastTotalSupply(uint256 timepoint) external view returns (uint256)
。我们在治理合约中使用时间戳,但这个函数是唯一的例外,它必须接受 block.number
。遗憾的是,veFXS.totalSupply(timestamp)
对历史值无效,因此我们必须使用 veFXS.totalSupplyAt(block.number)
。
这也影响法定人数的计算。通常法定人数是根据投票开始的时间戳(快照)计算的。我们通过使 $votingDelayBlocks
值可由治理配置,允许类似功能,从而反映时间戳功能。
代码库
https://github.com/FraxFinance/frax-governance
合约地址
VeFxsVotingDelegation: https://etherscan.io/address/0x6b83c4f3a6729fb7d5e19b720092162df439f567
FraxGovernorAlpha: https://etherscan.io/address/0xe8Ab863E629a05c73D6a23b99d37027E3763156e
FraxGovernorAlphaTimelock: https://etherscan.io/address/0x821794E69d2831975a11f80E8092c682D5Ec8F83
FraxGovernorOmega: https://etherscan.io/address/0x953791D7C5ac8Ce5fb23BBBF88963DA37a95FE7a
FraxCompatibilityFallbackHandler: https://etherscan.io/address/0x3FeFB779d737aCEa272686eA6E174ebF4273F973
减少对中心化资产的依赖
Frax去中心化比率(DR)是去中心化抵押品价值与由这些资产支持/可赎回的稳定币供应总量的比率。具有过多链下风险的抵押品(如法币、证券和黄金/石油等托管资产)被视为0%去中心化。DR检查了协议所要求的抵押品的基本组成部分,而不仅仅是其系统合约中的内容。DR是一个递归函数,用于发现每个资产的底层值。
例如,FRAX3CRV LP是50% FRAX,所以移除它,因为你不能用自己的代币支撑自己。另一半是3CRV,即33% USDC, 33% USDT和33% DAI。DAI本身大约是60%的法币。所以每1美元的FRAX3CRV LP只有大约0.066美元(1美元x 0.5 * 0.33 * 0.4)是属于去中心化来源的价值。
相比之下,以太坊以及CVX和CRV等奖励代币被视为100%去中心化。通过Lending AMOs铸造的FRAX也被认为是去中心化的,因为借款人通过加密sOHM、RGT等过度抵押来换取他们的贷款。这也是DAI的金库给它高DR的原因。
DR是一种广义算法,可用于计算任何稳定币的过度链下风险。其他稳定币,如LUSD,更容易计算:它们的DR是100%。FEI的DR大约是90%。
有关支持 FRAX 的资产列表,请阅读 .。
将闲置抵押物和Frax部署到Uni v3 稳定币池子
Uniswap v3的AMM算法的关键创新允许做市商在特定价格区间之间部署流动性,支持稳定币对稳定币池子(例如FRAX-USDC)在紧紧锚定的情况下积累极深的流动性。与Uniswap v2相比,Uniswap v3的区间订单集中了流动性,而不是分散在无限的价格范围内。
Uniswap v3流动性AMO通过向其他稳定币提供针对FRAX的流动性,使FRAX和抵押品发挥作用。由于AMO能够进入Uni v3上的任何位置并铸造FRAX,因此它允许扩展到Uni v3上的任何其他稳定币以及后续的不稳定抵押品。此外,可以定期调用 collectFees()
函数,将AMO利润分配给超额抵押品的市场操作。
UniV3LiquidityAMO (已弃用):
减少抵押 — 将闲置抵押资产和新铸造的FRAX存入到Uni v3 池子。
市场操作 — 累积Uni v3交易费用和抵押品类型之间的互换。
再抵押 — 从Uni v3池子中取出并燃烧FRAX并返还USDC以增加抵押率。
FXS1559 — 在抵押率之上积累每日交易费用。
请注意,实际实现使用价格的平方根,因为它节省了计算tick内交换的平方根操作,从而有助于防止舍入错误。
一个主要由协议控制和拥有流动性的稳定交换池
⚠️ 此特定 AMO 已弃用,但其基本原理(Curve/Convex 协议拥有的流动性以实现挂钩稳定性和协议收入)和数学仍被新版本 AMO 使用。请参见 V3 AMO ⚠️
曲线 AMO 使 FRAX 和 USDC 抵押品得以利用,为协议提供流动性并收紧挂钩。Frax 已部署自己的 。这意味着 Frax 部署者地址拥有其曲线池的管理权限。这允许曲线 AMO 控制器为 FXS 持有者设置和收取管理费用以及执行各种未来功能。协议可以将闲置的 USDC 抵押品或新铸造的 FRAX 转移到自己的曲线池中,以创造更多流动性并收紧挂钩,同时赚取交易收入。
CurveAMO (已弃用):
去抵押化 - 将闲置的抵押品和新铸造的 FRAX 放入 FRAX3CRV 池中。
市场操作 - 累积交易费用、CRV 奖励,并定期重新平衡池。FRAX3CRV LP 代币存入 Yearn crvFRAX 保险库、Stake DAO 和 Convex Finance 以获取额外收益。
再抵押化 - 首先从池中提取多余的 FRAX,然后提取 USDC 以增加 CR。
FXS1559 - 每日交易费用和在 CR 以上累积的 LP 价值(目前正在开发中)。
Curve 的稳定交换不变量允许在稳定币交换之间减缓价格波动,前提是储备没有极度失衡,从而近似于线性交换曲线。
在极度失衡的情况下,不变量接近 Uniswap 的常数乘积曲线。
协议通过找到可在 FRAX 价格跌至抵押率(CR)时提取的 USDC 余额,来计算 AMO 可访问的基础抵押品的数量。由于 FRAX 始终由抵押品支持,价值不低于 CR,因此它的价格不应低于抵押品的实际价值。例如,在 85% 的抵押率下,FRAX 的价格不应低于 0.85 美元。这一计算是评估曲线 AMO 可访问的抵押品数量的最安全、最保守的方法。这使得曲线 AMO 能够铸造 FRAX 并将其放入池中,除了 USDC 抵押品外,还可以收紧挂钩,同时准确了解在 FRAX 打破挂钩时可访问多少抵押品。
此外,AMO 的整体策略允许优化最小 FRAX 供应 Y,使得一次性将 Y 全部出售到一个 TVL 为 Z、放大因子为 A 的曲线池中时,对 FRAX 价格的影响低于 X%,其中 X 是 CR 的带敏感度。换句话说,曲线 AMO 可以将 FRAX+USDC 放入自己的曲线池并控制 TVL。由于当 FRAX 价格下跌超过 1 美分低于 1 美元时,CR 会再抵押化,这意味着可以在 FRAX 价格下滑 1% 之前,直接在曲线池中出售一定价值的 FRAX。协议可以在开放市场上流通至少该数量的算法 FRAX,因为将该数量的全部一次性销售到曲线池的 TVL 中不会对价格造成足够影响,从而导致 CR 移动。当考虑到曲线的稳定币优化曲线时,这些数量非常大且令人印象深刻。例如,一个 TVL 为 3.3 亿的 FRAX3Pool(假设基础 3Pool 平衡)可以支持至少 3920 万美元的 FRAX 卖单,而不会使价格波动超过 1 美分。如果 CR 带为 1%,那么协议至少应该在开放市场上有 3920 万算法 FRAX。
上述策略是一种极为强大的市场操作,数学上可以创造出一个算法 FRAX 的底线,该底线在不打破挂钩的情况下可以流通。
此外,Curve 为选择的池中的流动性提供者分配 CRV 代币作为奖励(称为计量奖励)。由于 Frax 协议可能是 FRAX3CRV 池的最大流动性提供者,因此可以将其所有的 FRAX3CRV LP 代币分配到 Curve 计量中,以赚取可观的回报。存放在曲线 AMO 中的 CRV 代币可以用来投票参与未来的 Curve DAO 治理,由 FXS 持有者控制。这基本上意味着,协议越多地利用流动性进入自己的曲线池,它在 Curve 协议中拥有和控制的份额就越多,来自所赚取的 CRV 奖励。曲线 AMO 的长期效应是 Frax 可能成为 Curve 自身的大型治理参与者。
iterate()
该函数计算在 FRAX 价格跌至 CR 时,元池中 FRAX 和 3CRV 的余额,假设这是最坏的情况。首先,该函数获取元池的当前实时余额,并模拟一个外部套利者将当前元池中 10% 的 FRAX 进行交换,直到所给出的价格等于(或接近)CR,随之交换相应数量的 3CRV。这模拟了 FRAX 在开放市场价格跌至 CR 的情况,元池通常提供的 1:1 兑换被套利者利用,直到在其他地方以 CR 价格购买 FRAX 以获利的机会消失。第 282 行是检查 FRAX 价格的具体位置。
然后,元池检查在该最坏情况下,其 LP 代币可以提取的 FRAX 和 3CRV 数量。两者之间的比例通常在可提取的 FRAX 与可提取的 3CRV 之间大约是 10 比 1。为了对协议的抵押品数量进行会计,它将每个可提取的 3CRV 以基础抵押品价值(即可赎回的 USDC 价值)进行估值,每个 FRAX 则以抵押率进行估值。由于协议在正常情况下并不会实际将如此多的 FRAX 投放流通,这实际上是对其在 USDC 方面的抵押品数量的高度保守估计。
要检查在其他价格下曲线 AMO 应负担的储备情况,可以通过设置 custom_floor
在本地测试中简单调整 fraxFloor()
的值。
将闲置的抵押品投资于各种 DeFi 保险库/协议中
⚠️ 此 AMO 已弃用。其许多功能已迁移至 V3 AMO ⚠️
Collateral Investor AMO 将闲置的 USDC 抵押品转移到一些提供可靠收益的 DeFi 协议中。目前集成的协议包括:Aave、Compound 和 Yearn。更多协议可以通过治理添加。该 AMO 的主要要求是能够在发生大规模 FRAX 赎回时,立即提取投资的抵押品,不需要等待期。能够随时立即提取的抵押品不会被视为降低协议的抵押率(CR),因为这些资金始终可以随时供协议使用。然而,规范中的去抵押化功能从投资中提取抵押品,优先提取那些有时间延迟的取款(当前没有,并且目前没有计划引入这样的延迟)。
任何超过 CR 的投资收入都通过 FXS1559 被销毁。
FraxPoolInvestorForV2(已弃用)地址:
去抵押化 - 将闲置的抵押品投入到各种产生收益的协议中。无法立即提取的投资会降低 CR 计算。像 Yearn USDC v2 和 Compound 这样可以随时以 1:1 比例提取的投资不会被视为降低 CR。
市场操作 - 在 CR 水平上复利投资。
再抵押化 - 从保险库中提取投资,释放用于赎回的抵押品。
FXS1559 - 每天来自超出 CR 的投资收入。
UniV3LiquidityAMO_V2:
所有价格都以一个实体与另一个实体之间的比率存在。通常,我们选择一种货币作为分母中的共享记账单位(例如美元)来比较日常商品和服务的价格。在Uniswap中,价格是由储备数量 与池中储备 的比例来定义的。
Uniswap v3的区间订单机制符合现有的恒定乘积做市公式(CPMM),通过在特定的价格点或 tick
“虚拟化”储备。通过指定流动性头寸以哪个位置为界限,就可以创建遵循恒定乘积不变式的区间订单,而不必将流动性分散到特定资产的整个范围内。
Uniswap v3中的价格由值1.0001
到tick 值 。 tick价格的边界可以用代数群 表示。这种机制允许简单地将整数转换为价格边界,并且方便地将每个价格边界分离为价格的一个基点(0.01%)。
虚拟储备是通过跟踪每个头寸的流动性和刻度界限来跟踪的。越过一个tick边界,该tick可用的流动性 可能会改变,以反映进入和离开各自的价格区间的头寸。在tick边界内,掉期根据虚拟储备改变价格 ,即它就像恒定乘积()不变量一样。虚拟储备 x
和 y
可以由流动性和价格计算:
流动性可以被认为是CPMM 中的一个虚拟 ,而 对应于资产的数量 以及 代表了tick内的价格滑点。
由于 针对intra-tick是固定的, 和 可以从流动性和平方根的价格计算得出。当跨越一个刻度时,交易滑点必须只滑到 边界,然后重新调整可用于下一个刻度的流动性。
两个这样的曲线的组合使得可以根据池中余额的比例,通过一个系数表达出一种或另一种情况。使用无量纲参数 作为系数,可以将这两条曲线的组合推广到 N 种币种。
产生 IORB 利率且具有最小到期风险的现实世界资产
当 IORB 预言机报告高利率时,FRAX V3 会使用现实世界资产(RWA)策略。FRAX V3 仅使用那些收益接近 IORB 利率且几乎没有期限风险的 RWA。因此,除非通过 frxGov 过程进行变更,目前仅考虑以下资产:
短期美国国债
存入联邦储备银行主账户的美元
选定的货币市场共同基金的股份
FRAX V3 的合作托管方主要集中于上述资产。RWA 合作伙伴必须每月至少一次报告持有 FRAX V3 资产时所采用的托管、经纪、银行和信托安排。
FIP-277 将 FinresPBC 作为 FRAX V3 的首个 RWA 合作伙伴。FinresPBC 将专注于确保“现金等价物”低风险 RWA,并优化 sFRAX 抵押金库的 IORB 利率收益。
通过 frxGov 治理投票,可以引入额外的 RWA 合作伙伴。
FPIS代币的初始分配计划
⚠️ 剩余的Frax和FPI国库中的代币将根据逐步淘汰计划被销毁,且不符合2.5 : 1转换为FXS的资格。因此,总供应量预计将减少到约4100万个合格的FPIS。⚠️
FXS投票者在治理中完全控制这些代币的分配方式。
Frax Finance国库(多重签名): 0x9AA7Db8E488eE3ffCC9CdFD4f2EaECC8ABeDCB48
FPIS投票者完全控制这些代币的分配方式。
FPI协议国库(多重签名):0x5181C3c36bD52F783e6E1771d80b1e3AdCB36019
⚠️ 根据逐步淘汰计划,veFPIS的发行在2024年7月初停止。剩余的代币存储在FPI协议国库的多重签名中,计划被销毁。⚠️
FPIS按照每年减半的发行计划分配给veFPIS质押者,始于2023年2月20日下午4点(太平洋标准时间)。第一年发行500万FPIS,第二年发行225万FPIS,第三年发行112.5万FPIS,等等。当FPI稳定币的抵押率超过治理设定的某一水平时,该发行将通过额外的FPI协议利润分配给veFPIS持有者进行补充。
自2022年2月20日起,按4年锁定期分配,与空投起始时间同步,并有6个月的悬崖期。分配在每月20日左右进行。
FPI核心贡献者(以太坊): 0x708695db8dF61e646571E78b9b3e2BAd7D6c42E3
FPI核心贡献者(Fraxtal):0xe0EefF64eAB79C78221f9571BBDA70eEe65620ce
快照时间为2022年2月20日11:59:59 UTC,直到2022年8月20日11:59:59 UTC可领取。大约459,074.53 FPIS未被认领,并已恢复到FPI管理多重签名处,地址为 0x6A7efa964Cf6D9Ab3BC3c47eBdDB853A8853C502
FPISAirgrabber: 0x3266724e4e58E5891Eb30E6d329bA119A192483c
⚠️ FPIS 将于 2028 年 3 月 22 日逐步淘汰,之后可转换为 FXS ⚠️
Frax 价格指数股份(FPIS)是 Frax 价格指数(FPI)稳定币的治理代币。FPIS 与 Frax 股份(FXS)代币相互关联,因此被称为“链接治理代币”。FXS 和 FPIS 在经济上通过程序化方式相互关联,类似于一层链代币与其网络上的去中心化应用代币之间的关系。
FXS 是 Frax 生态系统的基础代币,因此无论 FRAX 和 FPI 稳定币如何增长,FXS 都将始终增值。FXS 的增值与整个 Frax 经济体的整体增长成正比,类似于 ETH 从所有支付以获得 Ethereum 区块空间的去中心化应用经济活动的总和中捕获价值。FPIS 特别跟踪 FPI 的增长,类似于特定的 ERC20 代币跟踪自身协议的增长,而不是整个 L1 经济体。如果您认为 Frax 经济体整体被低估,则应增加对 FXS 的持有。如果您认为人们特别低估了 FPI 的增长,则应增加对 FPIS 的持有。这与您是否投资于特定项目或投资于 ETH 是相同的动态。如果您认为 ETH 经济体整体被低估,您会购买更多 ETH。但如果您认为某个特定项目的增长速度超过整个经济的总和,您就会希望拥有该特定代币,而不是 L1 代币。
Frax 质押比例(FCR)是直接支持 FPI 代币的 FRAX 稳定币的比例。FCR 在向 FPIS 和 veFPIS 代币持有者分配价值之前直接计算。FCR 特别用于系统的 FXS 价值捕获。 每当超出 FPI 资产负债表的价值分配回 FPIS 代币持有者时,它将经过一个“FCR 合约”或函数调用,计算 FPI 使用的“FRAX 抵押品”数量。 本质上,任何超出通货膨胀率的经济生产力都归 FPIS 持有者所有。由于 FPI 与一篮子消费品挂钩,因此它代表了对该篮子价值的索赔。协议超出该篮子的价值将被 FPIS 持有者捕获。 FPIS 的供应量在创世时初始设定为 1 亿个代币(分配见此处),但预计到 2028 年 3 月 22 日实际可转换为 FXS 的代币将减少到大约 4100 万个(比例为 2.5 : 1)。
*本文档中关于价值捕获的讨论不构成投资建议。治理代币机制仅用于描述 Frax/FPI 系统的运作方式。*
FRAX V3:终极稳定币
FRAX 是一种与美元挂钩的稳定币,使用“算法市场操作”(AMO)智能合约和无需许可、非托管的子协议作为稳定机制。三个主要的内部子协议用于维持稳定性:Fraxlend,一个去中心化借贷市场;Frax Bonds,用于维持锚定稳定的债券;以及具有特殊功能的自动做市商(AMM)Fraxswap。主要的外部稳定机制包括 Curve 和 Uniswap V3 池。通过治理,FRAX 可以轻松集成未来发现的稳定机制,添加新的子协议和 AMO。
FRAX V3 的扩展引入了以下概念和基准:
FRAX 的完全外源抵押:协议将尝试始终保持 ≥100% 的抵押率(CR)。从 V3 开始并通过 FIP188 提案,Frax 协议将努力通过 AMO 智能合约和由 Frax 治理模块(frxGov)批准的合作实体持有的某些现实资产,确保所有 FRAX 稳定币至少保持 100% 的抵押率。FRAX CR 的计算方法是基于 FRAX 资产负债表上的外源抵押物的价值。稳定币的隔离资产负债表是用于稳定 FRAX 稳定币的市场价格的抵押品。
主权美元挂钩:一旦 FRAX 稳定币达到 100% 抵押率,其锚定将通过 Chainlink 预言机和治理批准的参考利率与美元挂钩。如果 FRAX CR 下降,AMO 和治理将尝试将 CR 恢复到 100%,并保持 FRAX 的价格在 $1.000,无论其他资产如 USDC、USDT 或 DAI 的价格如何。
IORB 预言机:FRAX V3 智能合约将联邦储备银行的储备余额利息(IORB)利率用于某些协议功能,如 sFRAX 质押收益。随着 IORB 预言机利率的上升,Frax 协议的 AMO 策略将反应并通过国库券、逆回购合约和/或存放在联邦储备银行的美元(这些存款支付 IORB 利率)来高度抵押 FRAX。当 IORB 预言机报告低/下降的利率时,AMO 策略将开始用链上去中心化资产和 Fraxlend 中的超额抵押贷款重新平衡 FRAX 的抵押品。
消除多签名信任假设:FRAX V3 智能合约最终将完全通过 frxGov 模块和社区的 Snapshot 投票在链上运行。
Frax Bonds(FXBs):债券将以低于面值的价格发行,并设定各种到期日期,以吸纳/锁定 FRAX 并帮助稳定其锚定价格。
不可赎回性:FRAX 稳定币是不可赎回的,类似于无法赎回特定资产的法定货币。持有 FRAX 稳定币并不保证持有人有权在特定时间将其兑换为任何特定金融工具或代币。Frax 协议的唯一功能是通过 AMO 合约、现实资产(RWA)和 frxGov 的治理行动,利用美元预言机作为参考,将 FRAX 价格稳定在 $1.000。
Fraxtal:一个基于 Optimism 技术的模块化汇总区块链(L2)。frxETH 将用作 gas 代币。包括区块空间奖励(称为 Flox / FXTL 点数),用于奖励在网络上花费 gas 和与智能合约交互的用户和开发者。
*FRAX V3 的部署是一个逐步和迭代的过程。随着智能合约的部署,其地址将被添加到相应的文档部分。本文件讨论的所有功能目前尚未全部部署。*
升级后的模块化veFPIS
⚠️ veFPIS现在已解锁,收益停止,依据Frax Singularity路线图第一部分。鼓励用户迁移到Fraxtal上的FPIS锁仓,以便最终将FPIS转换为FXS ⚠️
veFPIS是FPIS治理代币的更新版和锁定+收益系统。与veFXS类似,用户可以将FPIS锁定最长达4年,获得四倍的veFPIS(例如,锁定100 FPIS 4年将返回400 veFPIS)。veFPIS不是可转让的代币,也不在流动市场上交易。它类似于一个基于账户的积分系统,表示钱包中锁定的FXS代币在协议内的锁定期限。
随着代币接近锁定到期,veFPIS余额线性减少,接近于零剩余锁定时间时每1 FPIS对应1 veFPIS。
veFPIS 有一个额外针对智能合约的“DeFi白名单”,为质押系统添加了模块化功能。治理程序可以批准每个新的DeFi功能白名单。例如,治理程序可以将清算合约列入白名单,如果质押者从其veFPIS余额中借款,则允许清算其基础FPIS代币。在为每个用户解锁新功能之前,用户必须批准每个DeFi白名单合约来使用他们的FPIS代币。这使得质押系统保持完全免信任,因此没有额外的逻辑可以在没有质押人批准的情况下访问质押人的veFPIS余额,从而保持每个钱包地址的模块化选项。该系统允许治理向veFPIS质押添加新的迭代功能,如“削减条件”和通过添加智能合约来获得更高收益的新方法(如果用户选择加入,可能会被削减),允许veFPIS持有者投票决定CPI指标权重,借出FPI,或控制流动性部署等等。
通过LayerZero x Stargate的合作,用户可以在几分钟内桥接代币。
可替代且可扩展的多链桥接解决方案。
桥接过程在几分钟内完成。
灵活选择源链或目标链。
信任委托给LayerZero和Stargate
LayerZero端点
LayerZero和Horizen DVN。
Stargate用户界面
Frax资产在Fraxtal、Ethereum和Arbitrum以外的链上被表示为OFTs(由 LayerZero定义)。OFT与ERC20的功能相同,此外还支持通过LayerZero协议进行桥接。
FRAX
sFRAX
frxETH
sfrxETH
FXS
FPI
在与LayerZero的初始部署中,LayerZero团队在多个链上部署了Frax资产作为固定合约。初始部署后,Frax团队承担了额外的部署责任,并目前将OFTs作为可升级的透明代理进行部署(合约经过审计,代码库链接)。
Legacy 与可升级OFTs在各链上保持相同的资产地址。
所有具有桥接权限的OFTs均由每个相应链上的3/6多签管理。
通过Stargate用户界面进行桥接(链接)。
直接与LayerZero进行桥接。
ProxyAdmin
: 0x223a681fc5c5522c85c96157c0efa18cd6c5405c
Chain: Ethereum
, Metis
, Blast
, Base
Admin: Chain-respective msig
OFTs
FRAX
: 0x909DBdE1eBE906Af95660033e478D59EFe831fED
sFRAX
: 0xe4796cCB6bB5DE2290C417Ac337F2b66CA2E770E
sfrxETH
: 0x1f55a02A049033E3419a8E2975cF3F572F4e6E9A
FXS
: 0x23432452B720C80553458496D4D9d7C5003280d0
frxETH
: 0xF010a7c8877043681D59AD125EbF575633505942
FPI
: 0xE41228a455700cAF09E551805A8aB37caa39D08c
Chain: Mode
, Sei
, Fraxtal
, X-Layer
Admin: ProxyAdmin
(owned by chain-respective msig)
OFTs
FRAX
: 0x80eede496655fb9047dd39d9f418d5483ed600df
sFRAX
: 0x5bff88ca1442c2496f7e475e9e7786383bc070c0
sfrxETH
: 0x3ec3849c33291a9ef4c5db86de593eb4a37fde45
FXS
: 0x64445f0aecc51e94ad52d8ac56b7190e764e561a
frxETH
: 0x43eDD7f3831b08FE70B7555ddD373C8bF65a9050
FPI
: 0xEed9DE5E41b53D1C8fAB8AAB4b0e446F828c1483
Layer Zero OFT Frax 资产不是 Frax 协议的负债。它们不会出现在 facts.frax.finance 的资产负债表上。它们不能兑换为协议拥有的资产。它们只能在 Layer Zero 协议的“锁箱”合约中兑换为 Frax 资产。
Layer Zero OFT Frax 资产由 Layer Zero 去中心化验证网络(DVNs)结算,这些网络不由 Frax 协议、Frax 核心开发者或与 Frax 相关的任何实体运营。因此,OFT Frax 资产的风险由其持有者承担。这类似于在其发行人 Circle 不支持铸造/赎回的网络上持有“USDC 代币”。这些“USDC 代币”不会出现在 Circle 的资产负债表上作为负债,也不能从其发行人那里赎回。它们只能在桥接(即“锁箱”)合约中兑换为基础的 USDC 代币。
未来,Frax 协议可以与 Layer Zero 合作,升级某些 OFT Frax 资产在特定网络上的功能,使 Frax 协议能够对结算过程进行直接监督,类似于 Frax Ferry 系统。在这之后,这些特定网络的 OFT Frax 资产将被报告在相关资产负债表上。当这种情况发生时,Frax 协议将视这些代币为其负债,且这些代币由其在各自资产负债表上持有的资产直接支持。目前,没有任何 Frax OFT 代币是协议的本地负债。
目标 IORB 利率的抵押金库
质押的 FRAX(sFRAX)是一个 ERC4626 质押金库,每周将部分 Frax Protocol 的收益以 FRAX 稳定币的形式分配给质押者。sFRAX 代币代表金库中的按比例存款,并始终可以按比例兑换为 FRAX 稳定币。sFRAX 年化收益率(APY)试图大致追踪美国联邦储备银行的准备金利息(IORB)利率,使用 IORB 预言机进行计算。这个基准利率通常被接受为美元的“无风险利率”。FRAX 质押金库尝试,但并不保证以任何方式达到这个利率。
sFRAX 金库的 APY 基于可以由 frxGov 治理模块设置的利用率函数。利用率曲线的上限起始于 50% APY,理论上没有下限,但截至 2024 年 10 月 2 日,已稳定在 5-10% 的范围内。随着更多 FRAX 被质押到金库,协议将尝试将 FRAX 部署到 DeFi 治理批准的 AMO/策略以及收益尽可能接近 IORB 利率的 RWA 来源,以保持最低 APY 接近 IORB 目标。每周三 UTC 时间 11:59:59,Frax Protocol 将新铸造的 FRAX 稳定币添加到 sFRAX 金库中。这些新铸造的 FRAX 与 Frax Protocol 在前一周的收益成一对一比例,因此完全以 100% 的抵押率(CR)支持。每个 sFRAX 纪元为 1 周,长度和开始时间与 FXS 指标和 sfrxETH 纪元相同。协议并不保证所部署的资本在任何时刻都来自特定类型的资产。frxGov 治理模块将控制 sFRAX 收益的部署路径和资产类型。质押的 FRAX 金库的收益主要来源于 Frax Protocol 合作托管方采用的现实世界资产(RWA)策略,包括但不限于 FinresPBC。
sFRAX 合约地址:0xA663B02CF0a4b149d2aD41910CB81e23e1c41c32
Arbitrum
Avalanche
Base (LayerZero)
0xe4796cCB6bB5DE2290C417Ac337F2b66CA2E770E
Blast (LayerZero)
0xe4796cCB6bB5DE2290C417Ac337F2b66CA2E770E
BSC
Ethereum (native)
Ethereum (LayerZero)
0xe4796cCB6bB5DE2290C417Ac337F2b66CA2E770E
Fraxtal (native)
0xfc00000000000000000000000000000000000008
Fraxtal (LayerZero)
0x5bff88ca1442c2496f7e475e9e7786383bc070c0
Metis (LayerZero)
0xe4796cCB6bB5DE2290C417Ac337F2b66CA2E770E
Mode (LayerZero)
0x5bff88ca1442c2496f7e475e9e7786383bc070c0
Optimism
Polygon zkEVM
Sei (LayerZero)
0x5bff88ca1442c2496f7e475e9e7786383bc070c0
X-Layer (LayerZero)
0x5bff88ca1442c2496f7e475e9e7786383bc070c0
Ethereum
sFRAX & FXB Comptroller
更慢、更简单、更安全的代币桥接方法
这是由Frax团队设计和实施的24-48小时代币桥接解决方案。
由于bug、团队诈骗、匿名开发者等原因,桥接频繁遭受黑客攻击。
存在无限铸币的风险。
某些链的桥接速度较慢,尤其是在返回以太坊的过程中(例如Arbitrum、Optimism等)。
风险由桥接合约中的代币数量上限。没有无限铸币的风险。
较慢的交易速度给予更多时间以捕捉和阻止坏批次,前提是它们没有被机器人自动取消。
团队成员可以暂停合约,以便调查任何问题。
如果船长被诱骗提议一个带有虚假哈希的批次,并且所有团队成员的机器人都离线/被审查/被破坏,并且没有人对提案提出异议。
源链上的重组。通过仅返回至少一小时之前的源链交易来避免此风险。
乐观回滚的回滚。通过运行节点来避免此风险。
操作员没有足够的时间在虚假提案后暂停链。通过要求发送和执行提案之间有最小时间间隔来避免此风险。
集中化
用户将代币发送到合约。此交易存储在合约中,使用embark()
,embarkWithRecipient()
或者embarkWithSignature()。
船长查询源链以获取要运输的交易。
船长发送批次(开始、结束、哈希)以开始旅程。调用depart()
。
等待至少24小时。
团队成员检查批次,并可以在批次无效时提出异议。调用disputeBatch()
或do nothing
。
未被质疑的批次可以由第一官员执行,通过提供交易的calldata。用户将在另一条链上收到其代币。调用disembark()
。
交易的哈希必须与批次中的哈希相等。
如果存在欺诈交易(例如黑客),所有者可以取消单个交易,使其不会被执行。调用jettison()
, jettisonGroup()
, removeBatches()。
所有者可以手动管理合约中的代币,并必须确保合约中有足够的资金。
帮助稳定 FRAX 锚定的零息债券
FXB 代币是简单、无信任的代币,类似于零息债券,在到期时转换为 FRAX 稳定币。FXB AMO 以低于面值的折扣拍卖 FXB。这一折扣为买家提供了相当于 RWA 收益的收益,而不承担 RWA 风险。它们还有助于减少流通中的 FRAX 并稳定锚定,因为用户无法出售在 FXB 中锁定的 FRAX(直到到期)。
FXB 是以 FRAX 稳定币计价的债务代币,而不是对任何其他资产或抵押品的索赔。FXB 代币只能转换为 FRAX 稳定币,并不保证 FRAX 的锚定、FRAX 的价值或以任何其他资产计价的收益/利息。FXB 不赋予持有者任何链外或链上的资产(除了 FRAX 稳定币)。因此,FXB 不能赎回为美国国债或任何其他现实资产,并且没有直接得到这些资产(或任何特定资产)的支持/抵押,并且除了在预定到期时间戳生成时无信任地转换为 FRAX 稳定币外,没有任何其他效用。这一点很重要,而不仅仅是语义上的区别,因为它直接定义了 FXB 的规范性和经济特性。Frax Bond 代币仅保证通过发行它们的智能合约以一对一的比例转换为 FRAX。
FXB 允许形成收益曲线,以定价将 FRAX 借回协议本身的时间价值。每个 FXB 代币都是从链上工厂合约部署的可替代 ERC20 代币。在 FXB 发行时,FRAX 稳定币被转移到 FXB 合约中以便在到期时转换。这防止了在完整的 FXB 循环发生之前需要任何外部操作,并且完全保持无信任状态。可以随时在市场上流通多个 FXB 系列,且没有最低或最高到期时间戳的限制。
FXB 在到期日的结束时到期,使用 UTC 时间,并且没有到期限制。例如,20261231 FXB 可以在 1893456000 时刻被赎回其对应的 FRAX。
FXB 系列的价格发现通过持续逐步荷兰拍卖(GDA)拍卖系统进行,数量和价格限制由 Frax 团队设定。这保证了 FXB 代币的销售价格不会低于底价限制。拍卖通过 FXB AMO 合约进行,都是无信任、无许可和无保管的。新拍卖可以随时由Fraxtal Comptroller和 Fraxtal AMO Operator启动,通过 FXB AMO发起。
如前所述,在 FXB 铸造时,FRAX 稳定币被转移到 FXB 合约中以便在到期时转换。FXB 可以分为两种类型,原链和桥接链,分别指 FXB 最初铸造的链。需要这种区分,因为原链(即 FXB 最初铸造的链)是 FXB 所有者在到期后可以将 FXB 烧毁以获得等值 FRAX 的地方。例如,起源于 Fraxtal 的 FXB 被桥接到 Fraxtal 后被视为桥接版本,其中基础 FRAX 保留在 Fraxtal 中,FXB 必须桥接回来才能赎回 FRAX。类似地,FXB 必须在原链上铸造,以包含基础 FRAX。
为什么会发生这种情况? 当 FXB 最初创建时,是通过 FXBFactory完成的。这个原始 FXB 包含铸造和赎回的代码。一旦 FXB 被桥接,目标链通过桥接 ERC20Factory创建 FXB。这个桥接版本只能通过桥接铸造和赎回(烧毁)。
要无需信任地将合约导入您的本地存储库,请参阅 frax-template。
FXB Factory
0xa8478781D9605E17c3b4c9C79e7127c4597116E4
Auction Factory (permission-less)
0xc9268c7F59850B26567b0f5d3Dcc317cEDC43490
FXB AMO
0x452420df4AC1e3db5429b5FD629f3047482C543C
AMO Operator (msig)
0x831822660572bd54ebaa065C2acef662a6277D40
AMO Timelock (msig)
0x831822660572bd54ebaa065C2acef662a6277D40
基于 Optimism 的模块化rollup区块链(L2),使用 frxETH 作为 gas 代币。
Fraxtal 是一个与以太坊虚拟机(EVM)等效的rollup区块链,使用 OP 堆栈作为其智能合约平台和执行环境。原生 gas 代币是由 Frax Finance 发行的 Frax 以太币(frxETH)。Fraxtal 还提供区块空间奖励(称为 Flox),通过用户和开发者在网络上花费 gas 以及与任何智能合约交互来进行奖励。
为什么要有 Fraxtal?已经有这么多 L2 链了,为什么还需要 Fraxtal?
你可以在 Fraxtal 文档中阅读完整的理由,但主要原因如下:
极低的交易成本
提高的交易速度
使用 frxETH 作为 gas 代币
通过排序器(Sequencer)费用获得收入
Flox / FXTL 区块空间奖励
文档:
在以太坊和 Fraxtal 之间的桥接和消息传递
Fraxtal 的桥接过程源自 Optimism的设计。将资产从以太坊主网桥接到 Fraxtal(L1StandardBridge 和 L1ERC721Bridge)通常只需几分钟,而从 Fraxtal 返回以太坊(L2StandardBridge 和 L2ERC721Bridge)则可能需要 7 天。消息传递(L1CrossDomainMessenger 和 L2CrossDomainMessenger)也适用此情况。为了解决这一问题,Fraxtal 还提供了 Frax Ferry,大多数用户会选择使用该服务返回以太坊,仅需 24-48 小时,而不是 7 天。
Fraxtal 桥接 UI: 访问 Fraxtal 桥接工具
Fraxtal 桥接文档: 查看桥接文档
ETH/frxETH/ERC20s
L1StandardBridge
ERC721s
L1ERC721Bridge
Messages
L1CrossDomainMessenger
ETH/frxETH/ERC20s
L2StandardBridge
ERC721s
L2ERC721Bridge
Messages
L2CrossDomainMessenger
一种与一篮子消费品挂钩的新型稳定币
Frax价格指数(FPI)是Frax金融生态系统的第二个稳定币。FPI是第一个与美国CPI-U平均值定义的一篮子现实世界消费品挂钩的稳定币。FPI稳定币旨在保持其价格与CPI篮子中所有项目的价格一致,从而通过链上稳定机制保持其购买力。与FRAX稳定币一样,所有FPI资产和市场操作都是链上的,并使用AMO合约。
⚠️ FPIS 将于 2028 年 3 月 22 日逐步淘汰,并在此之后可转换为 FXS ⚠️
Frax Price Index Share (FPIS) 代币是该系统的治理代币,也有权获得协议的铸币税收益。超额收益将从财政部分配给 FPIS 持有者,类似于 FXS 结构。在 FPI 财政部未能创造足够收益以维持因通货膨胀而增加的每个 FPI 的支持时,可能会铸造并出售新 FPIS 以增加财政部的资金。由于该协议是在 Frax 生态系统内部推出的,FPIS 代币还将把其收入的一部分变动份额分配给 FXS 持有者。
FPI使用美国联邦政府报告的未经调整的CPI-U 12个月通货膨胀率:https://www.bls.gov/news.release/cpi.nr0.htm 一个专用的Chainlink预言机在该信息公开发布后立即将该数据提交到链上。然后,预言机报告的通货膨胀率应用于系统合约中FPI稳定币的赎回价格。这个赎回价格在链上每秒增长(或在罕见的通货紧缩情况下下降)。当bls.gov发布每月CPI价格数据时,挂钩计算率每30天更新一次。FPI 使用美国联邦政府报告的未调整的 12 个月消费者价格指数(CPI-U)通货膨胀率:https://www.bls.gov/news.release/cpi.nr0.htm。 $1 的起始日期是基于 2021 年 12 月的 CPI-U 数据。因此,FPI 的市场价格在该日期之后应跟踪 2021 年 12 月的相同购买力。例如,在 2024 年 10 月 4 日,FPI 的市场价格约为 $1.11。这意味着在 2024 年 10 月 4 日,购买以前在 2021 年 12 月花费 $1 的物品需要大约 $1.11(年通货膨胀率约为 3.5-4%)。
一个专门的 Chainlink 预言机在数据公开发布后立即将其提交到链上。预言机报告的通货膨胀率随后应用于系统合约中 FPI 稳定币的赎回价格。该赎回价格在链上每秒增长(或在通货紧缩的罕见情况下下降)。当 bls.gov 每月发布 CPI 价格数据时,peg 计算率每 30 天更新一次。处理 FPI peg 价格目标的合约是 CPI Tracker Oracle。
因此,FPI peg 始终跟踪上述 12 个月的通货膨胀率,并在 FPI 赎回合约中对此进行 peg。当以另一种资产(如 ETH)购买 FPI 稳定币时,交易者的立场是认为 CPI 购买力的增长速度会比出售的 ETH 更快。如果将 FPI 出售换成 ETH,则交易者的立场是认为 ETH 的增长速度超过了美元的 CPI 通货膨胀率。
FPI的目标是成为第一个拥有自己记账单位的链上稳定币,这些单位来自一篮子商品,包括加密资产和非加密资产。虽然FPI可以被认为是一种抗通胀的收益资产,但它的主要动机是创建一种新的稳定币来命名交易、价值和债务。对DAO国债进行计价,并以FPI衡量收入,以及以FPI交易对为基准,有助于更好地衡量价值应计额是否在实际通货膨胀的情况下积极增长。它还有助于将链上经济学根植于现实世界的资产篮子。
首先,国库将仅由$FRAX组成,但未来将扩大到包括其他加密原生资产,如桥接BTC、ETH和非加密消费品和服务。
FPI 使用与 FRAX 稳定币相同类型的 AMOs,但其模型旨在始终保持 100% 的抵押率 (CR)。这意味着,为了保持抵押率在 100%,协议资产负债表的增长速度必须至少与 CPI 通货膨胀率相匹配。因此,AMO 策略合约必须获得与 CPI 成比例的收益,否则抵押率将降低到 100% 以下。在 AMO 收益低于 CPI 率的情况下,TWAMM AMO 将出售 FPIS 代币以换取 FRAX 稳定币,以始终保持抵押率为 100%。当抵押率恢复到 100% 时,FPIS TWAMMs 将被移除。
FPI 的铸造(使用 FRAX)和赎回(接收 FRAX)可以在任何时间以少量费用通过 FPI Controller Pool 完成。用户还可以在 Curve 或 Fraxswap 等各种市场中买卖 FPI。
FPI Controller 池子: 0x2397321b301B80A1C0911d6f9ED4b6033d43cF51
FPI Comptroller 多签钱包收集/存入来自 FPI Controller Pool 的盈余/赤字 FRAX,并且是与 FPI 相关合约的拥有者。它还投资于 Curve/Convex 农场等各种收益来源,并利用收益来帮助增加对 FPI PEG 的支持。
FPI Comptroller 多签: 0x6A7efa964Cf6D9Ab3BC3c47eBdDB853A8853C502
退出 FPIS 并将其转换为 FXS
根据的投票,社区决定最终退休 FPIS 代币,以便专注于 FXS。到 2028 年 3 月 22 日,FPIS 将有资格以 2.5 FPIS 兑换 1 FXS 的比例进行转换。在此之前,用户可以选择通过 在 Fraxtal 上锁定他们的 FPIS。这将根据锁定时间的长短给予用户 1.333 倍到 0.333 倍的 veFXS 投票权。在 2028 年 3 月 22 日的转换日期之后,仍然在 FPIS Locker 中锁定的头寸可以转换为其 FXS 等值,并转入 veFXS,直到剩余的锁定时间完成,之后可以提取 FXS。未曾在 FPIS Locker 中锁定或在转换日期之前解锁的 FPIS 也可以在转换日期之后直接转换为 FXS,无需通过 FPIS Locker。现在,锁定的 veFPIS 头寸可以自由提取其 FPIS。
独一无二的时间加权平均做市商,用于无需信任的货币政策。
Fraxswap 是第一个具有嵌入式时间加权平均做市商(TWAMM)的恒定乘积自动化做市商,用于在长时间内无信任地进行大额交易。它完全无需许可,其核心 AMM 基于 Uniswap V2。这个新型 AMM 帮助交易者高效执行大订单。Fraxswap 是完全无需许可的 AMM,这意味着其他人可以像在 Uniswap 上一样,为任何两个代币创建自己的流动性池。
构建 Fraxswap 的动机是创建一个具有专门功能的 AMM,用于算法稳定币货币政策、前瞻性指引以及为稳定某一资产的价格而在长时间内缩减其供应或获取特定抵押品的持续大额市场订单。具体来说,Frax 协议将使用 Fraxswap 来:
用 AMO 利润回购并销毁 FXS;
增强 FRAX 和 FPI 稳定币的锚定稳定性;
出售 FRAX 以购买硬资产;
部署协议拥有的流动性以产生收入和效用,例如在各种链上提供 FRAX/FXS 和 FRAX/<gas token>。
通过逐渐出售治理代币,积累国库资产(如稳定币);
通过 DAO 的收入和储备,逐步回购治理代币;
通过 DAO 自身的治理代币,逐步获取其他协议的治理代币(类似于企业并购,但在无需许可的方式下进行);
为基于国库的 DAO(如 Olympus、Temple 及其他项目)捍卫“无风险价值”(RFV),这些项目的治理代币的背书是社会或程序上保证的。
要将 Fraxswap 用于货币政策,最佳方法是创建一个代币对,并添加协议控制的流动性。然后可以根据需要在任何方向上发布任何规模的 TWAMM 订单,用于前瞻性指引和 DAO 净资产的再平衡。请参阅技术规格部分,了解 TWAMM 的滑点计算和流动性优化。
Fraxswap UI:
Arbitrum
Base (LayerZero)
0xE41228a455700cAF09E551805A8aB37caa39D08c
Blast (LayerZero)
0xE41228a455700cAF09E551805A8aB37caa39D08c
BSC
Ethereum
Ethereum (LayerZero)
0xE41228a455700cAF09E551805A8aB37caa39D08c
Fantom
N/A
Fraxtal (native)
0xFc00000000000000000000000000000000000003
Fraxtal (LayerZero)
0xEed9DE5E41b53D1C8fAB8AAB4b0e446F828c1483
Metis (LayerZero)
0xE41228a455700cAF09E551805A8aB37caa39D08c
Mode (LayerZero)
0xEed9DE5E41b53D1C8fAB8AAB4b0e446F828c1483
Moonbeam
N/A
Optimism
Polygon
N/A
Sei (LayerZero)
0xEed9DE5E41b53D1C8fAB8AAB4b0e446F828c1483
X-Layer (LayerZero)
0xEed9DE5E41b53D1C8fAB8AAB4b0e446F828c1483
Arbitrum
BSC
Ethereum (native)
Fraxtal (native)
0xfc00000000000000000000000000000000000004
Fantom
N/A
Moonbeam
N/A
Optimism
Polygon
N/A
Comptroller
Treasury
Team Incentives
Comptroller
Treasury
Team Incentives
Arbitrum
Comptroller
0xF0D5007dB0393c9D5F6A88A5F82Df520EA483fDb
Avalanche
Comptroller
0xB3e03c9C1820C6216953FB1BBC6fFd232ac12a19
BSC
Comptroller
0x49f9cbf5333d8e50c9BE76c775777DB2ACb1d456
Fantom
Comptroller
0xe722B0fA594e290a8E53bFB5654cE4Ad8a4BE811
Fraxtal
Comptroller
Fraxtal
Team Incentives
Moonbeam
Comptroller
0xc4d89dcE72cde17DC3BEF317E62530b6A0733971
Optimism
Comptroller
0x8Acc8819cBB632dE4a8E732f08b9E578D2A8F635
Polygon
Comptroller
0x4EBd698a5dB2580587EE0000929128190524006c
Polygon zkEVM
Comptroller
0xDD2a221c0A9B88052af736D5CcCb27362b8EF57B
Fraxswap V1 & V2的智能合约地址
V2 包含一个新功能,允许每个流动性池设置不同的手续费。
Arbitrum
0x8374A74A728f06bEa6B7259C68AA7BBB732bfeaD
0xCAAaB0A72f781B92bA63Af27477aA46aB8F653E7
Avalanche
0xf77ca9B635898980fb219b4F4605C50e4ba58afF
0x5977b16AA9aBC4D1281058C73B789C65Bf9ab3d3
Binance Smart Chain
0xf89e6CA06121B6d4370f4B196Ae458e8b969A011
0x67F755137E0AE2a2aa0323c047715Bf6523116E5
Ethereum
0x43eC799eAdd63848443E2347C49f5f52e8Fe0F6f
Regular: 0xC14d550632db8592D1243Edc8B95b0Ad06703867
Multihop: 0x25e9acA5951262241290841b6f863d59D37DC4f0
Fantom
0xDc745E09fC459aDC295E2e7baACe881354dB7F64
0x7D21C651Dd333306B35F2FeAC2a19FA1e1241545
Fraxtal
0xE30521fe7f3bEB6Ad556887b50739d6C7CA667E6
Regular:
0x2Dd1B4D4548aCCeA497050619965f91f78b3b532 Multihop: 0x67E04873691258950299Bd8610403D69bA0A1e10
Moonbeam
0x51f9DBEd76f5Dcf209817f641b549aa82F35D23F
0xD356d5b92a2329777310ECa03E7e708D1D21D182
Moonriver
0x7FB05Ca29DAc7F5690E9b5AE0aF0415D579D7CD3
0xD8FC27ec222E8d5172CD63aC453C6Dfb7467a3C7
Optimism
0x67a1412d2D6CbF211bb71F8e851b4393b491B10f
0xB9A55F455e46e8D717eEA5E47D2c449416A0437F
Polygon
0x54F454D747e037Da288dB568D4121117EAb34e79
0xE52D0337904D4D0519EF7487e707268E1DB6495F
DEPRECATED
Fraxswap Factory: 0xB076b06F669e682609fb4a8C6646D2619717Be4b
Fraxswap Router: 0x1C6cA5DEe97C8C368Ca559892CCce2454c8C35C7
Fraxswap Factory: 0x5Ca135cB8527d76e932f34B5145575F9d8cbE08E
Fraxswap Router: 0xc2544A32872A91F4A553b404C6950e89De901fdb
Fraxswap Factory: 0x5Ca135cB8527d76e932f34B5145575F9d8cbE08E
Fraxswap Router: 0xc2544A32872A91F4A553b404C6950e89De901fdb
Fraxswap Factory: 0xa007a9716dba05289df85A90d0Fd9D39BEE808dE
Fraxswap Router: 0x0AE84c1A6E142Ed90f8A35a7E7B216CB25469E37
Fraxswap Factory: 0xF55C563148cA0c0F1626834ec1B8651844D76792
Fraxswap Router: 0xa007a9716dba05289df85A90d0Fd9D39BEE808dE
Fraxswap Factory: 0x5Ca135cB8527d76e932f34B5145575F9d8cbE08E
Fraxswap Router: 0xc2544A32872A91F4A553b404C6950e89De901fdb
Fraxswap Factory: 0x5Ca135cB8527d76e932f34B5145575F9d8cbE08E
Fraxswap Router: 0xc2544A32872A91F4A553b404C6950e89De901fdb
Fraxswap Factory: 0x5Ca135cB8527d76e932f34B5145575F9d8cbE08E
Fraxswap Router: 0xc2544A32872A91F4A553b404C6950e89De901fdb
Fraxswap Factory: 0xBe90FD3CDdaf0D3B8576ffb5E51aDbfD304d0437
Fraxswap Router: 0xffE66A866B249f5d7C97b4a4c84742A393bC9354
Fraxswap Factory: 0xc2544A32872A91F4A553b404C6950e89De901fdb
Fraxswap Router: 0x9bc2152fD37b196C0Ff3C16f5533767c9A983971
每一个借贷对都有一个配置好的最大贷款价值比(LTV)。随着时间的推移,随着利息的资本化,借款人必须增加更多的抵押品或偿还部分债务。否则,他们的头寸可能会变得不健康。为了确定借款人的LTV,我们使用抵押品的价值和ftoken的价值。
股价为1个fToken的资产代币单位价格(即资产代币:fToken比率)
汇率是1个资产代币的抵押品单位价格(即抵押品代币:资产比率)
当借款人的LTV高于最高LTV时,任何用户都可以代表借款人偿还债务,并获得同等价值的抵押品和清算费用。清算费用是不可更改的,并在部署时确定。默认情况下,该值被设置为10%,可以通过调用借贷对上的 liquidationFee()
view函数来访问。通过在借贷对上调用 maxLTV()
函数可以找到配置的最大LTV。
当借款人的贷款价值比(LTV)超过最大 LTV(通常为 75%)时,清算人可以立即关闭借款人的头寸。然而,在极端波动的情况下,可能清算人无法在 LTV 超过 100% 之前关闭不健康的头寸。在这种不太可能发生的情况下,会产生坏账。在这种情况下,清算人偿还由借款人抵押品覆盖的最大借款头寸,剩余债务则从所有贷款人对基础资本的总索取权中扣除。这可以防止贷款人争相提取流动性,导致最后的贷款人持有无价值的 fTokens(在其他贷款市场中通常称为“坏账”),并确保在不利事件后,交易对能够立即恢复正常运作。
金库账户(Vault Account)是frxlend对中用于记账的结构:
金库账户The Vault Account cont包含两个元素
amount
- 表示总数
shares
- 表示可以申领的份额
在借出中,amount
代表存款的资产总额和应计利息。
当出借人存入资产时,存入的资产amount
增加,shares
价值也增加一定数量,但数量与股票的比率不变。
当产生利息时, amount
增加,shares
保持不变。每个出借人在基础资产中的份额以股份来衡量。
当贷款机构消除流动性时,他们赎回相关资产的股票。shares数量
将根据赎回的股票数量而减少,amount
将减少,但amount
/shares
的比率保持不变。
贷款会计
贷款时,amount
代表贷款资产总额和应计利息。
当贷款人收到资产时,收到的代币amount
增加,shares
价值也增加了一定值,使amount
/shares
之间的比率保持不变。
当产生利息时,amount
增加,shares
保持不变。每个贷款人的债务都以股份来衡量。
当贷款人偿还债务时, amount
减去归还的资产数量,shares
减少一定数额,使amount
/shares
的比率保持不变。单个贷款人的股份余额按此数量递减。
Fraxswap的Core AMM是采用Uniswap V2,基于xy=k恒积常数的全系列产品设计。Fraxswap遵循了Uniswap V2的许多设计决策,因为它扩展了代码库以支持TWAMMs。Fraxswap v2计划以一种独特和新颖的方式支持集中流动性和相关资产流动性,允许TWAMM在这些交易对之间也发挥作用。
关于Uniswap核心功能的大量文档可以在这里找到: https://docs.uniswap.org/protocol/V2/concepts/protocol-overview/how-uniswap-works
Fraxswap是第一个上线的TWAMM(时间加权平均做市商)实现。嵌入的TWAMM遵循Paradigm的原始白皮书规范。白皮书中提到的特性被用于优化长期订单的执行,包括:订单池化和对齐订单到期时间(按小时)。长期订单在任何与Fraxswap的交互之前被优先执行,这意味着在AMM(自动做市商)交互之前,长期订单首先执行,并且每个区块执行一次(见上方示意图)。Fraxswap实现了Paradigm原始公式的近似公式,允许简化、更节省gas的TWAMM。
TWAMM白皮书描述了其基本机制: “每个TWAMM实例促进特定资产对之间的交易,例如ETH和[FRAX]。
TWAMM包含一个嵌入式AMM,即一个用于两种资产的标准恒定乘积做市商。任何人可以随时与这个嵌入式AMM交易,就像它是一个普通的AMM一样。
交易者可以向TWAMM提交长期订单,即在固定的区块数量内卖出固定数量的一种资产的订单——例如,提交一个在接下来的2,000个区块内卖出100 ETH的订单。 TWAMM将这些长期订单分解为无数小的虚拟子订单,以均匀的速度与嵌入的AMM交易。单独处理每个虚拟子订单的交易将耗费无穷的gas,但一个封闭形式的数学公式允许我们在需要时计算它们的累积效果。 长期订单的执行将随着时间的推移推动嵌入的AMM的价格偏离其他市场上的价格。当这种情况发生时,套利者将针对嵌入AMM的价格进行交易,使其回归正常,确保长期订单的良好执行。
例如,如果长期卖单使ETH在嵌入的AMM上的价格比某个中心化交易所便宜,套利者将从嵌入的AMM购买ETH,使其价格回升,然后在中心化交易所卖出以获取利润。”
可以在以下链接上找到Paradigm TWAMM公式与Fraxswap TWAMM公式的互动对比:https://www.desmos.com/calculator/wp4zrkh6uj
一个独立的交易对借贷协议
Fraxlend 是一个提供 ERC-20 资产交易对之间借贷市场的平台。每个交易对是一个独立的市场,允许任何人参与借贷活动。贷方可以将 ERC-20 资产存入该交易对并获得收益型 fToken。随着利息的增加,fToken 可以兑换为数量不断增加的基础资产。
创建 Fraxlend 的主要目的是为了 Fraxlend AMO 的使用。AMO 合约提供协议持有的 FRAX(以及其他 Frax 生态系统代币,如 frxETH 和 sfrxETH),供其他用户借入,借款人则需存入各种抵押品代币并支付利息。这不仅为协议产生收入,还分散了支持 FRAX 的抵押品。
每个交易对的最高贷款价值比(LTV)可以由社区投票决定,但通常对于波动性较大的代币交易对约为 75%,而稳定币/稳定币交易对约为 90%(后者通常风险较低)。协议还维护了一个清算机器人,但任何用户都可以对不健康/负资产头寸进行清算。
Fraxlend UI:Link 公共代码库:https://github.com/FraxFinance/fraxlend
Fraxlend的主要参与者是贷款人和借款人,这些参与者与单独的交易对进行交互。
出借人向池子提供资产代币,以换取fTokens
借款人向借贷对提供抵押品代币,并作为交换获得资产代币。借款会产生一个利率,该利率被资本化并在赎回ftoken时支付给出借人。
除了借贷双方,生态系统的其他部分还包括:预言机、利率计算和Fraxlend 借贷对部署方
每个交易对依赖于预言机来确定资产代币和抵押代币的市场利率。预言机结合来自多个地方的价格数据,以实现强大且抗操纵的价格信息。
每个交易对都配备了利率计算器。这些合约根据可借资本的数量计算利率。通常,借款越少,利率越低;而借款越多,利率则越高。
每一个借贷对都有单一的部署合约进行部署。
交易对注册表跟踪所有已部署的 Fraxlend 交易对。
出借方(Lenders)将资产代币存入借贷对,并根据当前股价获得相应数量的资产股份(ftoken)。
贷款人可以在任何时候以当前价格给出的利率将其ftoken兑换为基础资产代币。fToken股价随着利息的增加而增加。
利息的积累是唯一可以改变股价的操作。因为利息产生总是正的,每个fToken可赎回的资产代币的数量不能减少。
Alice存了100个FRAX代币要借给借款人,初始的fToken股价为1.00,她收到了100个fToken。从她的第一笔存款开始,借贷对已经赚了10 FRAX 的利息。因此金额显示为110(100 Frax存款+ 10 Frax利息)。目前fToken的股价为1.10 (110 FRAX / 100 fToken)
Amount
110
Shares
100
Alice Share Balance (fToken)
100
Bob Share Balance (fToken)
0
如果Bob现在存入100FRAX 用于贷款,我们将看到以下变化。首先,借贷对中的金额将增加100。fTokens的当前股价为1.10。因此Bob将收到90.91 (100 / 1.10)ftoken作为他的存款。资产库账户现在看起来像这样:
Amount
210
Shares
190.91
Alice Share Balance (fToken)
100
Bob Share Balance (fToken)
90.91
随着利息的增加,金额增加。如果额外的20Frax作为利息应计,资产金库帐户看起来像这样:
Amount
230
Shares
190.91
Alice Share Balance (fToken)
100
Bob Share Balance (fToken)
90.91
股价现已上涨至1.2048(230 Frax / 190.91 fToken)。这意味着Bob可以用90.91 ftoken赎回109.52 FRAX。同样,Alice可以用她的100 ftoken赎回120.48 Frax。
随着时间的推移,随着利息的增加,Alice和Bob可以用他们的ftoken赎回不断增加的标的资产。
每个交易对都被配置为根据利用率来调整利率。利用率是已存入资产中被借款人借出的总金额。Fraxlend 目前有两种可用的利率模型:
线性利率
时间加权可变利率
可变利率 V2
线性利率是一个可配置的函数,它允许有两个形式为y = mx +b
的线性函数。该函数接受在创建借贷对时定义的参数。该函数接受在创建交易对时定义的参数。
最小利率:利用率为0%时的利率 顶峰利率:当利用率等于顶峰利用率时的利率(即当两个斜率相交时) 顶峰利用率: 两个斜率相交处的利用率 最大利率: 当利用率为100%时的利率
这些配置值是不可变的,并且在借贷对创建时是确定的。
利率的计算公式如下:
如果利用率等于顶峰利用率,那么:
如果利用率低于顶峰利用率,那么:
如果利用率大于顶峰利用率,那么:
时间加权动态利率随时间调整当前利率。动态利率配置了一个半衰期值,以秒为单位,它决定了利率调整的速度。
最低利率:利率可降至的最低利率。 目标利用率区间:利率不调整,认为与市场预期均衡的利用率区间。 最高利率:利率可以上升到的最高利率。 利率半衰期:当利用率为0%时,利息减半所需的时间。这是利率调整的速度。在目前可用的利率计算器,利率半衰期是12小时。
时间加权动态利率允许市场发出合适的利率信号。
当利用率低于目标范围时,利率降低,这鼓励更多的借款和出借人抽回他们的资本,这两者都将利用率推回到目标范围。
当利用率高于目标范围时,利率上升,鼓励更多的贷款和更少的借款,使利用率回到目标范围。作为时间和利用率函数鼓励参与者贷款和借款。
下图显示了当利率半衰期为4小时,目标利用率范围为75% - 85%时,利率的变化情况:
这使得市场,而不是借贷对的创造者,来决定给定资产抵押借贷对的适当利率,借贷对的创造者只需要提供一个目标利用率。
可变利率 V2 利率结合了线性利率和时间加权可变利率的概念。具体来说,它使用线性利率中的线性函数来确定当前利率,但通过时间加权可变利率的公式调整顶点和最大利率。
与时间加权可变利率类似,可变利率 V2 也采用半衰期和目标利用率参数。当利用率较低时,顶点和最大利率将下降。如果利用率较高,顶点和最大利率将上升。下降或上升的速率由利用率和半衰期共同决定。如果利用率为 0%,顶点和最大利率每个半衰期将减少 50%;如果利用率为 100%,每个半衰期的增长为 100%。
这意味着利率将立即沿线性利率曲线对利用率的变化作出反应,同时通过调整线性利率曲线的斜率,长期适应市场条件。
每个借贷对都为用户提供了借入资产代币的机会,作为回报,借款人必须向借贷对提供适当数量的抵押品代币。
只要借款人有一个公开的头寸,利息就会产生并资本化。这意味着,随着时间的推移,借款人所欠的金额增加的金额等于他们所欠的利息。为了让借款人收回他们的抵押品,他们必须归还原始贷款金额加上所有应计利息。
就像我们使用资产金库帐户来跟踪总资产金额和相应的股份数量一样,我们使用借款金库帐户来跟踪借款总额、资本化利息和已发行的借款股份数量。
假设Alice用150美元的ETH借了100Frax(价值100美元)。自从她第一次借款以来,她已经积累了10Frax的利息。借款金库帐户将显示如下:
Amount
110 FRAX
Shares
100
Alice Collateral Amount
$150 ETH
Alice Borrow Shares Balance
100
记住,借款人的头寸必须保持在最大贷款价值比(LTV)以下。因为Alice的LTV是73.33%,她低于75%的最大值,所以她的位置是健康的。
我们用以下方法计算Alice的LTV。首先,我们将她的借款股份余额(100股)乘以借款股票价格(1.10),然后乘以以美元为单位的FRAX价格(1.00),计算出她的贷款价值为110美元。她的贷款价值是100美元(100x1.10x1.00)。她的抵押品价值是150美元。110美元/ 150美元= 73.33%
Bob现在借了100 Frax,用了价值175美元的ETH。鉴于目前的借入股价为1.10,他的借入股票余额将约为90.91。与出借人不同的是,借款人不会收到代表其债务的ERC20令牌,而是简单地存储在借贷对中。现在借款金库账户看起来是这样的:
Amount
210 FRAX
Shares
190.91
Alice Collateral Amount
$150 ETH
Alice Borrow Shares Balance
100
Bob Collateral Amount
$175 ETH
Bob Borrow Shares Balance
90.91
假设借贷对又增加了20Frax的利息。借款金库帐户现在看起来像这样:
Amount
230 FRAX
Shares
190.91
Alice Collateral Amount
$150 ETH
Alice Borrow Shares Balance
100
Bob Collateral Amount
$175 ETH
Bob Borrow Shares Balance
90.91
新的借款股份价格为 1.2048(230 / 190.91)。这意味着 Alice 需要偿还 120.48 FRAX(Alice 的股份 100 x 股份价格 1.2048)才能偿还她的债务。同样,Bob 需要偿还 109.52 FRAX(Bob 的股份 90.91 x 股份价格 1.2048)。
随着利息的累积,偿还贷款所需的金额增加,并且每个头寸的贷款价值比(LTV)发生变化。
Alice 的 LTV:80.32%(120.48 / 150)
Bob 的 LTV:62.58%(109.52 / 175)
由于利息累积并资本化,Alice 的头寸已进入不健康状态,因为她的 LTV 超过了最高 LTV 的 75%。这使她的头寸面临被清算的高风险。
Ethereum
Comptroller
Ethereum
Circuit Breaker
Ethereum
Operator
每一个借贷对都是一个独立的市场,通过存入一个不同的ERC-20代币(称为抵押品代币)来借入一个ERC-20代币(称为资产代币)。
当出借人将资产代币存入资产对池子时,他们将收到ftoken。ftoken是ERC-20代币,可兑换为资产代币,有时被称为基础资产。
借款人将抵押品代币存入资产对池子,作为交换,获得借入资产代币的权利
每个借款人的头寸都有一个贷款价值比(LTV)。这表示借入资产的价值与存入的抵押品价值之间的比率。当资产和抵押代币之间的汇率移动或当利息资本化时,LTV会发生变化。
如果借款人的LTV超过了最大LTV,他们的头寸就被认为是不健康的。为了解决这一问题,借款人可以添加抵押品或偿还债务,从而将LTV拉回到一个健康的范围。
最大LTV值是不可变的,并在部署时配置。对于公共的、无需许可的借贷对,该值设置为75%。自定义条款清单部署可以手动设置该值,甚至通过将该值设置为100%以上来创建担保不足的贷款。最大LTV配置在100%以上,必须附有借款人白名单,以防止恶意行为者。通过调用pair上的 maxLTV()
函数可以找到配置的值。
每个交易对都配置使用特定的利率计算器合约来确定利率。 在推出时,Fraxlend 支持两种类型的利率计算器。
时间加权可变利率计算器—— 允许根据已借资产的数量(即利用率)来改变利率。当利用率低于目标时,利率将下调;当利用率高于目标时,利率将上调。更多信息请参见高级概念:
线性利率计算器 —— 纯粹根据利用率计算利率。较低的利用率会导致较低的借款利率,而较高的利用率则会导致较高的借款利率。更多信息请参见高级概念:
可变利率 V2 —— 根据利用率来计算利率。利率会立即对利用率的变化作出反应,遵循一个利率函数 f(利用率) = 利率。然而,当利用率高于目标时,函数的斜率增加;当利用率低于目标时,函数的斜率减小。这意味着利率会对利用率的变化即时反应。长期的低利用率或高利用率会改变利率曲线的形状。更多信息请参见高级概念:可变利率 V2。
当借款人的LTV高于最高LTV时,任何用户都可以代表借款人偿还全部或部分债务,并获得同等价值的抵押品和清算费用。清算费用是不可更改的,并在部署时确定。默认情况下,该值被设置为10%,可以通过调用借贷对上的liquidationFee()
view函数来访问。
当出借人存入资产代币时,他们以当前的fToken股价收到fToken。ftoken代表贷款人在存入对中的基础资产总额中所占的份额,加上来自借款人的资本化利息。随着利息的增加,股价也会上升。赎回时,ftoken可赎回数量不断增加的资产代币,其中包括资本化的利息。要检查当前的fToken股价,调用totalAsset()
view函数并比较amount/shares的值。
金库账户是交易对中所有会计核算的核心概念。金库账户是一个结构体,包含两个值:
金库账户中的代币总量。
金库账户中的股份总数。
股份代表对金额的总索取权。股份可以兑换为资产代币。兑换率,即股份价格,通过将金额值除以股份值来确定。本质上,这就是股份与基础资产代币之间的兑换率。 要将一个表示为金额的值转换为相应的股份,需要将金额除以股份价格。要将股份转换为金额,则乘以股份价格。
股份 = 金额 / 股份价格
金额 = 股份 x 股份价格
Frax生态系统中的ETH有两种形式,frxETH (Frax Ether)和sfrxETH (质押的 Frax Ether)。
frxETH 作为一种与 ETH 松散挂钩的稳定币,1 frxETH 始终代表 1 ETH,且流通中的 frxETH 数量与 Frax ETH 系统中的 ETH 数量相匹配。当 ETH 被发送到 frxETHMinter 时,会铸造出等量的 frxETH。单独持有 frxETH 不会获得质押收益,应被视为类似于持有 ETH。frxETH 的挂钩定义为 1.00 汇率两侧的 1% 范围,即 frxETH 的挂钩被维持在每 1 frxETH 兑换 1.01-0.9900 ETH 之间。
sfrxETH是一个ERC-4626标准的金库,设计用于累积Frax ETH验证节点的质押收益。在任何时候,frxETH可以通过存入sfrxETH金库来交换sfrxETH,这使得用户通过他们的frxETH赚取质押收益。随着时间的推移,由于验证节点收益累积,等量的frxETH被铸造并添加到库中,使得用户赎回他们的sfrxETH时可以获得比他们存入frxETH更多。
frxETH与sfrxETH的汇率随着时间的推移而增加,因为质押奖励被添加到金库中。通过持有sfrxETH,您持有金库的frxETH不断增加可赎回收益的权利,在sfrxETH持有者之间按他们在总sfrxETH中的份额比例分配质押奖励。这类似于其他自动复合收益代币,如Aave的aUSDC和Compound的cUSDC。
Frax 的流动性以太坊质押衍生品。
Frax Ether 是一种流动性以太坊质押衍生品和稳定币系统,旨在独特地利用 Frax Finance 生态系统,以最大化质押收益并简化以太坊的质押过程,从而为用户提供一种简化、安全且原生于去中心化金融(DeFi)的方式来赚取以太坊(ETH)的利息。此外,frxETH 被用作 Fraxtal L2 链上的燃料代币。最后,8% 的收入作为费用留存,用于支持 Frax 生态系统和 FXS 持有者。frxETH 与 ETH 的资产负债表及挂钩独立于 FRAX 的 1 美元资产负债表及挂钩。
Frax Ether 系统包括三个主要组成部分:Frax Ether(frxETH)、质押 Frax Ether(sfrxETH)和 Frax ETH 铸造器。
frxETH 作为一种稳定币,与 ETH 之间保持松散的挂钩,利用 Frax 在稳定币领域的成功经验,将 ETH 引入 Frax 生态系统。frxETH 的挂钩定义为 1% 的汇率范围,即 1.01 到 0.9900。
sfrxETH 是一种能够累积质押收益的frxETH 版本。Frax Ether 验证器所产生的所有利润都分配给 sfrxETH 持有者。通过将 frxETH 兑换为 sfrxETH,用户将有资格获得质押收益,该收益在将 sfrxETH 转换回 frxETH 时兑现。
Frax ETH 铸造器(frxETHMinter)允许将 ETH 兑换为 frxETH,将 ETH 引入 Frax 生态系统,并在能够的情况下启动新的验证器节点,铸造等于发送 ETH 数量的新 frxETH。
单独质押以太坊需要运行验证节点相关的技术知识和初始设置,而且一次需要存入32个ETH。通过选择使用流动ETH质押衍生品,而不是以另一种形式质押ETH,质押收益可以更简单地积累,抽象了运行验证节点的条件,允许在任何数量的ETH获得收益,允许在任何时间和任何规模的取款,并使得整个DeFi有更大的可组合性。
根据 FIP-122,ETH 质押收入的分配如下:
sfrxETH 奖励 [90%]:以 frxETH 形式奖励给 sfrxETH 保险库的质押者,这产生 sfrxETH 的年化收益率(APY)。
协议费用 [8%]:发送到 Frax 生态系统的合约(如 AMOs),最终用于 FXS 持有者的利益和 FRAX 挂钩的支持。
保险基金 [2%]:用于覆盖可能的削减事件/不可预见的惩罚。支持 frxETH 的存款,确保 frxETH 维持超过 100% 的抵押率,以应对任何可能的问题或损失。
一个抽象合约,其中包含 FraxlendPair 的核心逻辑和存储。
构造函数在合约部署时被调用。
初始化函数initialize
在部署后立即被调用。
此函数只能由部署者调用。
_totalAssetAvailable
函数返回合约中资产代币的总余额。
_isSolvent
函数用于判断在给定的汇率下,特定借款人是否具备偿还能力。
_isPastMaturity
函数用于判断当前区块时间戳是否已经超过到期日期(maturityDate)。
在执行合约代码后检查偿还能力。
检查 msg.sender
是否为已批准的借款人。
检查 msg.sender
和 _receiver
是否都是已批准的贷款人。
确保在超过到期日期时不调用该函数。
当借款人累积利息时,发出 AddInterest
事件。
当利率更新时,发出 UpdateRate
事件。
addInterest
函数是 _addInterest
的公共实现,允许第三方触发利息的累积。
_addInterest
函数在每个外部函数调用之前被调用,用于累积利息并更新利率。
该函数每个区块只能调用一次。
当抵押品与资产的汇率更新时,发出 UpdateExchangeRate
事件。
updateExchangeRate
函数是 _updateExchangeRate
的外部实现。
由于这些查询可能会很耗费资源,该函数在每个区块中最多只能被调用一次。
_updateExchangeRate
函数用于获取最新的汇率,即购买 1e18 资产所需的抵押品数量。
由于这些查询可能会非常耗费资源,该函数在每个区块中最多只能被调用一次。
_deposit
函数是用于出借资产的内部实现。
调用者必须在调用该函数之前对资产代币合约调用 ERC20.approve
。
deposit
函数允许用户通过指定要出借的资产代币数量来出借资产。
调用者必须在调用该函数之前对资产代币合约调用 ERC20.approve
。
mint
函数允许用户通过指定要铸造的资产股份(fTokens)数量来出借资产。
调用者必须在调用该函数之前对资产代币合约调用 ERC20.approve
。
_redeem
函数是一个内部实现,允许贷款人从交易对中提取他们的资产代币。
调用者必须在调用该函数之前对资产代币合约调用 ERC20.approve
。
redeem
函数允许调用者将他们的资产股份兑换为资产代币。
withdraw
函数允许用户将他们的资产股份兑换为指定数量的资产代币。
当借款人增加其头寸时,发出 BorrowAsset
事件。
_borrowAsset
函数是借款资产的内部实现。
borrowAsset
函数允许用户开立或增加借款头寸。
如果适用,借款人必须在调用该函数之前对抵押代币合约调用 ERC20.approve
。
_addCollateral
函数是向借款人头寸添加抵押品的内部实现。
addCollateral
函数允许调用者向借款人头寸添加抵押代币。
msg.sender
必须在调用该函数之前对抵押代币合约调用 ERC20.approve()
。
当抵押品从借款人的头寸中移除时,发出 RemoveCollateral
事件。
_removeCollateral
函数是从借款人头寸中移除抵押品的内部实现。
removeCollateral
函数用于从 msg.sender
的借款头寸中移除抵押品。
调用后,msg.sender
必须保持偿付能力,否则交易将会回退。
每当债务头寸被偿还时,发出 RepayAsset
事件。
_repayAsset
函数是偿还借款头寸的内部实现。
付款人必须在调用该函数之前对资产代币合约调用 ERC20.approve()
。
repayAsset
函数允许调用者偿还特定借款人的债务。
调用者必须首先对资产代币合约调用 ERC20.approve()
。
当发生清算时,发出 Liquidate
事件。
liquidate
函数允许第三方偿还已成为不偿还能力的借款人的债务。
调用者必须在调用 Liquidate()
之前对资产代币合约调用 ERC20.approve
。
当借款人开立新的杠杆头寸时,发出 LeveragedPosition
事件。
leveragedPosition
函数允许用户以最小的前期抵押品进入杠杆借款头寸。
调用者必须在调用该函数之前对抵押代币合约调用 ERC20.approve()
。
每当调用 repayAssetWithCollateral()
时,发出 RepayAssetWithCollateral
事件。
repayAssetWithCollateral
函数允许借款人使用合约中现有的抵押品偿还其债务。
Frax Ether (frxETH) V2版本
frxETH V2 允许匿名/外部验证者进入 frxETH 系统。所有的 ETH 质押奖励将直接流入他们控制的 ValidatorPool 智能合约,因此不会为他们铸造任何 frxETH。然而,他们会获得可以用于借入通过 V1 铸造机制进入的 ETH 的信用。此借款的抵押品是一个被托管的退出消息,如果他们的借款头寸变得不健康,frxETH 协议可以执行该消息。退出的资金仅流向 ValidatorPool,并在所有贷款还清之前“被困”在其中。
每存入 32 ETH 的信用额度将取决于验证者运营池。匿名池每 32 ETH 仅能获得 24 ETH 的借款信用,而已知/社区白名单池每 32 ETH 可以获得高达 31 ETH 的借款信用。借入的 ETH 仅可用于启动额外的验证者。一个离线机器人 Beacon Oracle 将持续监控所有验证者/验证者池的健康状况,并在出现清算情况时执行退出消息。此外,如果因赎回、重度借贷或两者兼而有之而导致 ETH 变得稀缺,利率将会上升。
frxETH 协议将通过投资闲置的 ETH(Curve AMOs)以及从验证者池的借贷活动中获得利息来赚取收入。现有的 V1 Frax 运营验证者也将从 ETH 质押中获得收益。
(Borrow-AMM)
BAMM(借贷模块)是基于 Fraxswap 构建的借贷模块。与其他借贷模块不同,BAMM 不需要外部预言机或外部流动性来安全运行。这是因为所需的流动性由借贷方提供。通过 BAMM,我们可以为以前由于没有稳固的预言机或足够的流动性而无法实现的交易对创建借贷服务。借款人可以租用由贷方提供的流动性,以自动进行杠杆操作,从而即使在高波动性情况下也能保持偿付能力。这意味着借款人不会面临突发的清算,因此也不需要支付高额的清算费用给清算人,从而为借款人和贷方创造了更好的交易。每个 BAMM 池都是建立在单个 Fraxswap 池之上的,该池持有两种代币。借款人可以安全地对每种代币进行多头和空头操作,而无需担心突发的清算风险。
借款人将其全部流动性提供者(LP)代币从 Fraxswap 借出到 BAMM 借贷池中。借出金额的计算公式为:sqrt(X×Y),其中 X 和 Y 是池中两种代币的数量。借款人通过从借款人那里租用流动性赚取 Fraxswap 的交易费用和利息。
每个借款人都有自己的保管箱,在其中存入抵押品、租用流动性并提取代币。租用的流动性 LP 代币在租用时会被销毁,基础代币则存放在用户的保管箱中作为抵押品。用户还可以从保管箱中提取代币,但必须保持偿付能力。当租用的流动性金额少于保管箱中 sqrt(X×Y) 的 98% 时,用户才被认为是偿付能力良好的。请注意,在计算偿付能力时,无论是租用的 LP 数量还是保管箱中的资产,均使用 sqrt(X×Y)。这些数值在价格波动时不变,因此借款人在价格变动时不会失去偿付能力。由于利息支付,借款人的债务会随着时间的推移逐渐增加,因此借款人应定期检查其头寸以避免清算。租用流动性的利率是使用 Fraxlend 中同样的动态利率模型计算的。
frxETH 与 Frax 和 FPI 稳定币共享大量代码,并实现了 ERC-2612 标准,允许通过传递给 permit()
函数的 ERC-712 签名进行支出批准。
sfrxETH 是符合 ERC-4626 标准的保险库。要获取 sfrxETH,首先需要将 sfrxETH 合约批准为 frxETH 的支出者,然后调用 mint()
(铸造特定数量的 sfrxETH)或 deposit()
(存入特定数量的 frxETH)。批准和铸造步骤可以通过 depositWithSignature()
或 mintWithSignature()
组合,从而无需进行两次单独的交易。
随着验证者产生质押收益,等量的 frxETH 会被铸造并发送到 sfrxETH 合约。这意味着,一旦奖励同步后,用户可以通过赎回 sfrxETH 获取比最初铸造时更多的 frxETH。
为防止恶意用户盗取验证者的收益分配到保险库,奖励分配会在时间周期内平滑分配。每当调用 sfrxETH 合约上的 syncRewards()
时,合约内部余额之外的任何额外 frxETH 都会排队,线性分配到剩余的周期窗口。
sfrxETH 也符合 ERC-2612 标准,允许使用签名授权。
有关验证者的实时信息和监控,请参阅 。
frxETHMinter 会在接收到 ETH 时通过 submit()
或 receive()
函数铸造 frxETH。每当提交的金额使 minter 余额超过 32 ETH 时,合约会从堆栈中取出一个验证者的存款凭证,并将 32 ETH 的存款连同凭证一起发送到 ETH 2.0 的存款合约,自动启动一个新的验证者节点。
为确保验证者随时准备接受存款,新的凭证会根据需要被添加到堆栈中。如果合约在任何时候耗尽了验证者,frxETH 将继续照常铸造(除非暂停),但不会启动新的验证者,直到更多的验证者凭证被添加到堆栈中。
堆栈中的所有验证者共享同一个提款凭证,即所有验证者共用同一个提款地址。该地址在启动时被设置为 Frax 金库合约,以确保在上线后可以安全地处理提款。
此外,在添加验证者时,必须提供生成存款数据时的 DepositDataRoot
,以确保在 ETH 存入时,防止因参数错误导致的验证者被错误接受。
协议可能设置在提交 ETH 时预留部分资金的比例。这些资金在收集 32 ETH 存款用于启动验证者时不被计算在内,而是用于在 DeFi 市场进行做市操作,以确保 frxETH 的流动性市场。
每个验证者的公开地址和实时统计数据可以在以下链接监控:
第三方和社区对所有 frxETH 验证者的跟踪信息可以在以下链接找到:
_configData
bytes
abi.encode(address _asset, address _collateral, address _oracleMultiply, address _oracleDivide, uint256 _oracleNormalization, address _rateContract, bytes memory _rateInitData)
_immutables
bytes
_maxLTV
uint256
The Maximum Loan-To-Value for a borrower to be considered solvent (1e5 precision)
_liquidationFee
uint256
The fee paid to liquidators given as a % of the repayment (1e5 precision)
_maturityDate
uint256
The maturityDate date of the Pair
_penaltyRate
uint256
The interest rate after maturity date
_isBorrowerWhitelistActive
bool
Enables borrower whitelist
_isLenderWhitelistActive
bool
Enables lender whitelist
_name
string
The name of the contract
_approvedBorrowers
address[]
An array of approved borrower addresses
_approvedLenders
address[]
An array of approved lender addresses
_rateInitCallData
bytes
The configuration data for the Rate Calculator contract
_totalAsset
struct VaultAccount
VaultAccount struct which stores total amount and shares for assets
_totalBorrow
struct VaultAccount
VaultAccount struct which stores total amount and shares for borrows
[0]
uint256
The balance of Asset Tokens held by contract
_borrower
address
The borrower address to check
_exchangeRate
uint256
The exchange rate, i.e. the amount of collateral to buy 1e18 asset
[0]
bool
Whether borrower is solvent
[0]
bool
Whether or not the debt is past maturity
_borrower
address
The borrower whose solvency we will check
_receiver
address
An additional receiver address to check
_interestEarned
uint256
The total interest accrued by all borrowers
_rate
uint256
The interest rate used to calculate accrued interest
_deltaTime
uint256
The time elapsed since last interest accrual
_feesAmount
uint256
The amount of fees paid to protocol
_feesShare
uint256
The amount of shares distributed to protocol
_ratePerSec
uint256
The old interest rate (per second)
_deltaTime
uint256
The time elapsed since last update
_utilizationRate
uint256
The utilization of assets in the Pair
_newRatePerSec
uint256
The new interest rate (per second)
_interestEarned
uint256
The amount of interest accrued by all borrowers
_feesAmount
uint256
_feesShare
uint256
_newRate
uint64
_interestEarned
uint256
The amount of interest accrued by all borrowers
_feesAmount
uint256
_feesShare
uint256
_newRate
uint64
_rate
uint256
The new rate given as the amount of Collateral Token to buy 1e18 Asset Token
_exchangeRate
uint256
The new exchange rate
_exchangeRate
uint256
The new exchange rate
_totalAsset
struct VaultAccount
An in memory VaultAccount struct representing the total amounts and shares for the Asset Token
_amount
uint128
The amount of Asset Token to be transferred
_shares
uint128
The amount of Asset Shares (fTokens) to be minted
_receiver
address
The address to receive the Asset Shares (fTokens)
_amount
uint256
The amount of Asset Token to transfer to Pair
_receiver
address
The address to receive the Asset Shares (fTokens)
_sharesReceived
uint256
The number of fTokens received for the deposit
_shares
uint256
The number of Asset Shares (fTokens) that a user wants to mint
_receiver
address
The address to receive the Asset Shares (fTokens)
_amountReceived
uint256
The amount of Asset Tokens transferred to the Pair
_totalAsset
struct VaultAccount
An in-memory VaultAccount struct which holds the total amount of Asset Tokens and the total number of Asset Shares (fTokens)
_amountToReturn
uint128
The number of Asset Tokens to return
_shares
uint128
The number of Asset Shares (fTokens) to burn
_receiver
address
The address to which the Asset Tokens will be transferred
_owner
address
The owner of the Asset Shares (fTokens)
_shares
uint256
The number of Asset Shares (fTokens) to burn for Asset Tokens
_receiver
address
The address to which the Asset Tokens will be transferred
_owner
address
The owner of the Asset Shares (fTokens)
_amountToReturn
uint256
The amount of Asset Tokens to be transferred
_amount
uint256
The amount of Asset Tokens to be transferred in exchange for burning Asset Shares
_receiver
address
The address to which the Asset Tokens will be transferred
_owner
address
The owner of the Asset Shares (fTokens)
_shares
uint256
The number of Asset Shares (fTokens) burned
_borrower
address
The borrower whose account was debited
_receiver
address
The address to which the Asset Tokens were transferred
_borrowAmount
uint256
The amount of Asset Tokens transferred
_sharesAdded
uint256
The number of Borrow Shares the borrower was debited
_borrowAmount
uint128
The amount of the Asset Token to borrow
_receiver
address
The address to receive the Asset Tokens
_sharesAdded
uint256
The amount of borrow shares the msg.sender will be debited
_borrowAmount
uint256
The amount of Asset Token to borrow
_collateralAmount
uint256
The amount of Collateral Token to transfer to Pair
_receiver
address
The address which will receive the Asset Tokens
_shares
uint256
The number of borrow Shares the msg.sender will be debited
_sender
address
The source of funds for the new collateral
_collateralAmount
uint256
The amount of Collateral Token to be transferred
_borrower
address
The borrower account for which the collateral should be credited
_collateralAmount
uint256
The amount of Collateral Token to be added to borrower's position
_borrower
address
The account to be credited
_sender
address
The account from which funds are transferred
_collateralAmount
uint256
The amount of Collateral Token to be transferred
_receiver
address
The address to which Collateral Tokens will be transferred
_borrower
address
_collateralAmount
uint256
The amount of Collateral Token to remove from the borrower's position
_receiver
address
The address to receive the Collateral Token transferred
_borrower
address
The borrower whose account will be debited the Collateral amount
_collateralAmount
uint256
The amount of Collateral Token to transfer
_receiver
address
The address to receive the transferred funds
_sender
address
The msg.sender of the transaction
_borrower
address
The borrower whose account will be credited
_amountToRepay
uint256
The amount of Asset token to be transferred
_shares
uint256
The amount of Borrow Shares which will be debited from the borrower after repayment
_totalBorrow
struct VaultAccount
An in memory copy of the totalBorrow VaultAccount struct
_amountToRepay
uint128
The amount of Asset Token to transfer
_shares
uint128
The number of Borrow Shares the sender is repaying
_payer
address
The address from which funds will be transferred
_borrower
address
The borrower account which will be credited
_shares
uint256
The number of Borrow Shares which will be repaid by the call
_borrower
address
The account for which the debt will be reduced
_amountToRepay
uint256
The amount of Asset Tokens which were transferred in order to repay the Borrow Shares
_borrower
address
The borrower account for which the liquidation occured
_collateralForLiquidator
uint256
The amount of Collateral Token transferred to the liquidator
_shares
uint256
The number of Borrow Shares the liquidator repaid on behalf of the borrower
_shares
uint256
The number of Borrow Shares repaid by the liquidator
_borrower
address
The account for which the repayment is credited and from whom collateral will be taken
_collateralForLiquidator
uint256
The amount of Collateral Token transferred to the liquidator
_borrower
address
The account for which the debt is debited
_swapperAddress
address
The address of the swapper which conforms the FraxSwap interface
_borrowAmount
uint256
The amount of Asset Token to be borrowed to be borrowed
_borrowShares
uint256
The number of Borrow Shares the borrower is credited
_initialCollateralAmount
uint256
The amount of initial Collateral Tokens supplied by the borrower
_amountCollateralOut
uint256
The amount of Collateral Token which was received for the Asset Tokens
_swapperAddress
address
The address of the whitelisted swapper to use to swap borrowed Asset Tokens for Collateral Tokens
_borrowAmount
uint256
The amount of Asset Tokens borrowed
_initialCollateralAmount
uint256
The initial amount of Collateral Tokens supplied by the borrower
_amountCollateralOutMin
uint256
The minimum amount of Collateral Tokens to be received in exchange for the borrowed Asset Tokens
_path
address[]
An array containing the addresses of ERC20 tokens to swap. Adheres to UniV2 style path params.
_totalCollateralBalance
uint256
The total amount of Collateral Tokens added to a users account (initial + swap)
_borrower
address
The borrower account for which the repayment is taking place
_swapperAddress
address
The address of the whitelisted swapper to use for token swaps
_collateralToSwap
uint256
The amount of Collateral Token to swap and use for repayment
_amountAssetOut
uint256
The amount of Asset Token which was repaid
_sharesRepaid
uint256
The number of Borrow Shares which were repaid
_swapperAddress
address
The address of the whitelisted swapper to use for token swaps
_collateralToSwap
uint256
The amount of Collateral Tokens to swap for Asset Tokens
_amountAssetOutMin
uint256
The minimum amount of Asset Tokens to receive during the swap
_path
address[]
An array containing the addresses of ERC20 tokens to swap. Adheres to UniV2 style path params.
_amountAssetOut
uint256
The amount of Asset Tokens received for the Collateral Tokens, the amount the borrowers account was credited
Ethereum
Comptroller
Arbitrum
Base (LayerZero)
0xF010a7c8877043681D59AD125EbF575633505942
Blast (LayerZero)
0xF010a7c8877043681D59AD125EbF575633505942
BSC
Ethereum (native)
Ethereum (LayerZero)
0xF010a7c8877043681D59AD125EbF575633505942
Fantom
Fraxtal (as wfrxETH)
As frxETH is the gas token, wfrxETH is the WETH equivalent wfrxETH: 0xfc00000000000000000000000000000000000006
Fraxtal (LayerZero)
0x43eDD7f3831b08FE70B7555ddD373C8bF65a9050
Metis (LayerZero)
0xF010a7c8877043681D59AD125EbF575633505942
Mode (LayerZero)
0x43eDD7f3831b08FE70B7555ddD373C8bF65a9050
Moonbeam
Optimism
Polygon
Sei (LayerZero)
0x43eDD7f3831b08FE70B7555ddD373C8bF65a9050
X-Layer (Layer-Zero)
0x43eDD7f3831b08FE70B7555ddD373C8bF65a9050
Arbitrum
Base (LayerZero)
0x1f55a02A049033E3419a8E2975cF3F572F4e6E9A
Blast (LayerZero)
0x1f55a02A049033E3419a8E2975cF3F572F4e6E9A
BSC
Ethereum (native)
Ethereum (LayerZero)
0x1f55a02A049033E3419a8E2975cF3F572F4e6E9A
Fantom
Fraxtal (native)
Fraxtal (LayerZero)
0x3ec3849c33291a9ef4c5db86de593eb4a37fde45
Metis (LayerZero)
0x1f55a02A049033E3419a8E2975cF3F572F4e6E9A
Mode (LayerZero)
0x3ec3849c33291a9ef4c5db86de593eb4a37fde45
Moonbeam
Optimism
Polygon
Sei (LayerZero)
0x3ec3849c33291a9ef4c5db86de593eb4a37fde45
X-Layer (LayerZero)
0x3ec3849c33291a9ef4c5db86de593eb4a37fde45
请参见Chainlink Oracle 接口文档
https://docs.chain.link/data-feeds/api-reference#aggregatorv3interface
目前支持 frxETH/ETH 和 sfrxETH/ETH。
frxEth价格是从两个链上价格来源确定的。第一个价格来源是frxEth / ETH Curve池的EMA预言机 - 0xa1f8a6807c402e4a15ef4eba36528a3fed24e577。该价格的最低限制为0.7(0.7 frxEth = 1 ETH),最高限制为1(1 frxEth = 1 ETH)。
第二个价格来源来自Uniswap的frxEth / FRAX池的TWAP预言机 - 0x36C060Cc4b088c830a561E959A679A58205D3F56。然后,我们从这个Chainlink预言机(0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419)获取ETH的美元价格,并从这个Chainlink预言机(0xB9E1E3A9feFf48998E45Fa90847ed4D467E8BcfD)获取FRAX的美元价格。
这些Chainlink价格用于将frxEth / FRAX池价格转换为frxEth / ETH价格,使用以下公式:
来自Uniswap的价格同样被限制在0.7和1之间,反映了Curve的价格。
这两个价格中较低的价格被返回为priceLow,较高的价格被返回为priceHigh。这些价格随后被写入frxEth / ETH的Frax预言机中。
简单地从sfrxEth合约中检索pricePerShare(),以与上述frxEth双预言机相同的方式检索priceHigh和priceLow,并返回以下方程:
这是因为pricePerShare()
返回一个sfrxEth
值多少个frxEth
。pricePerShare()
会随着时间的推移而上涨。
这些价格随后被写入sfrxEth / ETH
的Frax Oracle。
只需在Frax Oracle合约上调用 https://docs.chain.link/data-feeds/api-reference#getrounddata 或 https://docs.chain.link/data-feeds/api-reference#latestrounddata,以获取您想要价格的资产。
即将到来......
投资者托管(团队热钱包):0x5180db0237291A6449DdA9ed33aD90a38787621c
预言机更新机器人(杂项链上任务):0xBB437059584e30598b3AF0154472E47E6e2a45B9
工具/辅助合约部署者(另一个团队热钱包):0x36a87d1e3200225f881488e4aeedf25303febcae
Frax Finance 为涉及用户资金或协议控制的资金/抵押品存在风险的漏洞提供业内最大的奖励之一。
该奖励的计算方式为潜在漏洞总价值的 10% 或价值 1000 万美元的 FRAX 和 FXS(均匀分配)中的较低者。两种代币均可立即流动。奖励将在事件发生后立即发放,最长不超过 5 天,具体取决于时间锁和缓解措施。该奖励采用“无条件”政策,适用于任何披露和/或事件后资金的立即返还。
缓慢的套利机会或价值交换在较长时间内不适用于此奖励,将获得基础补偿奖励 50,000 FRAX。 注意:该奖励不涵盖任何前端错误/视觉错误或任何与 Frax Protocol 交互的网络应用程序的服务器端代码类型。上述漏洞奖励仅适用于智能合约代码。管理 Frax Protocol 价值和/或用户存入价值的任何链上的智能合约代码均包含在此奖励中。
此奖励适用于由 Frax Deployer 地址部署的所有智能合约,包括 Fraxswap AMM、Fraxlend 和 frxETH。
联系方式:您可以通过包括 Twitter、Telegram、Discord 或 Signal 在内的任何沟通渠道匿名联系。
Fraxtal Merkle 预言机(Fraxtal-MOs)是一类预言机,利用 eth_getProof
RPC 方法在以太坊 L2(如 Fraxtal)上证明 L1 状态。
Fraxtal-MOs 利用四个关键合约来验证和传输状态。
预部署合约,用作 L2 上 L1 区块哈希的注册表。
合约用于验证给定的区块头与通过 FraxchainL1Block 合约中继的 L1 区块哈希。该合约负责存储状态根哈希以及 L1 时间戳。
合约执行状态根验证。根据通过 eth_getProof RPC 方法离线构建的默克尔证明,该合约将验证并提取“证明”的存储槽值到 L2 区块链。这些“证明”的值随后被传递给预言机本身。
传递这些“证明”值的过程是无信任的,任何人都可以提交与给定以太坊 L1 地址的预先批准的槽对应的有效默克尔证明。
合约接受来自 MerkleProofPriceSoure 合约的“证明” L1 数据。
对于 sFrax 和其他 ERC4626 保险库,这些“证明”的值定义了 L1 上保险库代币价值累积函数的当前斜率。
这些预言机公开以下函数,以允许用户查询相关资产的价格:
将 L1 数据传输/证明到 L2 的过程:
步骤 1: 在 L2 上证明 L1 的区块头。
步骤 2: 提交预定义 L1 地址和存储槽的存储证明。
以下代码应作为生成上述 Fraxtal 智能合约接受的函数参数的示例。
有关 RPC 方法的文档:eth_getBlockByNumber
和 eth_getProof
生成 L1 区块头的代码。
sFrax/Frax
sfrxEth/frxEth
FPI/USD
简要说明: 资本效率以及去中心化。
FRAX稳定币在20多条不同的链上。以太坊、Fraxtal和Arbitrum是最大的链。FXS、FPI、frxETH、sfrxETH和sFRAX也在许多这些链上。
FRAX代币于2020年12月20日由Sam Kazemian, Travis Moore Jason Huan.
Frax的创始人Sam Kazemian和Travis Moore(Theodor "Ted" Forselius 和 Mahbod Moghadam一起)于2014年12月创建了Everipedia(现在称为IQ.wiki)。Sam和Travis仍然担任顾问,但该公司现在主要由Ted Forselius、 Navin Vethanayagam和 Cesar Rodriguez领导。
截至2024年11月8日,团队有13名成员。
像Fraxlend和Fraxswap这样的子项目的目的是最终为FRAX生态系统代币(如FXS、sFRAX、frxETH/sfrxETH)生成效用,并稳定/抵押FRAX的锚定目标。目标从来不是与更大的竞争对手竞争(例如,Aave用于Fraxlend,Uniswap用于Fraxswap)。
由于Frax协议每天只更新一次Frax Oracle的价格,因此价格可能会有最多23小时59分钟的延迟。如果您需要更新的价格,可以在Dual Oracle上调用addRoundData()来写入一个最新价格,然后在Frax Oracle上调用latestRoundData() / getRoundData() / getPrice()来获取最新价格。
控制所有L1上Frax Oracle的所有配置:0x8412ebf45bAC1B340BbE8F318b928C466c4E39CA
控制所有Arbitrum上Frax Oracle的所有配置:0xB426B13372B7c967C4a2371B5e95FC7dc37545Db
对Oracle操纵攻击的处理是经济性的。协议拥有的流动性太多,以至于操纵Curve/Uniswap池子不会带来利润。
价格限制确保frxEth/sfrxEth永远不会被高估,并且不会被低估超过30%。frxEth完全由验证者中的ETH支持,因此它面临的唯一风险是时间延续风险。
FrxEthEthDualOracle: 0x350a9841956D8B0212EAdF5E14a449CA85FAE1C0
SfrxEthEthDualOracle: 0x584902BCe4282003E420Cf5b7ae5063D6C1c182a
SfrxEthFraxOracle: 0x3d3D868522b5a4035ADcb67BF0846D61597A6a6F
ArbitrumBlockHashRelay: 0x784906554d44d33c2764c86e8848a2bd71c2e3a7
ArbitrumBlockHashProvider: 0x240ff0894c584d39f992de5fdb603e03fc7e8a98
StateRootOracle: 0x11afa1d35f246fdc00d789e4a06f682b206f88c9
MerkleProofPriceSource: 0xb032b46f835fa9e3d95d1e3f46fd307429505f9a
双重预言机 / 价格来源
FrxEthEthDualOracle: TBD
SfrxEthEthDualOracle: TBD
SfrxEthFraxOracle: TBD
1) 2) 搜索“ 合约地址”
子图:
Swagger 文档 (V1):
Swagger 文档 (V2):
综合数据:
池 子APR 和收益农场信息:
FXS在整个系统中的分布
DeFi协议利用流动性计划来启动增长并向社区成员分发协议代币。为此,所有FXS代币的60%将通过各种收益 farming、流动性激励和独家治理提案在几年内分发。5%则用于团队的更多自由裁量活动,如第三方补助、审计、漏洞赏金和合作伙伴关系(不用于个人团队成员的利益)。
根据FXS分发的原始设计规范,FXS的供应量将在每年的12月20日减半。最初,根据 FIP-16 veFXS gauges每天向FXS指标的发行量为25,000个FXS。截至2024年10月2日,由于进行了3次减半(见下文),当前的日发行量为3,125个FXS。这些变化不会解锁已锁定的流动性池,因为它们是FXS供应的正常发行计划。
随着DeFi领域的不断发展,这些发行量可以通过完整的Frax改进提案(FIP)治理投票进行更改,如果FIP通过,流动性池锁定和提升权重可以重新设定。完整投票需要2周的讨论,然后根据官方治理流程进行代币持有者投票。
社区治理可以决定支持哪些池子、项目和倡议,并制定发行计划,但总量不能超过1亿个FXS。因此,最多将有6,000万FXS分配给社区,用于流动性项目和其他DeFi倡议,这些都需经过治理投票。治理可以将新的项目添加到剩余的分配中,但由于1亿FXS的硬上限,分配总量不得超过6,000万FXS。这是为了对FXS的数量设置硬性上限,并规定分发FXS所需的时间长度。这个发行率的选择旨在平衡对早期采用者的大量奖励需求,同时避免过早分发所有FXS,以确保长期社区的可持续性。FXS的发行应更像是比特币挖矿的模式。FXS的分发需要是多年的、延续的,并且在协议达到广泛应用之前是可持续的。
社区财库合约地址: 0x63278bF9AcdFC9fA65CFa2940b89A34ADfbCb4A1
项目财库应用于资助Frax技术的发展、开源代码的维护、未来智能合约的审计、通过负责任披露的漏洞赏金、可能的跨链实现、团队薪酬、新协议级功能和更新的创建、Frax改进提案(FIPs)、与交易所和DeFi项目的合作、以及在启动时为自动做市商提供流动性。该资金的使用由团队自行决定。
团队(裁定)合约地址 0x9AA7Db8E488eE3ffCC9CdFD4f2EaECC8ABeDCB48
团队代币保留给创始人和原始的早期贡献者。Frax 协议在 2018 年底构思,工作在 2019 年初开始。自构思以来,Frax 概念已有超过 6 年的历史。创始人和早期成员对 Frax 的贡献对协议的发布至关重要。团队将继续与更广泛的社区一起在 Frax 上工作。这一分配于 2021 年 12 月 20 日完成。
团队分配财库合约地址:0x8D4392F55bC76A046E443eb3bab99887F4366BB0
顾问代币用于法律、技术和商业等领域的战略工作,以推动 Frax 协议的采用。这些代币在 3 年内均匀分配,并于 2023 年 12 月 20 日完成。
顾问分配财库合约地址:0x874a873e4891fB760EdFDae0D26cA2c00922C404
Frax 的第一轮融资于 2020 年 8 月进行,分配较小,2 小时内售罄。剩余部分通过私募方式进行。这一归属在启动日(Day 0)分发了少量代币(约占总供应量 1 亿的 2%)。剩余的 10% 在 1 年内均匀归属,其中一半有 6 个月的解禁期。这一分配于 2021 年 12 月 20 日完成。
投资者分配财库合约地址:0xa95f86fE0409030136D6b82491822B3D70F890b3
Frax生态系统概述
Frax当前发行了三种稳定币:FRAX、FPI和frxETH,以及众多其他非稳定币代币。系统内部还有多个合约组或“子协议”,这些协议将这些代币整合,以提供实用性和稳定性。理解统一Frax Finance生态系统的核心概念包括:
三种稳定币—Frax协议目前发行三种稳定币:
FRAX:一种与美元挂钩的资产。
FPI:Frax价格指数(FPI)稳定币,首个与一篮子消费品挂钩的稳定币,创建了一个独立于任何国家法定货币的计量单位。
FraxEther (frxETH):一种与ETH挂钩的流动质押衍生代币(LSD),旨在作为智能合约中WETH的替代品。frxETH也作为Fraxtal链中的Gas代币,具体解释如下。sfrxETH是互补的ERC4626代币,捕获来自ETH质押奖励、MEV等的增值。
frxETH V2预计将允许匿名验证者池使用托管退出消息作为抵押品借入额外的ETH。
Fraxswap—原生自动化做市商(AMM),基于Uniswap V2,增加了时间加权平均做市商(TWAMM)订单,用于Frax协议的抵押品再平衡、铸造/赎回、扩展/收缩稳定币供应,以及在链上部署协议拥有的流动性。
借贷AMM(BAMM)—建立在Fraxswap之上的借贷/借款模块。无需外部预言机或外部流动性即可安全运行。借款人租用由贷款人提供的流动性,以自动杠杆上升和下降,从而在高波动情况下保持偿付能力。
Fraxlend—无权限借贷市场,为基于Frax的稳定币提供借贷服务。支持债务发起、自定义非托管贷款,以及将抵押资产引入Frax Finance经济。
AMOs / 协议拥有流动性(POL)—该协议运营多个算法市场操作(AMO)智能合约,以管理其抵押品并用于生成收益。示例包括Fraxlend AMO、Curve AMO和Uniswap V3 AMO。
Fraxtal—基于Optimism技术的模块化二层链,使用frxETH作为燃气代币。
Fraxtal积分(FXTL)—用户在Fraxtal上进行有用活动(如消耗燃气、创建广泛使用的合约、在特定池中进行收益耕种)可赚取FXTL。
FraxBond(FXB)—类似于零息债券的代币,以低于1 FRAX的价格进行拍卖,但在到期时可兑换为1 FRAX。用于帮助锁定FRAX流动性并稳定FRAX挂钩。
sFrax(sFRAX)—ERC4626质押保险库,每周将Frax协议的部分收益分配给质押者。以FRAX稳定币计价。
Fraxferry—基于Frax的代币的乐观转账协议。Fraxferry在多个区块链之间转移原生发行的Frax协议代币。
Frax Share (FXS) —整个Frax生态系统的基础治理代币。它积累费用、收入和多余的抵押品价值。
veFXS – 用户锁定FXS一段可变时间以获得投票权和农耕权重提升。灵感来源于Curve的veCRV。
Gauge 奖励系统 —社区可以提出新的Gauge奖励,用于整合基于Frax的稳定币的策略。FXS的发行量固定,每年减半,完全根据veFXS质押者的投票流向不同的Gauge。
借贷AMM(BAMM)
建立在Fraxswap之上的借贷/借款模块。无需外部预言机或外部流动性即可安全运行。借款人租用由贷款人提供的流动性,以自动杠杆上升和下降,从而在高波动情况下保持偿付能力。
Fraxlend
无权限借贷市场,为基于Frax的稳定币提供借贷服务。支持债务发起、自定义非托管贷款,以及将抵押资产引入Frax Finance经济。
AMOs / 协议拥有流动性(POL)
该协议运营多个算法市场操作(AMO)智能合约,以管理其抵押品并用于生成收益。示例包括Fraxlend AMO、Curve AMO和Uniswap V3 AMO。
Fraxtal
基于Optimism技术的模块化二层链,使用frxETH作为燃气代币。
Fraxtal积分(FXTL)
用户在Fraxtal上进行有用活动(如消耗燃气、创建广泛使用的合约、在特定池中进行农耕)可赚取FXTL。
Frax债券(FXB)
类似于零息债券的代币,以低于1 FRAX的价格进行拍卖,但在到期时可兑换为1 FRAX。用于帮助锁定FRAX流动性并稳定FRAX挂钩。
质押Frax(sFRAX)
ERC4626质押保险库,每周将Frax协议的部分收益分配给质押者。以FRAX稳定币计价。
Fraxferry
基于Frax的代币的乐观转账协议。Fraxferry在多个区块链之间转移原生发行的Frax协议代币。
Frax Share(FXS)
整个Frax生态系统的基础治理代币。它积累费用、收入和多余的抵押品价值。
veFXS
用户锁定FXS一段可变时间以获得投票权和农耕权重提升。灵感来源于Curve的veCRV。
量表奖励系统
社区可以提出新的量表奖励,用于整合基于Frax的稳定币的策略。FXS的发行量固定,每年减半,完全根据veFXS质押者的投票流向不同的量表。
网站:Frax Finance Telegram: Frax Finance Telegram(公告/新闻): Frax Finance News Discord: Frax Finance Discord Twitter: Frax Finance Twitter Medium / 博客: Frax Finance Community 治理(讨论): Frax Governance 治理(投票): Frax Voting
June 2021 - Trail of Bits Dec 2021 - Trail of Bits
April 2022 - Shipyard / Macro August 2022 - Fraxswap & FPI Trail of Bits September 2022 - Code4rena November 2022 - Fraxlend & Fraxferry - Trail of Bits
Jan 2023 - Fraxlend & veFPIS - Trail of Bits July 2023 - FrxGov - Trail of Bits
March 2024 - frxETH V2 - Frax Security CartelApril 2024 - Fraxtal, VestedFXS, and Flox - Frax Security Cartel May 2024 - FPISLocker & FraxtalERC4626MintRedeemer - Frax Security Cartel May 2024 - Curve AMO for frxETH V2 - Frax Security Cartel
委托您的合并的veFXS 用于快照投票
在讨论完提案后,可以使用。投票权是持有的 FXS 和来自其他来源的 veFXS 的总和。历史上,投票是在以太坊上进行的,但现在已经转移到 Fraxtal()。快照将获取您所有的投票权来源(主网 veFXS、Fraxtal FXS、Fraxtal veFXS 和 Fraxtal FPISLocker),除了主网 FXS。您需要将 FXS 桥接到 Fraxtal 才能获得 1:1 的投票权,或者将其锁定在主网 veFXS(在 Fraxtal 上有现有的余额证明系统)。
由于 Fraxtal 链上快照的限制,多对一的委托将不再可能。如果您 1) 正在委托,或者 2) 无法访问您在主网(委托人)上的地址,我们部署了一个简单的 1:1 委托合约来帮助您。
首先,获取一个可以进行任意调用的 Fraxtal 地址。可以是新地址或现有地址。这将被称为被委托地址。您需要通过 L1CrossDomainMessenger(在以太坊上)向 Fraxtal 发送跨链消息,目标合约为 DoubleOptInVeFXSDelegation(在 Fraxtal 上)。以下是一些有用的地址和函数签名:
您的委托人地址在 Fraxtal 将能够使用其自身的投票权和委托人的投票权进行投票。
1) 准备一个十六进制消息
2) 在以太坊上用您的委托人地址调用以下内容:
这将调用 Fraxtal 上的
DoubleOptInVeFXSDelegation.nominateDelegateeCrossChain
3) 等待几分钟
4) 使用您的 Fraxtal 被委托人地址,调用:
1) 与委托人一起,调用:
2) 与被委托人一起调用:
委托人或被委托人可以随时单方面撤销委托。
1) 在以太坊上用您的委托人地址调用以下内容:
这将调用 Fraxtal 上的
DoubleOptInVeFXSDelegation.rescindDelegationAsDelegatorCrossChain
2) 等待几分钟,然后您的 Fraxtal 上的委托应被撤销
1) 与委托人一起调用:
1) 与被委托人一起调用:
FXS是整个Frax生态系统的质押和治理代币。所有的效用都集中在FXS及其锁定变体veFXS上。
Frax Share代币(FXS)是该协议中的非稳定性实用代币,与稳定币FRAX相对。FXS旨在具有波动性,持有治理权及系统的所有实用性。通过FXS进行治理的参数包括调整各种费用、分配协议资产,以及为Fraxlend启用新的借贷对。超额协议收入也会分配给锁定的FXS(veFXS)持有者,而这些veFXS持有者还可以获得农耕权重提升和其他收益。FXS的初始供应量设定为1亿个代币(分配情况见此处)。截至2024年10月2日,FXS的硬性供应上限仍为1亿个代币。
FXS代币具有系统的上行和下行实用性潜力,其价值的变化始终与FRAX代币本身脱钩,不会影响其挂钩机制。
在FRAX的原始(V1)模型中,铸造FRAX需要同时使用FXS和另一种稳定币,例如USDC。每种代币的比例(例如15% FXS,85% USDC)根据市场条件而变化。有关详细信息,请参见Frax V1背景。
FXS代币的市值将计算为FRAX代币铸币税未来预期的净价值创造、费用的现金流和未使用抵押品的利用。此外,随着FXS市值的增加,系统保持FRAX稳定的能力也随之增强。因此,设计的优先事项是在保持FRAX作为稳定货币的同时,最大化FXS代币的价值。正如Robert Sams在原始的Seigniorage Shares白皮书中所描述的:“股份代币就像中央银行资产负债表的资产方。任何时刻股份的市值固定了货币供应量可以减少的上限。”同样,Frax协议从Sams的提议中获得灵感,因为Frax是一种混合(部分)铸币税股份模型。只要FRAX的需求增长,FXS的供应将大幅通缩。
在当前模型中,FXS仍用于治理,获得超额协议收入,并为持有者提供其他各项收益(通过veFXS)。然而,铸造FRAX不再需要FXS。这一功能已被委托给AMOs。
Frax 更新后的 FRAX 铸造结构以及铸造和赎回的处理流程
⚠️ 此合约已弃用,转为使用 FRAX V3 机制 ⚠️
2021年10月,系统转向使用 FraxPoolV3 系统合约(0x2fE065e6FFEf9ac95ab39E5042744d695F560729
)的更新模型,该合约处理协议的响应式铸造和赎回,降低了攻击风险。通过这个新池,Frax AMO 铸币器合约被设计为根据附属于 FraxPoolV3 的新 AMO 规范进行算法化铸币。
其结果是,基于 FraxPoolV2(0x1864Ca3d47AaB98Ee78D11fc9DCC5E7bADdA1c0d
)构建的旧 AMO 被升级为使用 FraxPoolV3 抵押和铸造系统的新版本,所有操作都通过控制器多重签名(msig)和时间锁定系统进行控制。
新系统允许自动收集收益并将抵押品返还至 FraxPoolV3,利润可以通过 FXS1559 AMO 分配给 FXS 持有者。
AMO 铸币器已部署在以太坊主网的以下地址:0xcf37B62109b537fa0Cb9A90Af4CA72f6fb85E241
预言机数据采用Chainlink的2021年12月CPI-U数据点(由Fiews提供)作为确定挂钩价格的“基础”指数。每个月,该指数的变化/ delta百分比应用于前一个月的数据点,以确定锚定价格。之所以选择2021年12月,是因为预言机合约需要两个初始的“历史”数据点。
2021年12月 CPI-U: 280.126
2022年1月 CPI-U: 281.933
Delta 为 (281.933 / 280.126) - 1 = 0.64506686%
假设2021年12月是1美元,对应Delta百分比,则锚定价格为
$1 x (1.0064506686) = $1.0064506686
如果2022年2月CPI-U数据为284.182,delta值为(284.182 / 281.933)- 1 = 0.79770726%。
将次数据应用于此前挂钩价,则新的锚定价格为:$1.0064506686 * (1 + 0.0079770726) = $1.0144791987
换言之,2021年12月的1美元价值2022年2月的这么多美元。
CPITrackerOracle (V2): 0x66B7DFF2Ac66dc4d6FBB3Db1CB627BBb01fF3146
Raw data source: https://data.bls.gov/timeseries/CUSR0000SA0
Chainlink / Fiews Job: https://market.link/jobs/44964ac4-d302-4141-8f94-67e58e34b88d
https://market.link/jobs/44964ac4-d302-4141-8f94-67e58e34b88d
将 frxETH 以 1:1 的比例转换为 ETH,无需费用或滑点。
Frax Ether 协议允许 frxETH 持有者通过 frxETH 赎回队列合约将其代币兑换为 ETH。由于 frxETH 由抵押在验证者节点中的 ETH 支持,这些验证者随后将被逐出,通过赎回合约进行 1:1 的 frxETH 兑换 ETH。选择赎回 frxETH 而非在二级市场(如 Curve 这样的自动做市商)进行交易的用户,随时可以将其 frxETH 发送至赎回合约,获得一个赎回 NFT。该 NFT 预定他们在队列中的位置,并通过时间戳显示他们的赎回时间。一旦达到时间戳,NFT 持有者可以调用一个函数,用其 NFT 兑换与其赎回的 frxETH 数量完全相等的 ETH(无需费用或滑点)。该赎回过程旨在防止抢跑、MEV 和其他套利外部性问题,确保持有赎回 NFT 的用户在队列中获得公平的位置。
frxETH 赎回队列是一个特定的等待时间系统,赎回者必须等待才能将 frxETH 兑换为 ETH。frxETH 赎回队列的等待时间计算公式为:posEntryQueue+posExitQueue+deltaFactor
。这意味着等待时间是赎回时的入队和出队总时间加上由治理设定的额外时间,以便节点运营商有足够的时间准备验证者的逐出。
由于质押 sfrxETH 的用户不需要等待(与 ETH 质押者不同,ETH 质押者必须等待入队时间),因此该队列的时长是以太坊权益证明入队和出队总时长之和。如果 Frax Ether 系统在接收质押收益时没有入队时间,那么赎回者在退出时必须承担这一入队时间。赎回者必须等待入队和出队总时间,以便将 frxETH 兑换为 ETH。否则,该系统可能会面临攻击,比如在入队时间较长的情况下用户进入 sfrxETH,然后在权益证明出队时间较长时赎回 ETH。为避免这种攻击,frxETH 赎回系统要求赎回者等待入队和出队总时长及一个附加的 delta 因子。
FraxEtherRedemptionQueue: 0x82bA8da44Cd5261762e629dd5c605b17715727bd
FRAX 稳定币与子协议之间的接口合约
Frax V3 扩展引入了几个新的 AMO(算法市场操作)合约。AMO 合约是自动化的合约,能够将预编程的货币政策应用到特定的子协议中(无论是 Frax Protocol 内部开发并拥有的协议,如 Fraxlend 和 Fraxswap,还是外部协议,如 Curve)。这意味着 AMO 控制器可以在符合某些预编程条件或治理批准的情况下,进行公开市场操作,例如将新铸造的 FRAX 稳定币注入 AMM 或将其借入货币市场协议。AMOs 可以与任何其他协议交互,允许 FRAX V3 无需改变协议本身即可添加、移除或组合所需的任何稳定机制。
其中许多 AMO 还为协议赚取收入。
关于旧版和已废弃的 AMO(V2 和 V1),请参阅此处。
Aave AMO 使用新铸造的 FRAX 供应到 Aave V3 的各种池中,如以太坊和 EtherFi,允许用户借贷并为协议赚取利息。截至 2024 年 10 月 2 日,根据 Aave 治理决策,FRAX 预计很快将退出隔离模式,允许 Aave 借款人使用 FRAX 作为抵押品,获得更多借贷机会。此外,Aave AMO 还可以临时借入其他稳定币(如 USDC),在市场极端波动时,通过 Curve 池(如 FRAX/USDC)交换 FRAX 来平衡其价格。
Aave AMO (V3) 合约地址:0x0F2a32f4f54Ec9D52a193E9E3493fb5FeA86Cbbe
Curve AMO 在治理批准的选定 Curve 池中铸造 FRAX 稳定币,同时通过从 Curve 池中提取 FRAX 并销毁供应,确保每个池的汇率在基于 FRAX 美元价格的预言机范围内。此外,将 Curve LP 存入 Convex 可通过 Convex 的 CRV 指标加成和 CVX 代币获得额外收益。
Curve AMO(已弃用,许多操作现通过主控制器多签完成,但目标相同):0x49ee75278820f409ecd67063D8D717B38d66bd71
Fraxlend 是 Frax Finance 生态系统的一个无需许可的隔离借贷市场子协议。任何人都可以将 FRAX 稳定币借给隔离的 Fraxlend 市场,用户在这些市场中存入抵押品以借贷 FRAX,并支付动态利率给贷方。Fraxlend AMO 将新创建的 FRAX 借给由 frxGov 过程批准的 Fraxlend 对,并从借款人处赚取利息。
Fraxlend AMO 的实时统计数据显示在 Frax Facts 上。
Fraxlend AMO 合约地址:
以太坊主网 - Fraxlend AMO V1:0x0Ed8fA7FC63A8eb5487E7F87CAF1aB3914eA4eCa
以太坊主网 - Fraxlend AMO V3:0xf6E697e95D4008f81044337A749ECF4d15C30Ea6
Arbitrum One - Fraxlend AMO V3:0xCDeE1B853AD2E96921250775b7A60D6ff78fD8B4
Fraxtal - Fraxlend AMO V3:0x58C433482d74ABd15f4f8E7201DC4004c06CB611
Fraxswap TWAMM AMO 将时间加权平均市场做市订单加载到 Fraxswap AMM 中,以在较长时间内买入或卖出抵押品。这允许通过使用 FRAX 稳定币购买抵押品来扩展 FRAX 资产负债表,或通过 TWAMM 订单出售资产负债表资产来收缩 FRAX 的供应。AMO 还可以使用协议收入/费用回购 FXS 代币。
Fraxswap TWAMM AMO 合约地址:0x629C473e0E698FD101496E5fbDA4bcB58DA78dC4
FRAX Bonds AMO 使 FRAX 生态系统能够通过 FRAX 治理以折扣价格向市场出售 FRAX "债券"。每个单位的 FRAX 债券(也称为 FXB)等于一个单位的锁定 FRAX,并且在预定日期,FXB 的持有者可以销毁其 FXB 并获得相应的 FRAX。通过 FXB AMO,Frax 团队将 FXB 拍卖给公众。AMO 接收到的 FRAX 随后被发送到 FinresPBC。
技术规格,如接口和访问控制,可以在 GitHub 上找到(TODO:使代码库公开)。
以太坊主网 FXB AMO 合约地址:0x452420df4AC1e3db5429b5FD629f3047482C543C
Fraxtal FXB AMO 合约地址:0xE6ed07952dC9993DD52c6d991Fa809C00eBE58a3
各种协议拥有的多签地址根据治理决定持有并管理产生收入的头寸,例如 Curve/Convex 农场和直接持有的代币如 sDAI 和 sfrxETH。最大的多签地址(0xB1748C79709f4Ba2Dd82834B8c82D4a505003f27)位于以太坊上。你可以在此处查看完整的头寸列表。
调整的 ERC-20 合约代表FRAX稳定币
用于 Frax 资产的预言机,这些预言机使用链上价格并提供与 Chainlink 预言机相同的接口。
为了提高我们资产在借贷协议、自动化做市商(AMMs)和金库产品中的采用速度,我们相信使用链上价格源的预言机是最可靠和可验证的。
双重预言机/价格源合约从两个不同的链上源获取两个价格(高价和低价),并同时返回这两个价格。该合约随后将价格写入Frax预言机合约。这些合约在很大程度上受到Frax借贷双重预言机的启发。任何人都可以调用双重预言机上的addRoundData()
函数,向Frax预言机添加最新的价格,只需支付燃料费。Frax协议每天对每种支持的资产调用一次此函数。
只有相应资产的双重预言机合约才能将价格写入相应的Frax预言机。Frax预言机存储的价格可以通过Chainlink风格的AggregatorV3Interface
或Fraxlend的getPrices()
风格检索。
当通过Chainlink风格与Frax预言机交互时,价格数据将是低价和高价的平均值。而在使用Fraxlend的getPrices()
风格时,将同时提供低价和高价。
如果底层Chainlink预言机发出价格不佳的信号,或者价格过旧,则该价格将被视为不良/陈旧。
Frax 预言机的价格可以像Chainlink预言机一样使用。
所有链上价格源都拥有深厚的Frax协议自有流动性,我们不会移除这部分流动性,从而提供了很高的安全性。