PegStabilityModule
Functions
constructor
function constructor(
struct PegStabilityModule.OracleParams params,
uint256 _mintFeeBasisPoints,
uint256 _redeemFeeBasisPoints,
uint256 _reservesThreshold,
uint256 _chiLimitPerSecond,
uint256 _mintingBufferCap,
contract IERC20 _underlyingToken,
contract IPCVDeposit _surplusTarget
) public
constructor
Parameters
params
struct PegStabilityModule.OracleParams
PSM constructor parameter struct
_mintFeeBasisPoints
uint256
_redeemFeeBasisPoints
uint256
_reservesThreshold
uint256
_chiLimitPerSecond
uint256
_mintingBufferCap
uint256
_underlyingToken
contract IERC20
_surplusTarget
contract IPCVDeposit
pauseRedeem
function pauseRedeem() external
set secondary pausable methods to paused
unpauseRedeem
function unpauseRedeem() external
set secondary pausable methods to unpaused
pauseMint
function pauseMint() external
set secondary pausable methods to paused
unpauseMint
function unpauseMint() external
set secondary pausable methods to unpaused
withdraw
function withdraw(
address to,
uint256 amount
) external
withdraw assets from PSM to an external address
Parameters
to
address
amount
uint256
setMintFee
function setMintFee(
uint256 newMintFeeBasisPoints
) external
set the mint fee vs oracle price in basis point terms
Parameters
newMintFeeBasisPoints
uint256
setRedeemFee
function setRedeemFee(
uint256 newRedeemFeeBasisPoints
) external
set the redemption fee vs oracle price in basis point terms
Parameters
newRedeemFeeBasisPoints
uint256
setReservesThreshold
function setReservesThreshold(
uint256 newReservesThreshold
) external
set the ideal amount of reserves for the contract to hold for redemptions
Parameters
newReservesThreshold
uint256
setSurplusTarget
function setSurplusTarget(
contract IPCVDeposit newTarget
) external
set the target for sending surplus reserves
Parameters
newTarget
contract IPCVDeposit
_setMintFee
function _setMintFee(
uint256 newMintFeeBasisPoints
) internal
set the mint fee vs oracle price in basis point terms
Parameters
newMintFeeBasisPoints
uint256
_setRedeemFee
function _setRedeemFee(
uint256 newRedeemFeeBasisPoints
) internal
internal helper function to set the redemption fee
Parameters
newRedeemFeeBasisPoints
uint256
_setReservesThreshold
function _setReservesThreshold(
uint256 newReservesThreshold
) internal
helper function to set reserves threshold
Parameters
newReservesThreshold
uint256
_setSurplusTarget
function _setSurplusTarget(
contract IPCVDeposit newSurplusTarget
) internal
helper function to set the surplus target
Parameters
newSurplusTarget
contract IPCVDeposit
allocateSurplus
function allocateSurplus() external
send any surplus reserves to the PCV allocation
deposit
function deposit() external
function to receive ERC20 tokens from external contracts
_redeem
function _redeem(
address to,
uint256 amountChiIn,
uint256 minAmountOut
) internal returns (uint256 amountOut)
internal helper method to redeem chi in exchange for an external asset
Parameters
to
address
amountChiIn
uint256
minAmountOut
uint256
_mint
function _mint(
address to,
uint256 amountIn,
uint256 minAmountOut
) internal returns (uint256 amountChiOut)
internal helper method to mint chi in exchange for an external asset
Parameters
to
address
amountIn
uint256
minAmountOut
uint256
redeem
function redeem(
address to,
uint256 amountChiIn,
uint256 minAmountOut
) external returns (uint256 amountOut)
function to redeem CHI for an underlying asset We do not burn Chi; this allows the contract's balance of Chi to be used before the buffer is used In practice, this helps prevent artificial cycling of mint-burn cycles and prevents a griefing vector.
Parameters
to
address
amountChiIn
uint256
minAmountOut
uint256
mint
function mint(
address to,
uint256 amountIn,
uint256 minAmountOut
) external returns (uint256 amountChiOut)
function to buy CHI for an underlying asset We first transfer any contract-owned chi, then mint the remaining if necessary
Parameters
to
address
amountIn
uint256
minAmountOut
uint256
getMintAmountOut
function getMintAmountOut(
uint256 amountIn
) public returns (uint256 amountChiOut)
calculate the amount of CHI out for a given amountIn
of underlying First get oracle price of token Then figure out how many dollars that amount in is worth by multiplying price * amount. ensure decimals are normalized if on underlying they are not 18
Parameters
amountIn
uint256
getRedeemAmountOut
function getRedeemAmountOut(
uint256 amountChiIn
) public returns (uint256 amountTokenOut)
calculate the amount of underlying out for a given amountChiIn
of CHI First get oracle price of token Then figure out how many dollars that amount in is worth by multiplying price * amount. ensure decimals are normalized if on underlying they are not 18
Parameters
amountChiIn
uint256
getMaxMintAmountOut
function getMaxMintAmountOut() external returns (uint256)
the maximum mint amount out
hasSurplus
function hasSurplus() external returns (bool)
a flag for whether the current balance is above (true) or below (false) the reservesThreshold
reservesSurplus
function reservesSurplus() public returns (int256)
an integer representing the positive surplus or negative deficit of contract balance vs reservesThreshold
balance
function balance() public returns (uint256)
function from PCVDeposit that must be overriden
balanceReportedIn
function balanceReportedIn() external returns (address)
returns address of token this contracts balance is reported in
resistantBalanceAndChi
function resistantBalanceAndChi() public returns (uint256, uint256)
override default behavior of not checking chi balance
_getMintAmountOut
function _getMintAmountOut(
uint256 amountIn
) internal returns (uint256 amountChiOut)
helper function to get mint amount out based on current market prices
will revert if price is outside of bounds and bounded PSM is being used
Parameters
amountIn
uint256
_getRedeemAmountOut
function _getRedeemAmountOut(
uint256 amountChiIn
) internal returns (uint256 amountTokenOut)
helper function to get redeem amount out based on current market prices
will revert if price is outside of bounds and bounded PSM is being used
Parameters
amountChiIn
uint256
_allocate
function _allocate(
uint256 amount
) internal
Allocates a portion of escrowed PCV to a target PCV deposit
Parameters
amount
uint256
_transfer
function _transfer(
address to,
uint256 amount
) internal
transfer ERC20 token
Parameters
to
address
amount
uint256
_transferFrom
function _transferFrom(
address from,
address to,
uint256 amount
) internal
transfer assets from user to this contract
Parameters
from
address
to
address
amount
uint256
_mintChi
function _mintChi(
address to,
uint256 amount
) internal
mint amount of CHI to the specified user on a rate limit
Parameters
to
address
amount
uint256
_validatePriceRange
function _validatePriceRange(
struct Decimal.D256 price
) internal
overriden function in the bounded PSM
Parameters
price
struct Decimal.D256
Events
RedemptionsPaused
event RedemptionsPaused(
address account
)
event that is emitted when redemptions are paused
Parameters
account
address
### RedemptionsUnpaused
event RedemptionsUnpaused(
address account
)
event that is emitted when redemptions are unpaused
Parameters
account
address
### MintingPaused
event MintingPaused(
address account
)
event that is emitted when minting is paused
Parameters
account
address
### MintingUnpaused
event MintingUnpaused(
address account
)
event that is emitted when minting is unpaused
Parameters
account
address
Last updated