Frax(FRAX)

调整的 ERC-20 合约代表FRAX稳定币

部署

区块链地址

Arbitrum

0x17FC002b466eEc40DaE837Fc4bE5c67993ddBd6F

Avalanche

0xD24C2Ad096400B6FBcd2ad8B24E7acBc21A1da64

BSC

0x90C97F71E18723b0Cf0dfa30ee176Ab653E89F40

Ethereum

0x853d955aCEf822Db058eb8505911ED77F175b99e

Fantom

0xdc301622e621166BD8E82f2cA0A26c13Ad0BE355

Harmony

0xFa7191D292d5633f702B0bd7E3E3BcCC0e633200

Moonriver

0x1A93B23281CC1CDE4C4741353F3064709A16197d

Polygon

0x45c32fA6DF82ead1e2EF74d17b76547EDdFaFF89

Solana

FR87nWEUxVgerFGhZM8Y4AggKGLnaXswr1Pd8wZ4kZcp

状态变量

ERC-20 (继承)

https://docs.openzeppelin.com/contracts/2.x/api/token/erc20#ERC20

访问控制 (继承)

https://docs.openzeppelin.com/contracts/3.x/api/access#AccessControl

FRAX-Specific

enum PriceChoice { FRAX, FXS }

枚举FRAX和FXS的说明。预言机使用。

ChainlinkETHUSDPriceConsumer eth_usd_pricer

采用 Chainlink ETH/USD交易对举例。结合FRAX/ WETH、FXS/ WETH、抵押品/ FRAX和抵押品/FXS交易对,可以用来计算FRAX/FXS/抵押品的美元价格。

uint8 eth_usd_pricer_decimals

Chainlink ETH/USD交易对价格的小数点位数。

UniswapPairOracle fraxEthOracle

FRAX / WETH 在Uniswap上的价格预言机实例。

UniswapPairOracle fxsEthOracle

FXS / WETH 在Uniswap上的价格预言机实例。

address[] public owners

拥有特权操作的所有者地址数组。

address governance_address

治理合约的地址。

address public creator_address

合约创造者的地址。

address public timelock_address

时间锁合约的地址。

address public fxs_address

FXS合约地址

address public frax_eth_oracle_address

fraxEthOracle地址

address public fxs_eth_oracle_address

fxsEthOracle 地址

address public weth_address

标准Wrapped-Ethereum(WETH)合约地址。主网地址应该是0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2

address public eth_usd_consumer_address

ChainlinkETHUSDPriceConsumer 地址

uint256 public genesis_supply

FRAX创世供应。应该为一个小的非零数量。大部分FRAX供应来自铸币,但一开始需要少量,以防止各种功能中的零除错误。

address[] frax_pools_array

所有 FraxPool 合约地址。

mapping(address => bool) public frax_pools

本质上与 frax_pools_array 一样, 但是映射模式,有助于在不同功能如globalCollateralValue() 上节省Gas费。

uint256 public global_collateral_ratio

在所有FraxPool中,当前FRAX与抵押品的比率。

uint256 public redemption_fee

将FRAX兑换成FXS和/或抵押品的费用。以及用FXS回购多余抵押品的费用。参见FraxPool合约用例。

uint256 public minting_fee

用FXS和/或其他抵押物铸造FRAX的费用。参见 FraxPool 合约用例。

address public DEFAULT_ADMIN_ADDRESS

构造函数设置。用于AccessControl

bytes32 public constant COLLATERAL_RATIO_PAUSER

抵押品比率暂停时使用的常数。

bool public collateral_ratio_paused

抵押品比率是否暂停。

View 函数

oracle_price

oracle_price(PriceChoice choice) internal view returns (uint256)

获取FRAX或者FXS的美金价格。

frax_price

frax_price() public view returns (uint256)

从FRAX-ETH Chainlink价格预言机返回FRAX价格。

fxs_price

fxs_price() public view returns (uint256)

