Parameter Details
// 1. CollateralInfo[], for each collateral
struct CollateralInfo{
address tokenAddress;
uint256 tokenId; // tokenId collateral tokenId, 0 for ERC20.
//totalCollateral total amount of collateral for a given ERC20 asset, will be zero for NFTs
uint256 totalCollateral;
// max amount in underlying that a user can "owe" per base unit of collateral (unit = 1 for NFTs, 1e18 for ERC20s)
// should always be more than the maxBorrowAmount, acts as buffer for protocol and borrower. this is the value to determine whether
// a borrower is liquidatable
uint256 maxAmount;
// max amount in underlying that a user can borrow per base unit of collateral (unit = 1 for NFTs, 1e18 for ERC20s)
uint256 maxBorrowAmount;
bool isERC20;
// auction parameters
uint256 tau; // seconds after auction start when the price reaches zero -> linearDecrease
uint256 cusp; // percentage price drop that can occur before an auction must be reset.
uint256 tail; // seconds that can elapse before an auction must be reset.
uint256 buf; // auction start price = buf * maxAmount
}
// 2. Interest Rate Parameters
struct RateParams{
uint256 _minInterest;
uint256 _vertexInterest;
uint256 _maxInterest;
uint256 _vertexUtilization;
}
// 3. Tranche Parameters that parametrizes the junior vs senior profit split
struct PoolData{
uint256 saleAmount; // Discounted longZCB allocated for high reputation managers
uint256 initPrice; // init price of longZCB in the amm
uint256 promisedReturn; //per unit time value accrual for senior tranche
uint256 inceptionTime; // approval time to start the promised return accrual
uint256 inceptionPrice; // init price of longZCB after assessment
uint256 leverageFactor; // leverageFactor * manager collateral = capital from vault to instrument
uint256 managementFee; // sum of discounts for high reputation managers/validators
}
Last updated