Solidity API
LiquidationAuction02
vault
contract IVault vaultvaultManagerParameters
contract IVaultManagerParameters vaultManagerParameterscdpRegistry
contract ICDPRegistry cdpRegistryforceTransferAssetStore
contract IForceTransferAssetStore forceTransferAssetStoreDENOMINATOR_1E2
uint256 DENOMINATOR_1E2WRAPPED_TO_UNDERLYING_ORACLE_TYPE
uint256 WRAPPED_TO_UNDERLYING_ORACLE_TYPEBuyout
event Buyout(address asset, address owner, address buyer, uint256 amount, uint256 price, uint256 penalty)Trigger when buyouts are happened
checkpoint
modifier checkpoint(address asset, address owner)constructor
constructor(address _vaultManagerParameters, address _cdpRegistry, address _forceTransferAssetStore) public_vaultManagerParameters
address
The address of the contract with Vault manager parameters
_cdpRegistry
address
The address of the CDP registry
_forceTransferAssetStore
address
The address of the ForceTransferAssetStore
buyout
function buyout(address asset, address owner) publicBuyouts a position's collateral
asset
address
The address of the main collateral token of a position
owner
address
The owner of a position
_liquidate
function _liquidate(address asset, address user, uint256 collateralToBuyer, uint256 collateralToOwner, uint256 repayment, uint256 penalty) private_calcLiquidationParams
function _calcLiquidationParams(uint256 depreciationPeriod, uint256 blocksPast, uint256 startingPrice, uint256 debtWithPenalty, uint256 collateralInPosition) internal pure returns (uint256 collateralToBuyer, uint256 collateralToOwner, uint256 price)CDPRegistry
CDP
struct CDP {
address asset;
address owner;
}cdpList
mapping(address => address[]) cdpListcdpIndex
mapping(address => mapping(address => uint256)) cdpIndexvault
contract IVault vaultcr
contract ICollateralRegistry crAdded
event Added(address asset, address owner)Removed
event Removed(address asset, address owner)constructor
constructor(address _vault, address _collateralRegistry) publiccheckpoint
function checkpoint(address asset, address owner) publicbatchCheckpointForAsset
function batchCheckpointForAsset(address asset, address[] owners) externalbatchCheckpoint
function batchCheckpoint(address[] assets, address[] owners) externalisAlive
function isAlive(address asset, address owner) public view returns (bool)isListed
function isListed(address asset, address owner) public view returns (bool)_removeCdp
function _removeCdp(address asset, address owner) internal_addCdp
function _addCdp(address asset, address owner) internalgetCdpsByCollateral
function getCdpsByCollateral(address asset) external view returns (struct CDPRegistry.CDP[] cdps)getCdpsByOwner
function getCdpsByOwner(address owner) external view returns (struct CDPRegistry.CDP[] r)getAllCdps
function getAllCdps() external view returns (struct CDPRegistry.CDP[] r)getCdpsCount
function getCdpsCount() public view returns (uint256 totalCdpCount)getCdpsCountForCollateral
function getCdpsCountForCollateral(address asset) public view returns (uint256)CollateralRegistry
CollateralAdded
event CollateralAdded(address asset)CollateralRemoved
event CollateralRemoved(address asset)collateralId
mapping(address => uint256) collateralIdcollateralList
address[] collateralListconstructor
constructor(address _vaultParameters, address[] assets) publicaddCollateral
function addCollateral(address asset) publicremoveCollateral
function removeCollateral(address asset) publicisCollateral
function isCollateral(address asset) public view returns (bool)collaterals
function collaterals() external view returns (address[])collateralsCount
function collateralsCount() external view returns (uint256)GCD
ERC20 token
name
string namesymbol
string symbolversion
string versiondecimals
uint8 decimalstotalSupply
uint256 totalSupplybalanceOf
mapping(address => uint256) balanceOfallowance
mapping(address => mapping(address => uint256)) allowanceApproval
event Approval(address owner, address spender, uint256 value)Trigger on any successful call to approve(address spender, uint amount)
Transfer
event Transfer(address from, address to, uint256 value)Trigger when tokens are transferred, including zero value transfers
initialize
function initialize(address _parameters) public_parameters
address
The address of system parameters contract
_authorizeUpgrade
function _authorizeUpgrade(address) internalRestricted upgrades function
mint
function mint(address to, uint256 amount) externalOnly Vault can mint GCD
Mints 'amount' of tokens to address 'to', and MUST fire the Transfer event
to
address
The address of the recipient
amount
uint256
The amount of token to be minted
burn
function burn(uint256 amount) externalOnly manager can burn tokens from manager's balance
Burns 'amount' of tokens, and MUST fire the Transfer event
amount
uint256
The amount of token to be burned
burn
function burn(address from, uint256 amount) externalOnly Vault can burn tokens from any balance
Burns 'amount' of tokens from 'from' address, and MUST fire the Transfer event
from
address
The address of the balance owner
amount
uint256
The amount of token to be burned
transfer
function transfer(address to, uint256 amount) external returns (bool)_Transfers 'amount' of tokens to address 'to', and MUST fire the Transfer event. The function SHOULD throw if the from account balance does not have enough tokens to spend.
to
address
The address of the recipient
amount
uint256
The amount of token to be transferred
transferFrom
function transferFrom(address from, address to, uint256 amount) public returns (bool)Transfers 'amount' of tokens from address 'from' to address 'to', and MUST fire the Transfer event
from
address
The address of the sender
to
address
The address of the recipient
amount
uint256
The amount of token to be transferred
approve
function approve(address spender, uint256 amount) external returns (bool)Allows 'spender' to withdraw from your account multiple times, up to the 'amount' amount. If this function is called again it overwrites the current allowance with 'amount'.
spender
address
The address of the account able to transfer the tokens
amount
uint256
The amount of tokens to be approved for transfer
increaseAllowance
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool)_Atomically increases the allowance granted to spender by the caller.
This is an alternative to approve that can be used as a mitigation for problems described in IERC20.approve.
Emits an Approval event indicating the updated allowance.
Requirements:
spendercannot be the zero address._
decreaseAllowance
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool)_Atomically decreases the allowance granted to spender by the caller.
This is an alternative to approve that can be used as a mitigation for problems described in IERC20.approve.
Emits an Approval event indicating the updated allowance.
Requirements:
spendercannot be the zero address.spendermust have allowance for the caller of at leastsubtractedValue._
_approve
function _approve(address owner, address spender, uint256 amount) internal virtual_burn
function _burn(address from, uint256 amount) internal virtualCDPManager01
vault
contract IVault vaultvaultManagerParameters
contract IVaultManagerParameters vaultManagerParametersoracleRegistry
contract IOracleRegistry oracleRegistrycdpRegistry
contract ICDPRegistry cdpRegistryWETH
address payable WETHQ112
uint256 Q112DENOMINATOR_1E5
uint256 DENOMINATOR_1E5Join
event Join(address asset, address owner, uint256 main, uint256 gcd)Trigger when joins are happened
Exit
event Exit(address asset, address owner, uint256 main, uint256 gcd)Trigger when exits are happened
LiquidationTriggered
event LiquidationTriggered(address asset, address owner)Trigger when liquidations are initiated
checkpoint
modifier checkpoint(address asset, address owner)constructor
constructor(address _vaultManagerParameters, address _oracleRegistry, address _cdpRegistry) public_vaultManagerParameters
address
The address of the contract with Vault manager parameters
_oracleRegistry
address
The address of the oracle registry
_cdpRegistry
address
The address of the CDP registry
receive
receive() external payablejoin
function join(address asset, uint256 assetAmount, uint256 gcdAmount) publicDepositing tokens must be pre-approved to Vault address position actually considered as spawned only when debt > 0
Deposits collateral and/or borrows GCD
asset
address
The address of the collateral
assetAmount
uint256
The amount of the collateral to deposit
gcdAmount
uint256
The amount of GCD token to borrow
join_Eth
function join_Eth(uint256 gcdAmount) external payableDeposits ETH and/or borrows GCD
gcdAmount
uint256
The amount of GCD token to borrow
exit
function exit(address asset, uint256 assetAmount, uint256 gcdAmount) public returns (uint256)Tx sender must have a sufficient GCD balance to pay the debt
Withdraws collateral and repays specified amount of debt
asset
address
The address of the collateral
assetAmount
uint256
The amount of the collateral to withdraw
gcdAmount
uint256
The amount of GCD to repay
exit_targetRepayment
function exit_targetRepayment(address asset, uint256 assetAmount, uint256 repayment) external returns (uint256)Repayment is the sum of the principal and interest
Withdraws collateral and repays specified amount of debt
asset
address
The address of the collateral
assetAmount
uint256
The amount of the collateral to withdraw
repayment
uint256
The target repayment amount
exit_Eth
function exit_Eth(uint256 ethAmount, uint256 gcdAmount) public returns (uint256)Withdraws WETH and converts to ETH
ethAmount
uint256
ETH amount to withdraw
gcdAmount
uint256
The amount of GCD token to repay
exit_Eth_targetRepayment
function exit_Eth_targetRepayment(uint256 ethAmount, uint256 repayment) external returns (uint256)Repayment is the sum of the principal and interest
Withdraws WETH and converts to ETH
ethAmount
uint256
ETH amount to withdraw
repayment
uint256
The target repayment amount
_repay
function _repay(address asset, address owner, uint256 gcdAmount) internal_ensurePositionCollateralization
function _ensurePositionCollateralization(address asset, address owner) internal viewtriggerLiquidation
function triggerLiquidation(address asset, address owner) externalTriggers liquidation of a position
asset
address
The address of the collateral token of a position
owner
address
The owner of the position
getCollateralUsdValue_q112
function getCollateralUsdValue_q112(address asset, address owner) public view returns (uint256)_isLiquidatablePosition
function _isLiquidatablePosition(address asset, address owner, uint256 usdValue_q112) internal view returns (bool)Determines whether a position is liquidatable
asset
address
The address of the collateral
owner
address
The owner of the position
usdValue_q112
uint256
Q112-encoded USD value of the collateral
[0]
bool
boolean value, whether a position is liquidatable
_ensureOracle
function _ensureOracle(address asset) internal viewisLiquidatablePosition
function isLiquidatablePosition(address asset, address owner) public view returns (bool)Determines whether a position is liquidatable
asset
address
The address of the collateral
owner
address
The owner of the position
[0]
bool
boolean value, whether a position is liquidatable
utilizationRatio
function utilizationRatio(address asset, address owner) public view returns (uint256)Calculates current utilization ratio
asset
address
The address of the collateral
owner
address
The owner of the position
[0]
uint256
utilization ratio
liquidationPrice_q112
function liquidationPrice_q112(address asset, address owner) external view returns (uint256)Calculates liquidation price
asset
address
The address of the collateral
owner
address
The owner of the position
[0]
uint256
Q112-encoded liquidation price
_calcPrincipal
function _calcPrincipal(address asset, address owner, uint256 repayment) internal view returns (uint256)VaultManagerParameters
initialCollateralRatio
mapping(address => uint256) initialCollateralRatioliquidationRatio
mapping(address => uint256) liquidationRatioliquidationDiscount
mapping(address => uint256) liquidationDiscountdevaluationPeriod
mapping(address => uint256) devaluationPeriodconstructor
constructor(address _vaultParameters) publicsetCollateral
function setCollateral(address asset, uint256 stabilityFeeValue, uint256 liquidationFeeValue, uint256 initialCollateralRatioValue, uint256 liquidationRatioValue, uint256 liquidationDiscountValue, uint256 devaluationPeriodValue, uint256 gcdLimit, uint256[] oracles) externalOnly manager is able to call this function
Sets ability to use token as the main collateral
asset
address
The address of the main collateral token
stabilityFeeValue
uint256
The percentage of the year stability fee (3 decimals)
liquidationFeeValue
uint256
The liquidation fee percentage (0 decimals)
initialCollateralRatioValue
uint256
The initial collateralization ratio
liquidationRatioValue
uint256
The liquidation ratio
liquidationDiscountValue
uint256
The liquidation discount (3 decimals)
devaluationPeriodValue
uint256
The devaluation period in blocks
gcdLimit
uint256
The GCD token issue limit
oracles
uint256[]
The enabled oracles type IDs
setInitialCollateralRatio
function setInitialCollateralRatio(address asset, uint256 newValue) publicOnly manager is able to call this function
Sets the initial collateral ratio
asset
address
The address of the main collateral token
newValue
uint256
The collateralization ratio (0 decimals)
setLiquidationRatio
function setLiquidationRatio(address asset, uint256 newValue) publicOnly manager is able to call this function
Sets the liquidation ratio
asset
address
The address of the main collateral token
newValue
uint256
The liquidation ratio (0 decimals)
setLiquidationDiscount
function setLiquidationDiscount(address asset, uint256 newValue) publicOnly manager is able to call this function
Sets the liquidation discount
asset
address
The address of the main collateral token
newValue
uint256
The liquidation discount (3 decimals)
setDevaluationPeriod
function setDevaluationPeriod(address asset, uint256 newValue) publicOnly manager is able to call this function
Sets the devaluation period of collateral after liquidation
asset
address
The address of the main collateral token
newValue
uint256
The devaluation period in blocks
Vault
Vault is the core of GCD Protocol GCD Stablecoin system
Vault stores and manages collateral funds of all positions and counts debts
Only Vault can manage supply of GCD token
Vault will not be changed/upgraded after initial deployment for the current stablecoin version
weth
address payable wethDENOMINATOR_1E5
uint256 DENOMINATOR_1E5DENOMINATOR_1E2
uint256 DENOMINATOR_1E2gcd
address gcdcollaterals
mapping(address => mapping(address => uint256)) collateralsdebts
mapping(address => mapping(address => uint256)) debtsliquidationBlock
mapping(address => mapping(address => uint256)) liquidationBlockliquidationPrice
mapping(address => mapping(address => uint256)) liquidationPricetokenDebts
mapping(address => uint256) tokenDebtsstabilityFee
mapping(address => mapping(address => uint256)) stabilityFeeliquidationFee
mapping(address => mapping(address => uint256)) liquidationFeeoracleType
mapping(address => mapping(address => uint256)) oracleTypelastUpdate
mapping(address => mapping(address => uint256)) lastUpdatenotLiquidating
modifier notLiquidating(address asset, address user)initialize
function initialize(address _parameters, address _gcd, address payable _weth) public_parameters
address
The address of the system parameters
_gcd
address
GCD token address
_weth
address payable
_authorizeUpgrade
function _authorizeUpgrade(address) internalRestricted upgrades function
receive
receive() external payableupdate
function update(address asset, address user) publicUpdates parameters of the position to the current ones
asset
address
The address of the main collateral token
user
address
The owner of a position
spawn
function spawn(address asset, address user, uint256 _oracleType) externalCreates new position for user
asset
address
The address of the main collateral token
user
address
The address of a position's owner
_oracleType
uint256
The type of an oracle
destroy
function destroy(address asset, address user) publicClears unused storage variables
asset
address
The address of the main collateral token
user
address
The address of a position's owner
depositMain
function depositMain(address asset, address user, uint256 amount) externalTokens must be pre-approved
Adds main collateral to a position
asset
address
The address of the main collateral token
user
address
The address of a position's owner
amount
uint256
The amount of tokens to deposit
depositEth
function depositEth(address user) external payableConverts ETH to WETH and adds main collateral to a position
user
address
The address of a position's owner
withdrawMain
function withdrawMain(address asset, address user, uint256 amount) externalWithdraws main collateral from a position
asset
address
The address of the main collateral token
user
address
The address of a position's owner
amount
uint256
The amount of tokens to withdraw
withdrawEth
function withdrawEth(address payable user, uint256 amount) externalWithdraws WETH collateral from a position converting WETH to ETH
user
address payable
The address of a position's owner
amount
uint256
The amount of ETH to withdraw
borrow
function borrow(address asset, address user, uint256 amount) external returns (uint256)Increases position's debt and mints GCD token
asset
address
The address of the main collateral token
user
address
The address of a position's owner
amount
uint256
The amount of GCD to borrow
repay
function repay(address asset, address user, uint256 amount) external returns (uint256)Decreases position's debt and burns GCD token
asset
address
The address of the main collateral token
user
address
The address of a position's owner
amount
uint256
The amount of GCD to repay
[0]
uint256
updated debt of a position
chargeFee
function chargeFee(address asset, address user, uint256 amount) externalTransfers fee to foundation
asset
address
The address of the fee asset
user
address
The address to transfer funds from
amount
uint256
The amount of asset to transfer
triggerLiquidation
function triggerLiquidation(address asset, address positionOwner, uint256 initialPrice) externalDeletes position and transfers collateral to liquidation system
asset
address
The address of the main collateral token
positionOwner
address
The address of a position's owner
initialPrice
uint256
The starting price of collateral in GCD
liquidate
function liquidate(address asset, address positionOwner, uint256 mainAssetToLiquidator, uint256 mainAssetToPositionOwner, uint256 repayment, uint256 penalty, address liquidator) externalInternal liquidation process
asset
address
The address of the main collateral token
positionOwner
address
The address of a position's owner
mainAssetToLiquidator
uint256
The amount of main asset to send to a liquidator
mainAssetToPositionOwner
uint256
The amount of main asset to send to a position owner
repayment
uint256
The repayment in GCD
penalty
uint256
The liquidation penalty in GCD
liquidator
address
The address of a liquidator
changeOracleType
function changeOracleType(address asset, address user, uint256 newOracleType) externalOnly manager can call this function
Changes broken oracle type to the correct one
asset
address
The address of the main collateral token
user
address
The address of a position's owner
newOracleType
uint256
The new type of an oracle
getTotalDebt
function getTotalDebt(address asset, address user) public view returns (uint256)Calculates the total amount of position's debt based on elapsed time
asset
address
The address of the main collateral token
user
address
The address of a position's owner
[0]
uint256
user debt of a position plus accumulated fee
calculateFee
function calculateFee(address asset, address user, uint256 amount) public view returns (uint256)Calculates the amount of fee based on elapsed time and repayment amount
asset
address
The address of the main collateral token
user
address
The address of a position's owner
amount
uint256
The repayment amount
[0]
uint256
fee amount
VaultParameters
stabilityFee
mapping(address => uint256) stabilityFeeliquidationFee
mapping(address => uint256) liquidationFeetokenDebtLimit
mapping(address => uint256) tokenDebtLimitcanModifyVault
mapping(address => bool) canModifyVaultisManager
mapping(address => bool) isManagerisOracleTypeEnabled
mapping(uint256 => mapping(address => bool)) isOracleTypeEnabledvault
address payable vaultfoundation
address foundationinitialize
function initialize(address payable _vault, address _foundation) publicThe address for an Ethereum contract is deterministically computed from the address of its creator (sender) and how many transactions the creator has sent (nonce). The sender and nonce are RLP encoded and then hashed with Keccak-256. Therefore, the Vault address can be pre-computed and passed as an argument before deployment.
_authorizeUpgrade
function _authorizeUpgrade(address) internalRestricted upgrades function
setManager
function setManager(address who, bool permit) externalOnly manager is able to call this function
Grants and revokes manager's status of any address
who
address
The target address
permit
bool
The permission flag
setFoundation
function setFoundation(address newFoundation) externalOnly manager is able to call this function
Sets the foundation address
newFoundation
address
The new foundation address
setCollateral
function setCollateral(address asset, uint256 stabilityFeeValue, uint256 liquidationFeeValue, uint256 gcdLimit, uint256[] oracles) externalOnly manager is able to call this function
Sets ability to use token as the main collateral
asset
address
The address of the main collateral token
stabilityFeeValue
uint256
The percentage of the year stability fee (3 decimals)
liquidationFeeValue
uint256
The liquidation fee percentage (0 decimals)
gcdLimit
uint256
The GCD token issue limit
oracles
uint256[]
The enables oracle types
setVaultAccess
function setVaultAccess(address who, bool permit) externalOnly manager is able to call this function
Sets a permission for an address to modify the Vault
who
address
The target address
permit
bool
The permission flag
setStabilityFee
function setStabilityFee(address asset, uint256 newValue) publicOnly manager is able to call this function
Sets the percentage of the year stability fee for a particular collateral
asset
address
The address of the main collateral token
newValue
uint256
The stability fee percentage (3 decimals)
setLiquidationFee
function setLiquidationFee(address asset, uint256 newValue) publicOnly manager is able to call this function
Sets the percentage of the liquidation fee for a particular collateral
asset
address
The address of the main collateral token
newValue
uint256
The liquidation fee percentage (0 decimals)
setOracleType
function setOracleType(uint256 _type, address asset, bool enabled) publicOnly manager is able to call this function
Enables/disables oracle types
_type
uint256
The type of the oracle
asset
address
The address of the main collateral token
enabled
bool
The control flag
setTokenDebtLimit
function setTokenDebtLimit(address asset, uint256 limit) publicOnly manager is able to call this function
Sets GCD limit for a specific collateral
asset
address
The address of the main collateral token
limit
uint256
The limit number
Last updated