从FRAX-ETH Chainlink价格预言机返回FXS价格。

frax_info

frax_info() public view returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256)

返回一些常用的状态变量和计算值。这是为了避免对不同的getter函数的昂贵重复调用。扔掉所有的东西,只使用一些信息,使得Gas费更便宜。

globalCollateralValue

globalCollateralValue() public view returns (uint256)

遍历所有FRAX池并全局计算所有池中的抵押品价值。这采用了每个抵押品的预言机价格。

公共函数

refreshCollateralRatio

refreshCollateralRatio() public

这个函数检查FRAX的价格,如果价格不是1美元,则刷新抵押品比率。如果价格高于1美元,则比率降低0.5%。如果价格低于1美元,则比率增加0.5%。任何人都可以点击这个函数来改变比率。这个函数每小时只能调用一次。

限制函数

mint

mint(uint256 amount) public virtual onlyByOwnerOrGovernance

Public implementation of internal _mint().

pool_burn_from

pool_burn_from(address b_address, uint256 b_amount) public onlyPools

当用户赎回时由池子使用。

pool_mint

pool_mint(address m_address, uint256 m_amount) public onlyPools

这个函数是其他frax池将调用的,以铸造新的frax。

addPool

addPool(address pool_address) public onlyByOwnerOrGovernance

添加抵押物地址,如tether和busd,必须是ERC20。

removePool

removePool(address pool_address) public onlyByOwnerOrGovernance

移除一个池子

setOwner

setOwner(address owner_address) public onlyByOwnerOrGovernance

设置合约管理

setFraxStep

setFraxStep(uint256 _new_step) public onlyByOwnerOrGovernance

设置抵押品比率在执行refreshCollateralRatio()时改变的数量

setPriceTarget

setPriceTarget(uint256 _new_price_target) public onlyByOwnerOrGovernance

设置用于刷新抵押品比率()的价格目标(不影响铸造/赎回)。

setRefreshCooldown

setRefreshCooldown(uint256 _new_cooldown) public onlyByOwnerOrGovernance

设置refreshCollateralRatio()的刷新冷却时间。

setRedemptionFee

setRedemptionFee(uint256 red_fee) public onlyByOwnerOrGovernance

设置赎回费。

setMintingFee

setMintingFee(uint256 min_fee) public onlyByOwnerOrGovernance

设置铸造费。

setFXSAddress

setFXSAddress(address _fxs_address) public onlyByOwnerOrGovernance

设置FXS地址。

setETHUSDOracle

setETHUSDOracle(address _eth_usd_consumer_address) public onlyByOwnerOrGovernance

设置ETH / USD oracle地址。

setFRAXEthOracle

setFRAXEthOracle(address _frax_addr, address _weth_address) public onlyByOwnerOrGovernance

设置 FRAX / ETH Uniswap oracle 地址

setFXSEthOracle

setFXSEthOracle(address _fxs_addr, address _weth_address) public onlyByOwnerOrGovernance

设置 FXS / ETH Uniswap oracle 地址

toggleCollateralRatio

toggleCollateralRatio() public onlyCollateralRatioPauser 

切换抵押品比率的暂停/取消暂停功能。

事件

FRAXBurned

FRAXBurned(address indexed from, address indexed to, uint256 amount)

当FRAX被烧毁时发生,通常是来自一笔池子的赎回。

编辑器

onlyCollateralRatioPauser

onlyCollateralRatioPauser()

针对指定抵押品比率的限制操作。

onlyPools

onlyPools()

针对池子合约的限制操作,如铸造新的FRAX。

onlyByGovernance

onlyByGovernance()

针对治理合约的限制操作,如设置铸造和赎回费用,以及Oracle和池地址。

onlyByOwnerOrGovernance

onlyByOwnerOrGovernance()

针对治理合约或所有者账户的限制操作,例如设置铸币和赎回费用,以及Oracle和池地址。

最后更新于