Skip to main content

IVaultShareFormulas

IVaultShareFormulas

Addresses

ChainAddress

Functions

convertInput

Compute the assets/shares received in exchange for the provided assets/shares

function convertInput(
uint256 assets,
Shares shares,
uint256 rateAssets,
Shares rateShares
) external view returns (
Shares sharesOut,
uint256 assetsOut,
uint256 fee
)
Dev note

Used for deposit() and redeem()

Parameters

NameTypeDescription
assetsuint256Assets to be deposited. Must be 0 if shares is set.
sharesSharesShares to be redeemed. Must be 0 if assets is set.
rateAssetsuint256Conversion rate: rateAssets are worth rateShares.
rateSharesSharesConversion rate: rateShares are worth rateAssets.

Return Values

NameTypeDescription
sharesOutSharesShares received in exchange for assets. Fee excluded.
assetsOutuint256Assets received in exchange for shares. Fee excluded.
feeuint256Deposit/withdraw fee applied to output, in collateral units.

convertOutput

Compute the assets/shares required to obtain the requested assets/shares

function convertOutput(
uint256 assets,
Shares shares,
uint256 rateAssets,
Shares rateShares
) external view returns (
Shares sharesIn,
uint256 assetsIn,
uint256 fee
)
Dev note

Used for withdraw() and mint()

Parameters

NameTypeDescription
assetsuint256Assets to be withdrawn. Must be 0 if shares is set.
sharesSharesShares to be minted. Must be 0 if assets is set.
rateAssetsuint256Conversion rate: rateAssets are worth rateShares.
rateSharesSharesConversion rate: rateShares are worth rateAssets.

Return Values

NameTypeDescription
sharesInSharesShares required to withdraw assets. Fee included.
assetsInuint256Assets required to mint shares. Fee included.
feeuint256Deposit/withdraw fee that will be taken out of sharesIn / assetsIn, in collateral units.

convertToShares

Convert assets to shares. See EIP-4626

function convertToShares(uint256 assets, enum Math.Rounding rounding) external view returns (Shares shares)

convertToShares

Convert assets to shares. See EIP-4626

function convertToShares(
uint256 assets,
enum Math.Rounding rounding,
Shares rateShares,
uint256 rateAssets
) external view returns (
Shares shares
)
Dev note

ERC4626 reference impl modified to explicitly take a rate

Parameters

NameTypeDescription
assetsuint256
roundingenum Math.Rounding
rateSharesSharesConversion rate: rateShares are worth rateAssets.
rateAssetsuint256Conversion rate: rateAssets are worth rateShares.

convertToAssets

Convert shares to assets. See EIP-4626

function convertToAssets(Shares shares, enum Math.Rounding rounding) external view returns (uint256 assets)

convertToAssets

Convert shares to assets. See EIP-4626

function convertToAssets(
Shares shares,
enum Math.Rounding rounding,
Shares rateShares,
uint256 rateAssets
) external view returns (
uint256 assets
)
Dev note

ERC4626 reference impl modified to explicitly take a rate

Parameters

NameTypeDescription
sharesShares
roundingenum Math.Rounding
rateSharesSharesConversion rate: rateShares are worth rateAssets.
rateAssetsuint256Conversion rate: rateAssets are worth rateShares.

initialConvertToShares

function initialConvertToShares(uint256 assets, enum Math.Rounding) external pure returns (Shares shares)
Dev note

Internal conversion function (from assets to shares) to apply when the vault is empty. Scale by 1e18 to mitigate inflation attacks: github.com/OpenZeppelin/openzeppelin-contracts/issues/3706

initialConvertToAssets

function initialConvertToAssets(Shares shares, enum Math.Rounding) external pure returns (uint256)
Dev note

Internal conversion function (from shares to assets) to apply when the vault is empty.